@darajs/components 1.16.4 → 1.16.6-alpha.1

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 (64) hide show
  1. package/dist/dara_components-1.16.6a1-py3-none-any.whl +0 -0
  2. package/dist/smart/code-editor.d.ts.map +1 -1
  3. package/dist/smart/code-editor.js +27 -2
  4. package/dist/smart/code-editor.js.map +1 -1
  5. package/dist/smart/index.d.ts +1 -0
  6. package/dist/smart/index.d.ts.map +1 -1
  7. package/dist/smart/index.js +1 -0
  8. package/dist/smart/index.js.map +1 -1
  9. package/dist/smart/ui-code-editor/code-editor.d.ts +119 -0
  10. package/dist/smart/ui-code-editor/code-editor.d.ts.map +1 -0
  11. package/dist/smart/ui-code-editor/code-editor.js +358 -0
  12. package/dist/smart/ui-code-editor/code-editor.js.map +1 -0
  13. package/dist/smart/ui-code-editor/codemirror-context.d.ts +18 -0
  14. package/dist/smart/ui-code-editor/codemirror-context.d.ts.map +1 -0
  15. package/dist/smart/ui-code-editor/codemirror-context.js +10 -0
  16. package/dist/smart/ui-code-editor/codemirror-context.js.map +1 -0
  17. package/dist/smart/ui-code-editor/extensions/argument-hints.d.ts +21 -0
  18. package/dist/smart/ui-code-editor/extensions/argument-hints.d.ts.map +1 -0
  19. package/dist/smart/ui-code-editor/extensions/argument-hints.js +250 -0
  20. package/dist/smart/ui-code-editor/extensions/argument-hints.js.map +1 -0
  21. package/dist/smart/ui-code-editor/extensions/code-folding.d.ts +3 -0
  22. package/dist/smart/ui-code-editor/extensions/code-folding.d.ts.map +1 -0
  23. package/dist/smart/ui-code-editor/extensions/code-folding.js +69 -0
  24. package/dist/smart/ui-code-editor/extensions/code-folding.js.map +1 -0
  25. package/dist/smart/ui-code-editor/extensions/json.d.ts +16 -0
  26. package/dist/smart/ui-code-editor/extensions/json.d.ts.map +1 -0
  27. package/dist/smart/ui-code-editor/extensions/json.js +29 -0
  28. package/dist/smart/ui-code-editor/extensions/json.js.map +1 -0
  29. package/dist/smart/ui-code-editor/extensions/lsp-utils.d.ts +39 -0
  30. package/dist/smart/ui-code-editor/extensions/lsp-utils.d.ts.map +1 -0
  31. package/dist/smart/ui-code-editor/extensions/lsp-utils.js +299 -0
  32. package/dist/smart/ui-code-editor/extensions/lsp-utils.js.map +1 -0
  33. package/dist/smart/ui-code-editor/extensions/markdown.d.ts +13 -0
  34. package/dist/smart/ui-code-editor/extensions/markdown.d.ts.map +1 -0
  35. package/dist/smart/ui-code-editor/extensions/markdown.js +19 -0
  36. package/dist/smart/ui-code-editor/extensions/markdown.js.map +1 -0
  37. package/dist/smart/ui-code-editor/extensions/python.d.ts +15 -0
  38. package/dist/smart/ui-code-editor/extensions/python.d.ts.map +1 -0
  39. package/dist/smart/ui-code-editor/extensions/python.js +21 -0
  40. package/dist/smart/ui-code-editor/extensions/python.js.map +1 -0
  41. package/dist/smart/ui-code-editor/extensions/shared.d.ts +48 -0
  42. package/dist/smart/ui-code-editor/extensions/shared.d.ts.map +1 -0
  43. package/dist/smart/ui-code-editor/extensions/shared.js +166 -0
  44. package/dist/smart/ui-code-editor/extensions/shared.js.map +1 -0
  45. package/dist/smart/ui-code-editor/extensions/sql.d.ts +14 -0
  46. package/dist/smart/ui-code-editor/extensions/sql.d.ts.map +1 -0
  47. package/dist/smart/ui-code-editor/extensions/sql.js +23 -0
  48. package/dist/smart/ui-code-editor/extensions/sql.js.map +1 -0
  49. package/dist/smart/ui-code-editor/index.d.ts +25 -0
  50. package/dist/smart/ui-code-editor/index.d.ts.map +1 -0
  51. package/dist/smart/ui-code-editor/index.js +25 -0
  52. package/dist/smart/ui-code-editor/index.js.map +1 -0
  53. package/dist/smart/ui-code-editor/types.d.ts +65 -0
  54. package/dist/smart/ui-code-editor/types.d.ts.map +1 -0
  55. package/dist/smart/ui-code-editor/types.js +5 -0
  56. package/dist/smart/ui-code-editor/types.js.map +1 -0
  57. package/dist/smart/ui-code-editor/utils.d.ts +16 -0
  58. package/dist/smart/ui-code-editor/utils.d.ts.map +1 -0
  59. package/dist/smart/ui-code-editor/utils.js +33 -0
  60. package/dist/smart/ui-code-editor/utils.js.map +1 -0
  61. package/dist/umd/dara.components.umd.js +35044 -31126
  62. package/dist/umd/style.css +749 -0
  63. package/package.json +27 -14
  64. package/dist/dara_components-1.16.4-py3-none-any.whl +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor.d.ts","sourceRoot":"","sources":["../../js/smart/code-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAA8C,MAAM,cAAc,CAAC;AAG1G,UAAU,eAAgB,SAAQ,oBAAoB;IAClD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACrD;AAID;;;GAGG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAavD;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"code-editor.d.ts","sourceRoot":"","sources":["../../js/smart/code-editor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAA8C,MAAM,cAAc,CAAC;AAQ1G,UAAU,eAAgB,SAAQ,oBAAoB;IAClD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACrD;AAID;;;GAGG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAsCvD;AAED,eAAe,UAAU,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
2
3
  import { injectCss, useComponentStyles, useVariable } from '@darajs/core';
3
- import { CodeEditor as UICodeEditor } from '@darajs/ui-code-editor';
4
+ import { CodeEditor as UICodeEditor } from './ui-code-editor';
5
+ import { getJSONExtensions } from './ui-code-editor/extensions/json';
6
+ import { getMarkdownExtensions } from './ui-code-editor/extensions/markdown';
7
+ import { getPythonExtensions } from './ui-code-editor/extensions/python';
8
+ import { getSQLExtensions } from './ui-code-editor/extensions/sql';
4
9
  const StyledCodeEditor = injectCss(UICodeEditor);
5
10
  /**
6
11
  * A component that creates a CodeEditor. The script is stored in a variable and is updated
@@ -9,7 +14,27 @@ const StyledCodeEditor = injectCss(UICodeEditor);
9
14
  function CodeEditor(props) {
10
15
  const [style, css] = useComponentStyles(props);
11
16
  const [script, setScript] = useVariable(props.script);
12
- return (_jsx(StyledCodeEditor, { "$rawCss": css, initialScript: script, onChange: setScript, style: style, language: props.language }));
17
+ const onChange = React.useCallback((update) => {
18
+ if (update.docChanged) {
19
+ setScript(update.state.doc.toString());
20
+ }
21
+ }, [setScript]);
22
+ const extensions = React.useMemo(() => {
23
+ if (props.language === 'json') {
24
+ return getJSONExtensions();
25
+ }
26
+ if (props.language === 'python') {
27
+ return getPythonExtensions();
28
+ }
29
+ if (props.language === 'markdown') {
30
+ return getMarkdownExtensions();
31
+ }
32
+ if (props.language === 'sql') {
33
+ return getSQLExtensions();
34
+ }
35
+ return [];
36
+ }, [props.language]);
37
+ return (_jsx(StyledCodeEditor, { "$rawCss": css, initialValue: script, onChange: onChange, style: style, extensions: extensions }));
13
38
  }
14
39
  export default CodeEditor;
15
40
  //# sourceMappingURL=code-editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor.js","sourceRoot":"","sources":["../../js/smart/code-editor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkC,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOpE,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAsB;IACtC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CACH,KAAC,gBAAgB,eACJ,GAAG,EACZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAC1B,CACL,CAAC;AACN,CAAC;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"code-editor.js","sourceRoot":"","sources":["../../js/smart/code-editor.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAkC,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1G,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOnE,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAsB;IACtC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,MAAkB,EAAE,EAAE;QACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC,EACD,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,iBAAiB,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,mBAAmB,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,qBAAqB,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,gBAAgB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErB,OAAO,CACH,KAAC,gBAAgB,eACJ,GAAG,EACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,GACxB,CACL,CAAC;AACN,CAAC;AAED,eAAe,UAAU,CAAC"}
@@ -3,5 +3,6 @@ export { default as FilterStatusButton } from './filter-status-button/filter-sta
3
3
  export { default as HierarchySelector } from './hierarchy-selector/hierarchy-selector';
4
4
  export { default as HierarchyViewer } from './hierarchy-viewer/hierarchy-viewer';
5
5
  export { default as CodeEditor } from './code-editor';
6
+ export { CodeEditor as UiCodeEditor, argumentHints, closeArgumentsHintsTooltip, getDefaultExtensions, goToDefinitionExtension, getJSONExtensions, getMarkdownExtensions, getPythonExtensions, getSQLExtensions, } from './ui-code-editor';
6
7
  export { default as Chat } from './chat/chat';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../js/smart/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../js/smart/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACH,UAAU,IAAI,YAAY,EAC1B,aAAa,EACb,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC"}
@@ -4,5 +4,6 @@ export { default as FilterStatusButton } from './filter-status-button/filter-sta
4
4
  export { default as HierarchySelector } from './hierarchy-selector/hierarchy-selector';
5
5
  export { default as HierarchyViewer } from './hierarchy-viewer/hierarchy-viewer';
6
6
  export { default as CodeEditor } from './code-editor';
7
+ export { CodeEditor as UiCodeEditor, argumentHints, closeArgumentsHintsTooltip, getDefaultExtensions, goToDefinitionExtension, getJSONExtensions, getMarkdownExtensions, getPythonExtensions, getSQLExtensions, } from './ui-code-editor';
7
8
  export { default as Chat } from './chat/chat';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../js/smart/index.tsx"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../js/smart/index.tsx"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACH,UAAU,IAAI,YAAY,EAC1B,aAAa,EACb,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,119 @@
1
+ import type { Extension } from '@codemirror/state';
2
+ import type { KeyBinding, ViewUpdate } from '@codemirror/view';
3
+ import { EditorView } from '@codemirror/view';
4
+ import '@vscode/codicons/dist/codicon.css';
5
+ import type { FunctionComponent } from 'react';
6
+ import React from 'react';
7
+ import type { Range } from 'vscode-languageserver-types';
8
+ import './index.css';
9
+ import type { LSPDefinition, LspHoverResponse } from './types';
10
+ export interface ConfigurableHotkeys {
11
+ hotkeyBindings?: {
12
+ [key: string]: (e: KeyboardEvent, view: EditorView) => void;
13
+ };
14
+ focusMiddlewares?: (() => boolean)[];
15
+ allowInputs?: boolean;
16
+ }
17
+ export interface TooltipRenderProps {
18
+ lineNumber: number;
19
+ characterPos: number;
20
+ inspectedSubstring: string;
21
+ source?: string;
22
+ contents: LspHoverResponse['contents'];
23
+ }
24
+ type FocusState = 'soft' | 'hard';
25
+ export interface CodeEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur'> {
26
+ /**
27
+ * The URI of the file being edited.
28
+ * Should be in the format `file:///path/to/file#cellId`, cellId being optional
29
+ */
30
+ uri?: string;
31
+ /**
32
+ * The class name to apply to the editor wrapper
33
+ */
34
+ className?: string;
35
+ /**
36
+ * The extensions to apply to the editor
37
+ */
38
+ extensions?: Extension;
39
+ /**
40
+ * Styles to apply directly to the editor rather than the wrapper around it
41
+ */
42
+ editorStyle?: React.CSSProperties;
43
+ /**
44
+ * The initial text value of the editor
45
+ */
46
+ initialValue?: string;
47
+ /**
48
+ * Whether the editor should be disabled
49
+ */
50
+ disabled?: boolean;
51
+ /**
52
+ * Whether to disable the LSP features
53
+ */
54
+ enableLsp?: boolean;
55
+ /**
56
+ * Whether the editor should be read-only
57
+ */
58
+ readOnly?: boolean;
59
+ /**
60
+ * The type of focus on the editor, hard is editable mode, soft just browseable
61
+ */
62
+ focusType?: FocusState;
63
+ /**
64
+ * The style to apply to the editor wrapper
65
+ */
66
+ style?: React.CSSProperties;
67
+ /**
68
+ * Whether the editor should be focused on load
69
+ */
70
+ focusOnLoad?: boolean;
71
+ /**
72
+ * The onFocus handler
73
+ */
74
+ onFocus?: () => void;
75
+ /**
76
+ * The onBlur handler
77
+ */
78
+ onBlur?: (ev: FocusEvent, view: EditorView) => void;
79
+ /**
80
+ * The onChange handler
81
+ */
82
+ onChange?: (update: ViewUpdate) => void;
83
+ /**
84
+ * Callback to handle go to definition
85
+ */
86
+ onGoToDefinition?: (defs: LSPDefinition[]) => void;
87
+ /**
88
+ * The initial position in the document to select
89
+ */
90
+ initialPosition?: Range;
91
+ /**
92
+ * The configurable hotkeys to apply to the editor wrapper
93
+ */
94
+ configurableHotkeys?: ConfigurableHotkeys;
95
+ /**
96
+ * The data-testid to apply to the editor wrapper
97
+ */
98
+ dataTestId?: string;
99
+ /**
100
+ * The keymap precedence to apply to the editor
101
+ */
102
+ keymapPrecedence?: KeyBinding[];
103
+ /**
104
+ * Render props for the tooltip
105
+ */
106
+ tooltipRenderer?: (props: TooltipRenderProps) => React.ReactNode;
107
+ /**
108
+ * Whether the editor should be updated if initial value changes
109
+ */
110
+ shouldSyncInitialValue?: boolean;
111
+ }
112
+ /**
113
+ * Base CodeEditor component.
114
+ * Should not depend on studio-specific contexts or hooks as it will eventually be moved into Dara.
115
+ * Studio-specific functionality should be implemented as extensions or configured via props, injected in StudioEditor.
116
+ */
117
+ declare const CodeEditor: FunctionComponent<CodeEditorProps>;
118
+ export default CodeEditor;
119
+ //# sourceMappingURL=code-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor.d.ts","sourceRoot":"","sources":["../../../js/smart/ui-code-editor/code-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,358 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { autocompletion } from '@codemirror/autocomplete';
23
+ import { EditorState, Prec } from '@codemirror/state';
24
+ import { EditorView, hoverTooltip, keymap, tooltips } from '@codemirror/view';
25
+ import '@vscode/codicons/dist/codicon.css';
26
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
27
+ import ReactDOM from 'react-dom';
28
+ import { WebSocketCtx } from '@darajs/core';
29
+ import styled, { useTheme } from '@darajs/styled-components';
30
+ import { useFocusTinykeys, useLatestCallback, useLatestRef, useOnClickOutside } from '@darajs/ui-utils';
31
+ import { useCodeMirrorContext } from './codemirror-context';
32
+ import { argumentHints, closeArgumentsHintsTooltip } from './extensions/argument-hints';
33
+ import { getLspCompletion, getLspDefinition, getLspInspection } from './extensions/lsp-utils';
34
+ import { getDefaultExtensions, goToDefinitionExtension } from './extensions/shared';
35
+ import './index.css';
36
+ import { EXTERNAL_UPDATE } from './utils';
37
+ const TooltipWrapper = styled.div `
38
+ position: relative;
39
+
40
+ overflow: hidden;
41
+ display: flex;
42
+ flex-direction: column;
43
+
44
+ max-width: 550px;
45
+ max-height: 300px;
46
+ margin: -1px;
47
+
48
+ color: ${(props) => props.theme.colors.text};
49
+ word-break: break-word;
50
+
51
+ background-color: ${({ theme }) => theme.colors.background} !important;
52
+ border-radius: 0.25rem;
53
+ box-shadow:
54
+ rgb(0 0 0 / 10%) 0 1px 3px 0,
55
+ rgb(0 0 0 / 6%) 0 1px 2px 0;
56
+
57
+ pre {
58
+ margin: 0;
59
+ padding: 0.75rem 1rem;
60
+ font-size: 0.9rem;
61
+ }
62
+ `;
63
+ function Tooltip({ content }) {
64
+ return ReactDOM.createPortal(content, document.body);
65
+ }
66
+ // eslint-disable-next-line no-empty-function
67
+ const noop = () => { };
68
+ /**
69
+ * Base CodeEditor component.
70
+ * Should not depend on studio-specific contexts or hooks as it will eventually be moved into Dara.
71
+ * Studio-specific functionality should be implemented as extensions or configured via props, injected in StudioEditor.
72
+ */
73
+ const CodeEditor = (_a) => {
74
+ var _b;
75
+ var { className, uri, extensions, editorStyle, enableLsp, initialValue, focusType, disabled, readOnly = false, style, focusOnLoad = false, onFocus, onBlur, onChange, initialPosition, configurableHotkeys, dataTestId, keymapPrecedence, tooltipRenderer, onGoToDefinition, shouldSyncInitialValue = true } = _a, rest = __rest(_a, ["className", "uri", "extensions", "editorStyle", "enableLsp", "initialValue", "focusType", "disabled", "readOnly", "style", "focusOnLoad", "onFocus", "onBlur", "onChange", "initialPosition", "configurableHotkeys", "dataTestId", "keymapPrecedence", "tooltipRenderer", "onGoToDefinition", "shouldSyncInitialValue"]);
76
+ if (enableLsp && !uri) {
77
+ throw new Error('Must provide URI when LSP is enabled');
78
+ }
79
+ const { client } = React.useContext(WebSocketCtx);
80
+ const ref = useRef(null);
81
+ const viewRef = useRef(null);
82
+ const onBlurStable = useLatestRef(onBlur);
83
+ const theme = useTheme();
84
+ const [tooltipContent, setTooltipContent] = useState();
85
+ const tooltipRef = useRef(null);
86
+ const [signatureTooltipContent, setSignatureTooltipContent] = useState();
87
+ const signatureTooltipRef = useRef(null);
88
+ // We use refs to prevent the editor from re-initializing when the script changes, updates to the editor on script
89
+ // changes are handled in a dedicated useEffect More info: https://stackoverflow.com/a/70616581
90
+ const initialThemeType = useLatestRef(theme.themeType);
91
+ const initialValueRef = useLatestRef(initialValue !== null && initialValue !== void 0 ? initialValue : '');
92
+ const initialIsFocused = useLatestRef(focusOnLoad);
93
+ const focusTypeRef = useLatestRef(focusType);
94
+ const onChangeRef = useLatestRef((update) => {
95
+ initialValueRef.current = update.state.doc.toString();
96
+ onChange === null || onChange === void 0 ? void 0 : onChange(update);
97
+ });
98
+ const onFocusRef = useLatestRef(onFocus);
99
+ const [prevIsFocused, setPrevIsFocused] = useState(focusOnLoad);
100
+ // remap the hotkeys to pass it the viewRef
101
+ const hotkeys = useMemo(() => {
102
+ return (configurableHotkeys === null || configurableHotkeys === void 0 ? void 0 : configurableHotkeys.hotkeyBindings) ?
103
+ Object.keys(configurableHotkeys.hotkeyBindings).reduce((acc, key) => {
104
+ acc[key] = (e) => {
105
+ var _a, _b;
106
+ (_b = (_a = configurableHotkeys.hotkeyBindings) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.call(_a, e, viewRef.current);
107
+ };
108
+ return acc;
109
+ }, {})
110
+ : {};
111
+ }, [configurableHotkeys === null || configurableHotkeys === void 0 ? void 0 : configurableHotkeys.hotkeyBindings, viewRef]);
112
+ // These shortcuts are specifically for when the code editor is in focus
113
+ useFocusTinykeys(hotkeys, ref, {
114
+ middlewares: configurableHotkeys === null || configurableHotkeys === void 0 ? void 0 : configurableHotkeys.focusMiddlewares,
115
+ allowInputs: configurableHotkeys === null || configurableHotkeys === void 0 ? void 0 : configurableHotkeys.allowInputs,
116
+ });
117
+ if (focusOnLoad !== prevIsFocused) {
118
+ if (focusOnLoad) {
119
+ (_b = viewRef.current) === null || _b === void 0 ? void 0 : _b.focus();
120
+ }
121
+ if (focusType === 'soft' && onBlur) {
122
+ onBlur(new FocusEvent('blur'), viewRef.current);
123
+ }
124
+ setPrevIsFocused(focusOnLoad);
125
+ }
126
+ const { setEditorView } = useCodeMirrorContext();
127
+ const enableGoToDef = React.useMemo(() => onGoToDefinition !== undefined, [onGoToDefinition]);
128
+ const goToDef = useLatestCallback(onGoToDefinition !== null && onGoToDefinition !== void 0 ? onGoToDefinition : noop);
129
+ useOnClickOutside(ref.current, () => {
130
+ closeArgumentsHintsTooltip(viewRef.current);
131
+ });
132
+ useEffect(() => {
133
+ var _a;
134
+ // client is required for LSP features
135
+ if (!ref.current || (!client && enableLsp)) {
136
+ return;
137
+ }
138
+ const signatureHelp = argumentHints(client, uri, signatureTooltipRef, setSignatureTooltipContent);
139
+ const startState = EditorState.create({
140
+ doc: initialValueRef.current,
141
+ selection: {
142
+ anchor: initialValueRef.current.length,
143
+ },
144
+ extensions: [
145
+ extensions !== null && extensions !== void 0 ? extensions : [],
146
+ ...getDefaultExtensions(initialThemeType.current),
147
+ EditorView.clickAddsSelectionRange.of((evt) => evt.altKey && !evt.ctrlKey && !evt.metaKey),
148
+ EditorView.editable.of(!disabled),
149
+ EditorState.readOnly.of(readOnly),
150
+ EditorView.updateListener.of((update) => {
151
+ onChangeRef.current(update);
152
+ if (update.focusChanged && update.view.hasFocus && onFocusRef.current) {
153
+ onFocusRef.current();
154
+ }
155
+ }),
156
+ // This block of extensions is only applied if LSP is enabled
157
+ enableLsp ?
158
+ [
159
+ // signature help
160
+ signatureHelp,
161
+ // completion
162
+ autocompletion({
163
+ override: [(ctx) => getLspCompletion(client, ctx, uri)],
164
+ // use original sorting order from the LSP
165
+ compareCompletions: () => 1,
166
+ // reactivate completion when completing paths
167
+ activateOnCompletion: (completion) => completion.type === 'file' &&
168
+ typeof completion.apply === 'string' &&
169
+ completion.apply.endsWith('/'),
170
+ }),
171
+ // go-to-definition
172
+ enableGoToDef ?
173
+ goToDefinitionExtension((ch, line) => __awaiter(void 0, void 0, void 0, function* () {
174
+ const res = yield getLspDefinition(client, uri, line, ch);
175
+ if (res) {
176
+ goToDef(res.definitions);
177
+ }
178
+ }))
179
+ : [],
180
+ tooltips({
181
+ parent: document.body,
182
+ }),
183
+ // inspect
184
+ hoverTooltip((view, pos) => __awaiter(void 0, void 0, void 0, function* () {
185
+ // TODO: when this is moved to base Dara it should have a default implementation
186
+ if (!tooltipRenderer) {
187
+ return null;
188
+ }
189
+ const wordRange = view.state.wordAt(pos);
190
+ if (!wordRange) {
191
+ return null;
192
+ }
193
+ const inspectedSubstring = view.state.doc.sliceString(wordRange.from, wordRange.to);
194
+ const linePosInfo = view.state.doc.lineAt(pos);
195
+ const ch = pos - linePosInfo.from;
196
+ const line = linePosInfo.number - 1;
197
+ const inspection = yield getLspInspection(client, uri, line, ch);
198
+ if (!inspection) {
199
+ return null;
200
+ }
201
+ return {
202
+ above: true,
203
+ create: () => {
204
+ const dom = tooltipRef.current;
205
+ setTooltipContent(tooltipRenderer({
206
+ characterPos: ch,
207
+ lineNumber: line,
208
+ inspectedSubstring,
209
+ contents: inspection.contents,
210
+ source: inspection.source,
211
+ }));
212
+ setSignatureTooltipContent(null);
213
+ return {
214
+ dom,
215
+ overlap: true,
216
+ destroy: () => {
217
+ setTooltipContent(null);
218
+ },
219
+ };
220
+ },
221
+ end: wordRange.to,
222
+ pos: wordRange.from,
223
+ };
224
+ })),
225
+ ]
226
+ : [],
227
+ keymap.of([
228
+ {
229
+ key: 'Escape',
230
+ run: () => {
231
+ if (!signatureHelp || !enableLsp) {
232
+ return false;
233
+ }
234
+ // if the tooltip is not currently showing, skip
235
+ const signatureHelpState = signatureHelp[0];
236
+ if (viewRef.current.state.field(signatureHelpState) === null) {
237
+ return false;
238
+ }
239
+ // tooltip is showing, close and return true to stop propagation
240
+ // so Escape doesn't trigger other events
241
+ closeArgumentsHintsTooltip(viewRef.current);
242
+ return true;
243
+ },
244
+ stopPropagation: true,
245
+ },
246
+ ]),
247
+ Prec.highest(keymap.of((_a = keymapPrecedence === null || keymapPrecedence === void 0 ? void 0 : keymapPrecedence.map((binding) => {
248
+ return Object.assign(Object.assign({}, binding), { run: () => { var _a, _b; return (_b = (_a = binding.run) === null || _a === void 0 ? void 0 : _a.call(binding, viewRef.current)) !== null && _b !== void 0 ? _b : false; } });
249
+ })) !== null && _a !== void 0 ? _a : [])),
250
+ EditorView.domEventHandlers({
251
+ blur: (ev, view) => {
252
+ var _a;
253
+ (_a = onBlurStable.current) === null || _a === void 0 ? void 0 : _a.call(onBlurStable, ev, view);
254
+ },
255
+ }),
256
+ ],
257
+ });
258
+ viewRef.current = new EditorView({
259
+ parent: ref.current,
260
+ state: startState,
261
+ });
262
+ if (initialIsFocused.current && focusTypeRef.current !== 'soft') {
263
+ viewRef.current.focus();
264
+ // focus on last character
265
+ viewRef.current.dispatch({
266
+ selection: {
267
+ anchor: viewRef.current.state.doc.length,
268
+ },
269
+ });
270
+ }
271
+ if (setEditorView) {
272
+ setEditorView(viewRef.current);
273
+ }
274
+ // If an initial position in the document is set then scroll to it and set the cursor
275
+ if (initialPosition) {
276
+ const view = viewRef.current;
277
+ // +1 due to lsp being zero indexed and code mirror being 1 indexed
278
+ const line = view.state.doc.line((initialPosition === null || initialPosition === void 0 ? void 0 : initialPosition.start.line) + 1);
279
+ const pos = line.from + (initialPosition === null || initialPosition === void 0 ? void 0 : initialPosition.start.character);
280
+ const endPos = line.from + (initialPosition === null || initialPosition === void 0 ? void 0 : initialPosition.end.character);
281
+ view.focus();
282
+ view.dispatch({
283
+ effects: EditorView.scrollIntoView(line.from, { y: 'start' }),
284
+ selection: {
285
+ anchor: pos,
286
+ head: endPos,
287
+ },
288
+ });
289
+ }
290
+ return () => {
291
+ var _a;
292
+ (_a = viewRef.current) === null || _a === void 0 ? void 0 : _a.destroy();
293
+ };
294
+ }, [
295
+ client,
296
+ initialPosition,
297
+ initialValueRef,
298
+ extensions,
299
+ keymapPrecedence,
300
+ initialIsFocused,
301
+ focusTypeRef,
302
+ setEditorView,
303
+ onFocusRef,
304
+ onChangeRef,
305
+ initialThemeType,
306
+ uri,
307
+ goToDef,
308
+ disabled,
309
+ readOnly,
310
+ tooltipRenderer,
311
+ enableLsp,
312
+ enableGoToDef,
313
+ onBlurStable,
314
+ ]);
315
+ // keep the editor in sync with the script variable in case it changes from the outside
316
+ React.useEffect(() => {
317
+ // https://github.com/causalens/decision-studio/pull/394
318
+ // First check if there is a difference, if there isn't then there's definitely nothing to do so don't bother
319
+ // with the next step at all.
320
+ if (shouldSyncInitialValue && viewRef.current && viewRef.current.state.doc.toString() !== initialValue) {
321
+ // Rather than forcing the update immediately we set it in a timeout that will get wiped on any other
322
+ // changes to initialValue coming through. If the content is still different after 100ms then we push the
323
+ // update through as we are now sure that the difference was intentional and not due to race condition.
324
+ const timeoutID = setTimeout(() => {
325
+ var _a;
326
+ if (viewRef.current.state.doc.toString() !== initialValue) {
327
+ viewRef.current.dispatch({
328
+ annotations: EXTERNAL_UPDATE.of(true),
329
+ changes: {
330
+ from: 0,
331
+ insert: initialValue,
332
+ to: viewRef.current.state.doc.length,
333
+ },
334
+ selection: { anchor: (_a = initialValue === null || initialValue === void 0 ? void 0 : initialValue.length) !== null && _a !== void 0 ? _a : 0 },
335
+ });
336
+ }
337
+ }, 100);
338
+ return () => clearTimeout(timeoutID);
339
+ }
340
+ // Just in case the editor gets recreated then make sure the initialContent ref is up to date
341
+ initialValueRef.current = initialValue !== null && initialValue !== void 0 ? initialValue : '';
342
+ }, [initialValue, initialValueRef, shouldSyncInitialValue]);
343
+ return (_jsxs("div", Object.assign({ className: className, style: style }, rest, { children: [_jsx(Tooltip, { content: _jsx("div", { children: _jsx(TooltipWrapper, { ref: tooltipRef, role: "tooltip", style: {
344
+ display: tooltipContent ? 'flex' : 'none',
345
+ }, children: tooltipContent }) }) }), _jsx(Tooltip, { content: _jsx("div", { children: _jsx(TooltipWrapper, { ref: signatureTooltipRef, role: "tooltip", style: {
346
+ display: signatureTooltipContent ? 'flex' : 'none',
347
+ }, children: signatureTooltipContent }) }) }), _jsx("div", { onBlur: () => {
348
+ if (enableLsp) {
349
+ closeArgumentsHintsTooltip(viewRef.current);
350
+ }
351
+ // if not using focus types and just a plain editor, call onBlur
352
+ if (focusType === undefined) {
353
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(new FocusEvent('blur'), viewRef.current);
354
+ }
355
+ }, "data-testid": dataTestId, ref: ref, style: editorStyle })] })));
356
+ };
357
+ export default CodeEditor;
358
+ //# sourceMappingURL=code-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor.js","sourceRoot":"","sources":["../../../js/smart/ui-code-editor/code-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EditorView } from '@codemirror/view';
2
+ import * as React from 'react';
3
+ interface CodeMirrorContextInterface {
4
+ /**
5
+ *
6
+ * The current editor view.
7
+ */
8
+ editorView: EditorView;
9
+ /**
10
+ *
11
+ * Set the editor view
12
+ */
13
+ setEditorView: (editorView: EditorView) => void;
14
+ }
15
+ export declare const CodeMirrorContext: React.Context<CodeMirrorContextInterface>;
16
+ export declare function useCodeMirrorContext(): CodeMirrorContextInterface;
17
+ export {};
18
+ //# sourceMappingURL=codemirror-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemirror-context.d.ts","sourceRoot":"","sources":["../../../js/smart/ui-code-editor/codemirror-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,0BAA0B;IAChC;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAID,eAAO,MAAM,iBAAiB,2CAG5B,CAAC;AAEH,wBAAgB,oBAAoB,IAAI,0BAA0B,CAEjE"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ const noop = () => { };
3
+ export const CodeMirrorContext = React.createContext({
4
+ editorView: null,
5
+ setEditorView: noop,
6
+ });
7
+ export function useCodeMirrorContext() {
8
+ return React.useContext(CodeMirrorContext);
9
+ }
10
+ //# sourceMappingURL=codemirror-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemirror-context.js","sourceRoot":"","sources":["../../../js/smart/ui-code-editor/codemirror-context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAA6B;IAC7E,UAAU,EAAE,IAA6B;IACzC,aAAa,EAAE,IAAI;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB;IAChC,OAAO,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC/C,CAAC"}