@kepler.gl/duckdb 3.1.0-alpha.6

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.
@@ -0,0 +1 @@
1
+ export * from './sql-panel';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _sqlPanel = require("./sql-panel");
7
+ Object.keys(_sqlPanel).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _sqlPanel[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _sqlPanel[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3FsUGFuZWwiLCJyZXF1aXJlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCAqIGZyb20gJy4vc3FsLXBhbmVsJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxJQUFBQSxTQUFBLEdBQUFDLE9BQUE7QUFBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFILFNBQUEsRUFBQUksT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUMsT0FBQSxJQUFBQSxPQUFBLENBQUFELEdBQUEsTUFBQUwsU0FBQSxDQUFBSyxHQUFBO0VBQUFILE1BQUEsQ0FBQUssY0FBQSxDQUFBRCxPQUFBLEVBQUFELEdBQUE7SUFBQUcsVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBVCxTQUFBLENBQUFLLEdBQUE7SUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { OnChange } from '@monaco-editor/react';
3
+ interface MonacoEditorProps {
4
+ code: string;
5
+ isReadOnly?: boolean;
6
+ onChange: OnChange;
7
+ onRunQuery: () => void;
8
+ tableSchema?: {
9
+ table_name: string;
10
+ column_name: string;
11
+ }[];
12
+ }
13
+ declare const MonacoEditor: React.FC<MonacoEditorProps>;
14
+ export default MonacoEditor;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _react2 = _interopRequireDefault(require("@monaco-editor/react"));
13
+ var monaco = _interopRequireWildcard(require("monaco-editor"));
14
+ var _lodash = _interopRequireDefault(require("lodash.uniq"));
15
+ var _lodash2 = _interopRequireDefault(require("lodash.uniqby"));
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
20
+ // Copyright contributors to the kepler.gl project
21
+ // import {tableSchema as DEFAULT_SCHEMA} from './table-schema';
22
+ var MONACO_OPTIONS = {
23
+ minimap: {
24
+ enabled: false
25
+ },
26
+ language: 'sql',
27
+ contextmenu: false,
28
+ renderLineHighlight: 'none',
29
+ scrollBeyondLastLine: false,
30
+ scrollbar: {
31
+ alwaysConsumeMouseWheel: false
32
+ },
33
+ overviewRulerLanes: 0,
34
+ automaticLayout: true,
35
+ acceptSuggestionOnEnter: 'on',
36
+ quickSuggestionsDelay: 400,
37
+ matchOnWordStartOnly: false,
38
+ tabCompletion: 'off',
39
+ lineNumbers: 'off'
40
+ };
41
+ function parseSqlAndFindTableNameAndAliases(sql) {
42
+ var regex = /\b(?:FROM|JOIN)\s+([^\s.]+(?:\.[^\s.]+)?)\s*(?:AS)?\s*([^\s,]+)?/gi;
43
+ var tables = [];
44
+ while (true) {
45
+ var match = regex.exec(sql);
46
+ if (!match) {
47
+ break;
48
+ }
49
+ var table_name = match[1];
50
+ if (!/\(/.test(table_name)) {
51
+ // exclude function calls
52
+ var alias = match[2];
53
+ if (alias && /on|where|inner|left|right|join/.test(alias)) {
54
+ alias = null;
55
+ }
56
+ tables.push({
57
+ table_name: table_name,
58
+ alias: alias || table_name
59
+ });
60
+ }
61
+ }
62
+ return tables;
63
+ }
64
+ var MonacoEditor = function MonacoEditor(_ref) {
65
+ var onRunQuery = _ref.onRunQuery,
66
+ onChange = _ref.onChange,
67
+ code = _ref.code,
68
+ tableSchema = _ref.tableSchema,
69
+ isReadOnly = _ref.isReadOnly;
70
+ // private editor?: monaco.editor.IStandaloneCodeEditor;
71
+ var schemaTableNames = (0, _react.useMemo)(function () {
72
+ return tableSchema ? (0, _lodash["default"])(tableSchema.map(function (d) {
73
+ return d.table_name;
74
+ })) : [];
75
+ }, [tableSchema]);
76
+ var schemaTableNamesSet = (0, _react.useMemo)(function () {
77
+ return new Set(schemaTableNames);
78
+ }, [schemaTableNames]);
79
+ var handleRunQueryRef = (0, _react.useRef)(onRunQuery);
80
+ handleRunQueryRef.current = onRunQuery;
81
+ var handleEditorDidMount = (0, _react.useCallback)(function (editor) {
82
+ // this.editor = editor;
83
+ editor.focus();
84
+ editor.addAction({
85
+ id: 'run-query',
86
+ label: 'Run Query',
87
+ keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, monaco.KeyMod.Shift | monaco.KeyCode.Enter],
88
+ contextMenuGroupId: 'custom',
89
+ contextMenuOrder: 0,
90
+ run: function run() {
91
+ return handleRunQueryRef.current();
92
+ }
93
+ });
94
+ monaco.languages.registerCompletionItemProvider('*', {
95
+ provideCompletionItems: function provideCompletionItems(model, position, context, cancelationToken) {
96
+ var _thisLine$trim$split$, _exec, _exec2;
97
+ var suggestions = [{
98
+ label: 'myCustomSnippet',
99
+ kind: monaco.languages.CompletionItemKind.Snippet,
100
+ insertText: 'This is a piece of custom code',
101
+ insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
102
+ documentation: 'This is a piece of custom code'
103
+ // TODO: range is missing
104
+ }];
105
+ var fullQueryText = model.getValue();
106
+ var tableNamesAndAliases = new Map(parseSqlAndFindTableNameAndAliases(fullQueryText).map(function (_ref2) {
107
+ var table_name = _ref2.table_name,
108
+ alias = _ref2.alias;
109
+ return [alias, table_name];
110
+ }));
111
+ var thisLine = model.getValueInRange({
112
+ startLineNumber: position.lineNumber,
113
+ startColumn: 1,
114
+ endLineNumber: position.lineNumber,
115
+ endColumn: position.column
116
+ });
117
+ var thisToken = ((_thisLine$trim$split$ = thisLine.trim().split(' ').slice(-1)) === null || _thisLine$trim$split$ === void 0 ? void 0 : _thisLine$trim$split$[0]) || '';
118
+ var lastTokenBeforeSpace = (_exec = /\s?(\w+)\s+\w+$/.exec(thisLine.trim())) === null || _exec === void 0 ? void 0 : _exec[1];
119
+ var lastTokenBeforeDot = (_exec2 = /(\w+)\.\w*$/.exec(thisToken)) === null || _exec2 === void 0 ? void 0 : _exec2[1];
120
+
121
+ // console.log(tableNamesAndAliases, thisToken, lastTokenBeforeSpace, lastTokenBeforeDot);
122
+
123
+ if (lastTokenBeforeSpace && /from|join|update|into/.test(lastTokenBeforeSpace)) {
124
+ suggestions.push.apply(suggestions, (0, _toConsumableArray2["default"])(schemaTableNames.map(function (table_name) {
125
+ return {
126
+ label: table_name,
127
+ kind: monaco.languages.CompletionItemKind.Field,
128
+ insertText: table_name
129
+ // TODO: range is missing
130
+ };
131
+ })));
132
+ }
133
+ if (lastTokenBeforeDot) {
134
+ var table_name = null;
135
+ if (schemaTableNamesSet.has(lastTokenBeforeDot)) {
136
+ table_name = lastTokenBeforeDot;
137
+ } else if (tableNamesAndAliases.get(lastTokenBeforeDot)) {
138
+ table_name = tableNamesAndAliases.get(lastTokenBeforeDot);
139
+ }
140
+ if (table_name && tableSchema) {
141
+ suggestions.push.apply(suggestions, (0, _toConsumableArray2["default"])(tableSchema.filter(function (d) {
142
+ return d.table_name === table_name;
143
+ }).map(function (_ref3) {
144
+ var table_name = _ref3.table_name,
145
+ column_name = _ref3.column_name;
146
+ return {
147
+ label: column_name,
148
+ kind: monaco.languages.CompletionItemKind.Field,
149
+ insertText: column_name
150
+ // TODO: range is missing
151
+ };
152
+ })));
153
+ }
154
+ }
155
+ return {
156
+ suggestions: (0, _lodash2["default"])(suggestions, function (s) {
157
+ return s.insertText;
158
+ })
159
+ };
160
+ }
161
+ });
162
+ }, [tableSchema]);
163
+ return /*#__PURE__*/_react["default"].createElement(_react2["default"], {
164
+ height: "100%",
165
+ theme: "vs-dark",
166
+ defaultLanguage: "sql",
167
+ defaultValue: code,
168
+ onChange: onChange,
169
+ onMount: handleEditorDidMount,
170
+ options: _objectSpread(_objectSpread({}, MONACO_OPTIONS), {}, {
171
+ readOnly: isReadOnly
172
+ })
173
+ });
174
+ };
175
+ var _default = exports["default"] = MonacoEditor;
176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3QyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm1vbmFjbyIsIl9sb2Rhc2giLCJfbG9kYXNoMiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIk1PTkFDT19PUFRJT05TIiwibWluaW1hcCIsImVuYWJsZWQiLCJsYW5ndWFnZSIsImNvbnRleHRtZW51IiwicmVuZGVyTGluZUhpZ2hsaWdodCIsInNjcm9sbEJleW9uZExhc3RMaW5lIiwic2Nyb2xsYmFyIiwiYWx3YXlzQ29uc3VtZU1vdXNlV2hlZWwiLCJvdmVydmlld1J1bGVyTGFuZXMiLCJhdXRvbWF0aWNMYXlvdXQiLCJhY2NlcHRTdWdnZXN0aW9uT25FbnRlciIsInF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsIm1hdGNoT25Xb3JkU3RhcnRPbmx5IiwidGFiQ29tcGxldGlvbiIsImxpbmVOdW1iZXJzIiwicGFyc2VTcWxBbmRGaW5kVGFibGVOYW1lQW5kQWxpYXNlcyIsInNxbCIsInJlZ2V4IiwidGFibGVzIiwibWF0Y2giLCJleGVjIiwidGFibGVfbmFtZSIsInRlc3QiLCJhbGlhcyIsIk1vbmFjb0VkaXRvciIsIl9yZWYiLCJvblJ1blF1ZXJ5Iiwib25DaGFuZ2UiLCJjb2RlIiwidGFibGVTY2hlbWEiLCJpc1JlYWRPbmx5Iiwic2NoZW1hVGFibGVOYW1lcyIsInVzZU1lbW8iLCJ1bmlxIiwibWFwIiwiZCIsInNjaGVtYVRhYmxlTmFtZXNTZXQiLCJTZXQiLCJoYW5kbGVSdW5RdWVyeVJlZiIsInVzZVJlZiIsImN1cnJlbnQiLCJoYW5kbGVFZGl0b3JEaWRNb3VudCIsInVzZUNhbGxiYWNrIiwiZWRpdG9yIiwiZm9jdXMiLCJhZGRBY3Rpb24iLCJpZCIsImxhYmVsIiwia2V5YmluZGluZ3MiLCJLZXlNb2QiLCJDdHJsQ21kIiwiS2V5Q29kZSIsIkVudGVyIiwiU2hpZnQiLCJjb250ZXh0TWVudUdyb3VwSWQiLCJjb250ZXh0TWVudU9yZGVyIiwicnVuIiwibGFuZ3VhZ2VzIiwicmVnaXN0ZXJDb21wbGV0aW9uSXRlbVByb3ZpZGVyIiwicHJvdmlkZUNvbXBsZXRpb25JdGVtcyIsIm1vZGVsIiwicG9zaXRpb24iLCJjb250ZXh0IiwiY2FuY2VsYXRpb25Ub2tlbiIsIl90aGlzTGluZSR0cmltJHNwbGl0JCIsIl9leGVjIiwiX2V4ZWMyIiwic3VnZ2VzdGlvbnMiLCJraW5kIiwiQ29tcGxldGlvbkl0ZW1LaW5kIiwiU25pcHBldCIsImluc2VydFRleHQiLCJpbnNlcnRUZXh0UnVsZXMiLCJDb21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlIiwiSW5zZXJ0QXNTbmlwcGV0IiwiZG9jdW1lbnRhdGlvbiIsImZ1bGxRdWVyeVRleHQiLCJnZXRWYWx1ZSIsInRhYmxlTmFtZXNBbmRBbGlhc2VzIiwiTWFwIiwiX3JlZjIiLCJ0aGlzTGluZSIsImdldFZhbHVlSW5SYW5nZSIsInN0YXJ0TGluZU51bWJlciIsImxpbmVOdW1iZXIiLCJzdGFydENvbHVtbiIsImVuZExpbmVOdW1iZXIiLCJlbmRDb2x1bW4iLCJjb2x1bW4iLCJ0aGlzVG9rZW4iLCJ0cmltIiwic3BsaXQiLCJzbGljZSIsImxhc3RUb2tlbkJlZm9yZVNwYWNlIiwibGFzdFRva2VuQmVmb3JlRG90IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIkZpZWxkIiwiX3JlZjMiLCJjb2x1bW5fbmFtZSIsInVuaXFCeSIsInMiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwidGhlbWUiLCJkZWZhdWx0TGFuZ3VhZ2UiLCJkZWZhdWx0VmFsdWUiLCJvbk1vdW50Iiwib3B0aW9ucyIsInJlYWRPbmx5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9uYWNvLWVkaXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEVkaXRvciwge09uQ2hhbmdlLCBPbk1vdW50fSBmcm9tICdAbW9uYWNvLWVkaXRvci9yZWFjdCc7XG5pbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG4vLyBpbXBvcnQge3RhYmxlU2NoZW1hIGFzIERFRkFVTFRfU0NIRU1BfSBmcm9tICcuL3RhYmxlLXNjaGVtYSc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuXG5jb25zdCBNT05BQ09fT1BUSU9OUzogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMgPSB7XG4gIG1pbmltYXA6IHtlbmFibGVkOiBmYWxzZX0sXG4gIGxhbmd1YWdlOiAnc3FsJyxcbiAgY29udGV4dG1lbnU6IGZhbHNlLFxuICByZW5kZXJMaW5lSGlnaGxpZ2h0OiAnbm9uZScsXG4gIHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcbiAgc2Nyb2xsYmFyOiB7YWx3YXlzQ29uc3VtZU1vdXNlV2hlZWw6IGZhbHNlfSxcbiAgb3ZlcnZpZXdSdWxlckxhbmVzOiAwLFxuICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXG4gIGFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyOiAnb24nLFxuICBxdWlja1N1Z2dlc3Rpb25zRGVsYXk6IDQwMCxcbiAgbWF0Y2hPbldvcmRTdGFydE9ubHk6IGZhbHNlLFxuICB0YWJDb21wbGV0aW9uOiAnb2ZmJyxcbiAgbGluZU51bWJlcnM6ICdvZmYnXG59O1xuXG5mdW5jdGlvbiBwYXJzZVNxbEFuZEZpbmRUYWJsZU5hbWVBbmRBbGlhc2VzKHNxbDogc3RyaW5nKSB7XG4gIGNvbnN0IHJlZ2V4ID0gL1xcYig/OkZST018Sk9JTilcXHMrKFteXFxzLl0rKD86XFwuW15cXHMuXSspPylcXHMqKD86QVMpP1xccyooW15cXHMsXSspPy9naTtcbiAgY29uc3QgdGFibGVzOiB7dGFibGVfbmFtZTogc3RyaW5nOyBhbGlhczogc3RyaW5nfVtdID0gW107XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMoc3FsKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgdGFibGVfbmFtZSA9IG1hdGNoWzFdO1xuICAgIGlmICghL1xcKC8udGVzdCh0YWJsZV9uYW1lKSkge1xuICAgICAgLy8gZXhjbHVkZSBmdW5jdGlvbiBjYWxsc1xuICAgICAgbGV0IGFsaWFzID0gbWF0Y2hbMl0gYXMgc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlmIChhbGlhcyAmJiAvb258d2hlcmV8aW5uZXJ8bGVmdHxyaWdodHxqb2luLy50ZXN0KGFsaWFzKSkge1xuICAgICAgICBhbGlhcyA9IG51bGw7XG4gICAgICB9XG4gICAgICB0YWJsZXMucHVzaCh7XG4gICAgICAgIHRhYmxlX25hbWUsXG4gICAgICAgIGFsaWFzOiBhbGlhcyB8fCB0YWJsZV9uYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGVzO1xufVxuXG5pbnRlcmZhY2UgTW9uYWNvRWRpdG9yUHJvcHMge1xuICBjb2RlOiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBvbkNoYW5nZTogT25DaGFuZ2U7XG4gIG9uUnVuUXVlcnk6ICgpID0+IHZvaWQ7XG4gIHRhYmxlU2NoZW1hPzoge3RhYmxlX25hbWU6IHN0cmluZzsgY29sdW1uX25hbWU6IHN0cmluZ31bXTtcbn1cblxuY29uc3QgTW9uYWNvRWRpdG9yOiBSZWFjdC5GQzxNb25hY29FZGl0b3JQcm9wcz4gPSAoe1xuICBvblJ1blF1ZXJ5LFxuICBvbkNoYW5nZSxcbiAgY29kZSxcbiAgdGFibGVTY2hlbWEsXG4gIGlzUmVhZE9ubHlcbn0pID0+IHtcbiAgLy8gcHJpdmF0ZSBlZGl0b3I/OiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcbiAgY29uc3Qgc2NoZW1hVGFibGVOYW1lcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHRhYmxlU2NoZW1hID8gdW5pcSh0YWJsZVNjaGVtYS5tYXAoZCA9PiBkLnRhYmxlX25hbWUpKSA6IFtdKSxcbiAgICBbdGFibGVTY2hlbWFdXG4gICk7XG4gIGNvbnN0IHNjaGVtYVRhYmxlTmFtZXNTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQoc2NoZW1hVGFibGVOYW1lcyksIFtzY2hlbWFUYWJsZU5hbWVzXSk7XG4gIGNvbnN0IGhhbmRsZVJ1blF1ZXJ5UmVmID0gdXNlUmVmKG9uUnVuUXVlcnkpO1xuICBoYW5kbGVSdW5RdWVyeVJlZi5jdXJyZW50ID0gb25SdW5RdWVyeTtcblxuICBjb25zdCBoYW5kbGVFZGl0b3JEaWRNb3VudDogT25Nb3VudCA9IHVzZUNhbGxiYWNrKFxuICAgIGVkaXRvciA9PiB7XG4gICAgICAvLyB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgIGVkaXRvci5mb2N1cygpO1xuXG4gICAgICBlZGl0b3IuYWRkQWN0aW9uKHtcbiAgICAgICAgaWQ6ICdydW4tcXVlcnknLFxuICAgICAgICBsYWJlbDogJ1J1biBRdWVyeScsXG4gICAgICAgIGtleWJpbmRpbmdzOiBbXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5DdHJsQ21kIHwgbW9uYWNvLktleUNvZGUuRW50ZXIsXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5TaGlmdCB8IG1vbmFjby5LZXlDb2RlLkVudGVyXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRleHRNZW51R3JvdXBJZDogJ2N1c3RvbScsXG4gICAgICAgIGNvbnRleHRNZW51T3JkZXI6IDAsXG4gICAgICAgIHJ1bjogKCkgPT4gaGFuZGxlUnVuUXVlcnlSZWYuY3VycmVudCgpXG4gICAgICB9KTtcblxuICAgICAgbW9uYWNvLmxhbmd1YWdlcy5yZWdpc3RlckNvbXBsZXRpb25JdGVtUHJvdmlkZXIoJyonLCB7XG4gICAgICAgIHByb3ZpZGVDb21wbGV0aW9uSXRlbXM6IChtb2RlbCwgcG9zaXRpb24sIGNvbnRleHQsIGNhbmNlbGF0aW9uVG9rZW4pID0+IHtcbiAgICAgICAgICBjb25zdCBzdWdnZXN0aW9uczogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ215Q3VzdG9tU25pcHBldCcsXG4gICAgICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLlNuaXBwZXQsXG4gICAgICAgICAgICAgIGluc2VydFRleHQ6ICdUaGlzIGlzIGEgcGllY2Ugb2YgY3VzdG9tIGNvZGUnLFxuICAgICAgICAgICAgICBpbnNlcnRUZXh0UnVsZXM6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXG4gICAgICAgICAgICAgIGRvY3VtZW50YXRpb246ICdUaGlzIGlzIGEgcGllY2Ugb2YgY3VzdG9tIGNvZGUnXG4gICAgICAgICAgICAgIC8vIFRPRE86IHJhbmdlIGlzIG1pc3NpbmdcbiAgICAgICAgICAgIH0gYXMgbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbVxuICAgICAgICAgIF07XG5cbiAgICAgICAgICBjb25zdCBmdWxsUXVlcnlUZXh0ID0gbW9kZWwuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZXNBbmRBbGlhc2VzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oXG4gICAgICAgICAgICBwYXJzZVNxbEFuZEZpbmRUYWJsZU5hbWVBbmRBbGlhc2VzKGZ1bGxRdWVyeVRleHQpLm1hcCgoe3RhYmxlX25hbWUsIGFsaWFzfSkgPT4gW1xuICAgICAgICAgICAgICBhbGlhcyxcbiAgICAgICAgICAgICAgdGFibGVfbmFtZVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGhpc0xpbmUgPSBtb2RlbC5nZXRWYWx1ZUluUmFuZ2Uoe1xuICAgICAgICAgICAgc3RhcnRMaW5lTnVtYmVyOiBwb3NpdGlvbi5saW5lTnVtYmVyLFxuICAgICAgICAgICAgc3RhcnRDb2x1bW46IDEsXG4gICAgICAgICAgICBlbmRMaW5lTnVtYmVyOiBwb3NpdGlvbi5saW5lTnVtYmVyLFxuICAgICAgICAgICAgZW5kQ29sdW1uOiBwb3NpdGlvbi5jb2x1bW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCB0aGlzVG9rZW4gPSB0aGlzTGluZS50cmltKCkuc3BsaXQoJyAnKS5zbGljZSgtMSk/LlswXSB8fCAnJztcblxuICAgICAgICAgIGNvbnN0IGxhc3RUb2tlbkJlZm9yZVNwYWNlID0gL1xccz8oXFx3KylcXHMrXFx3KyQvLmV4ZWModGhpc0xpbmUudHJpbSgpKT8uWzFdO1xuICAgICAgICAgIGNvbnN0IGxhc3RUb2tlbkJlZm9yZURvdCA9IC8oXFx3KylcXC5cXHcqJC8uZXhlYyh0aGlzVG9rZW4pPy5bMV07XG5cbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0YWJsZU5hbWVzQW5kQWxpYXNlcywgdGhpc1Rva2VuLCBsYXN0VG9rZW5CZWZvcmVTcGFjZSwgbGFzdFRva2VuQmVmb3JlRG90KTtcblxuICAgICAgICAgIGlmIChsYXN0VG9rZW5CZWZvcmVTcGFjZSAmJiAvZnJvbXxqb2lufHVwZGF0ZXxpbnRvLy50ZXN0KGxhc3RUb2tlbkJlZm9yZVNwYWNlKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgLi4uc2NoZW1hVGFibGVOYW1lcy5tYXAoXG4gICAgICAgICAgICAgICAgdGFibGVfbmFtZSA9PlxuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRhYmxlX25hbWUsXG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0OiB0YWJsZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHJhbmdlIGlzIG1pc3NpbmdcbiAgICAgICAgICAgICAgICAgIH0gYXMgbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobGFzdFRva2VuQmVmb3JlRG90KSB7XG4gICAgICAgICAgICBsZXQgdGFibGVfbmFtZSA9IG51bGwgYXMgc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGlmIChzY2hlbWFUYWJsZU5hbWVzU2V0LmhhcyhsYXN0VG9rZW5CZWZvcmVEb3QpKSB7XG4gICAgICAgICAgICAgIHRhYmxlX25hbWUgPSBsYXN0VG9rZW5CZWZvcmVEb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhYmxlTmFtZXNBbmRBbGlhc2VzLmdldChsYXN0VG9rZW5CZWZvcmVEb3QpKSB7XG4gICAgICAgICAgICAgIHRhYmxlX25hbWUgPSB0YWJsZU5hbWVzQW5kQWxpYXNlcy5nZXQobGFzdFRva2VuQmVmb3JlRG90KSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFibGVfbmFtZSAmJiB0YWJsZVNjaGVtYSkge1xuICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLnRhYmxlU2NoZW1hXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKGQgPT4gZC50YWJsZV9uYW1lID09PSB0YWJsZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHt0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZX0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb2x1bW5fbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dDogY29sdW1uX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHJhbmdlIGlzIG1pc3NpbmdcbiAgICAgICAgICAgICAgICAgICAgICB9IGFzIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiB1bmlxQnkoc3VnZ2VzdGlvbnMsIHMgPT4gcy5pbnNlcnRUZXh0KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3RhYmxlU2NoZW1hXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEVkaXRvclxuICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICB0aGVtZT1cInZzLWRhcmtcIlxuICAgICAgZGVmYXVsdExhbmd1YWdlPVwic3FsXCJcbiAgICAgIGRlZmF1bHRWYWx1ZT17Y29kZX1cbiAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgIG9uTW91bnQ9e2hhbmRsZUVkaXRvckRpZE1vdW50fVxuICAgICAgb3B0aW9ucz17e1xuICAgICAgICAuLi5NT05BQ09fT1BUSU9OUyxcbiAgICAgICAgcmVhZE9ubHk6IGlzUmVhZE9ubHlcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmFjb0VkaXRvcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUFtQyxTQUFBTSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVIsd0JBQUFRLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEs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
@@ -0,0 +1,33 @@
1
+ import React, { CSSProperties } from 'react';
2
+ declare type BaseComponentProps = {
3
+ className?: string;
4
+ style?: CSSProperties;
5
+ };
6
+ export declare type ColMeta = {
7
+ [key: string]: {
8
+ colIdx: number;
9
+ name: string;
10
+ displayName: string;
11
+ type: string;
12
+ };
13
+ };
14
+ export declare type DataTableStyle = {
15
+ minCellSize?: number;
16
+ cellPadding?: number;
17
+ fontSize?: number;
18
+ font?: string;
19
+ optionsButton?: number;
20
+ };
21
+ export declare type PreviewDataPanelProps = BaseComponentProps & {
22
+ result: any;
23
+ rowsToCalculatePreview?: number;
24
+ theme?: any;
25
+ setColumnDisplayFormat?: (formats: {
26
+ [key: string]: string;
27
+ }) => void;
28
+ defaultPinnedColumns?: string[];
29
+ dataTableStyle: DataTableStyle;
30
+ onAddResultToMap: (result: any) => void;
31
+ };
32
+ export declare const PreviewDataPanel: React.FC<PreviewDataPanelProps>;
33
+ export {};
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PreviewDataPanel = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _components = require("@kepler.gl/components");
14
+ var _utils = require("@kepler.gl/utils");
15
+ var _processors = require("@kepler.gl/processors");
16
+ var _styledComponents = require("styled-components");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
21
+ // Copyright contributors to the kepler.gl project
22
+ var DEFAULT_ROWS_TO_CALCULATE_PREVIEW = 100;
23
+ // min Cellsize should take into account option button and field token
24
+ var minCellSize = 80;
25
+ // option buttons and field token
26
+ var optionButtonWidth = 20;
27
+ var pinButton = 20;
28
+ var cellPadding = 20;
29
+ var PreviewDataPanelWOTheme = function PreviewDataPanelWOTheme(_ref) {
30
+ var result = _ref.result,
31
+ _ref$rowsToCalculateP = _ref.rowsToCalculatePreview,
32
+ rowsToCalculatePreview = _ref$rowsToCalculateP === void 0 ? DEFAULT_ROWS_TO_CALCULATE_PREVIEW : _ref$rowsToCalculateP,
33
+ setColumnDisplayFormat = _ref.setColumnDisplayFormat,
34
+ _ref$defaultPinnedCol = _ref.defaultPinnedColumns,
35
+ defaultPinnedColumns = _ref$defaultPinnedCol === void 0 ? [] : _ref$defaultPinnedCol,
36
+ theme = _ref.theme;
37
+ var _useState = (0, _react.useState)(defaultPinnedColumns),
38
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
39
+ pinnedColumns = _useState2[0],
40
+ setPinnedColumns = _useState2[1];
41
+ var fields = (0, _react.useMemo)(function () {
42
+ return (0, _processors.arrowSchemaToFields)(result.schema);
43
+ }, [result.schema]);
44
+ var dataContainer = (0, _react.useMemo)(function () {
45
+ // const fields = arrowSchemaToFields(result.schema);
46
+
47
+ var cols = (0, _toConsumableArray2["default"])(Array(result.numCols).keys()).map(function (i) {
48
+ return result.getChildAt(i);
49
+ });
50
+ var dataContainer = (0, _utils.createDataContainer)(cols, {
51
+ fields: fields,
52
+ inputDataFormat: _utils.DataForm.COLS_ARRAY
53
+ });
54
+ return dataContainer;
55
+ }, [result, fields]);
56
+ var columns = (0, _react.useMemo)(function () {
57
+ return fields.map(function (f) {
58
+ return f.name;
59
+ });
60
+ }, [fields]);
61
+ var colMeta = (0, _react.useMemo)(function () {
62
+ return fields.reduce(function (acc, _ref2, colIdx) {
63
+ var name = _ref2.name,
64
+ displayName = _ref2.displayName,
65
+ type = _ref2.type,
66
+ displayFormat = _ref2.displayFormat;
67
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, name, {
68
+ // because '' || 'aaa' = 'aaa'
69
+ name: displayName !== undefined ? displayName : name,
70
+ displayName: displayName,
71
+ displayFormat: displayFormat,
72
+ type: type,
73
+ colIdx: colIdx
74
+ }));
75
+ }, {});
76
+ }, [fields]);
77
+ var copyTableColumn = (0, _react.useCallback)(function (column) {
78
+ var _navigator;
79
+ var _colMeta$column = colMeta[column],
80
+ colIdx = _colMeta$column.colIdx,
81
+ type = _colMeta$column.type;
82
+ var text = dataContainer.mapIndex(function (row) {
83
+ return (0, _utils.parseFieldValue)(dataContainer.valueAt(row.index, colIdx), type);
84
+ }).join('\n');
85
+ (_navigator = navigator) === null || _navigator === void 0 || _navigator.clipboard.writeText(text);
86
+ }, [colMeta, dataContainer]);
87
+ var pinTableColumn = (0, _react.useCallback)(function (column) {
88
+ return pinnedColumns.includes(column) ? setPinnedColumns(pinnedColumns.filter(function (c) {
89
+ return c !== column;
90
+ })) : setPinnedColumns([].concat((0, _toConsumableArray2["default"])(pinnedColumns), [column]));
91
+ }, [pinnedColumns]);
92
+
93
+ // TODO Potentially costly operation for non row based data containers. Revisit sorting below.
94
+ var dataTableStyle = (0, _react.useMemo)(function () {
95
+ return {
96
+ minCellSize: minCellSize,
97
+ cellPadding: cellPadding,
98
+ optionsButton: theme.fieldTokenWidth + theme.fieldTokenRightMargin + optionButtonWidth + pinButton,
99
+ fontSize: theme.cellFontSize,
100
+ font: theme.fontFamily
101
+ };
102
+ }, [theme]);
103
+ var cellSizeCache = (0, _react.useMemo)(function () {
104
+ return columns.reduce(function (acc, column) {
105
+ var _colMeta$column2 = colMeta[column],
106
+ colIdx = _colMeta$column2.colIdx,
107
+ displayName = _colMeta$column2.displayName,
108
+ type = _colMeta$column2.type;
109
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, column, (0, _components.renderedSize)(_objectSpread({
110
+ text: {
111
+ dataContainer: dataContainer,
112
+ column: displayName
113
+ },
114
+ colIdx: colIdx,
115
+ type: type,
116
+ numRowsToCalculate: rowsToCalculatePreview
117
+ }, dataTableStyle))));
118
+ }, {});
119
+ }, [columns, colMeta, dataContainer, rowsToCalculatePreview, dataTableStyle]);
120
+ return /*#__PURE__*/_react["default"].createElement(_components.DataTable, {
121
+ colMeta: colMeta,
122
+ columns: columns,
123
+ cellSizeCache: cellSizeCache,
124
+ dataContainer: dataContainer,
125
+ pinnedColumns: pinnedColumns
126
+ // sortColumn={sortColumnConfig}
127
+ ,
128
+ copyTableColumn: copyTableColumn,
129
+ pinTableColumn: pinTableColumn
130
+ // sortTableColumn={setTableSortColumn}
131
+ ,
132
+ setColumnDisplayFormat: setColumnDisplayFormat !== null && setColumnDisplayFormat !== void 0 ? setColumnDisplayFormat : function () {
133
+ return null;
134
+ }
135
+ });
136
+ };
137
+ var PreviewDataPanel = exports.PreviewDataPanel = (0, _styledComponents.withTheme)(PreviewDataPanelWOTheme);
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29tcG9uZW50cyIsIl91dGlscyIsIl9wcm9jZXNzb3JzIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVciLCJtaW5DZWxsU2l6ZSIsIm9wdGlvbkJ1dHRvbldpZHRoIiwicGluQnV0dG9uIiwiY2VsbFBhZGRpbmciLCJQcmV2aWV3RGF0YVBhbmVsV09UaGVtZSIsIl9yZWYiLCJyZXN1bHQiLCJfcmVmJHJvd3NUb0NhbGN1bGF0ZVAiLCJyb3dzVG9DYWxjdWxhdGVQcmV2aWV3Iiwic2V0Q29sdW1uRGlzcGxheUZvcm1hdCIsIl9yZWYkZGVmYXVsdFBpbm5lZENvbCIsImRlZmF1bHRQaW5uZWRDb2x1bW5zIiwidGhlbWUiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJwaW5uZWRDb2x1bW5zIiwic2V0UGlubmVkQ29sdW1ucyIsImZpZWxkcyIsInVzZU1lbW8iLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwic2NoZW1hIiwiZGF0YUNvbnRhaW5lciIsImNvbHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiQXJyYXkiLCJudW1Db2xzIiwibWFwIiwiZ2V0Q2hpbGRBdCIsImNyZWF0ZURhdGFDb250YWluZXIiLCJpbnB1dERhdGFGb3JtYXQiLCJEYXRhRm9ybSIsIkNPTFNfQVJSQVkiLCJjb2x1bW5zIiwiZiIsIm5hbWUiLCJjb2xNZXRhIiwicmVkdWNlIiwiYWNjIiwiX3JlZjIiLCJjb2xJZHgiLCJkaXNwbGF5TmFtZSIsInR5cGUiLCJkaXNwbGF5Rm9ybWF0IiwidW5kZWZpbmVkIiwiY29weVRhYmxlQ29sdW1uIiwidXNlQ2FsbGJhY2siLCJjb2x1bW4iLCJfbmF2aWdhdG9yIiwiX2NvbE1ldGEkY29sdW1uIiwidGV4dCIsIm1hcEluZGV4Iiwicm93IiwicGFyc2VGaWVsZFZhbHVlIiwidmFsdWVBdCIsImluZGV4Iiwiam9pbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInBpblRhYmxlQ29sdW1uIiwiaW5jbHVkZXMiLCJjIiwiY29uY2F0IiwiZGF0YVRhYmxlU3R5bGUiLCJvcHRpb25zQnV0dG9uIiwiZmllbGRUb2tlbldpZHRoIiwiZmllbGRUb2tlblJpZ2h0TWFyZ2luIiwiZm9udFNpemUiLCJjZWxsRm9udFNpemUiLCJmb250IiwiZm9udEZhbWlseSIsImNlbGxTaXplQ2FjaGUiLCJfY29sTWV0YSRjb2x1bW4yIiwicmVuZGVyZWRTaXplIiwibnVtUm93c1RvQ2FsY3VsYXRlIiwiY3JlYXRlRWxlbWVudCIsIkRhdGFUYWJsZSIsIlByZXZpZXdEYXRhUGFuZWwiLCJleHBvcnRzIiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvcHJldmlldy1kYXRhLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUsIENTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtEYXRhVGFibGUsIHJlbmRlcmVkU2l6ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlLCBjcmVhdGVEYXRhQ29udGFpbmVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YXJyb3dTY2hlbWFUb0ZpZWxkc30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7RGF0YUZvcm19IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxudHlwZSBCYXNlQ29tcG9uZW50UHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xufTtcblxuY29uc3QgREVGQVVMVF9ST1dTX1RPX0NBTENVTEFURV9QUkVWSUVXID0gMTAwO1xuLy8gbWluIENlbGxzaXplIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCBvcHRpb24gYnV0dG9uIGFuZCBmaWVsZCB0b2tlblxuY29uc3QgbWluQ2VsbFNpemUgPSA4MDtcbi8vIG9wdGlvbiBidXR0b25zIGFuZCBmaWVsZCB0b2tlblxuY29uc3Qgb3B0aW9uQnV0dG9uV2lkdGggPSAyMDtcbmNvbnN0IHBpbkJ1dHRvbiA9IDIwO1xuY29uc3QgY2VsbFBhZGRpbmcgPSAyMDtcblxuZXhwb3J0IHR5cGUgQ29sTWV0YSA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGNvbElkeDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFUYWJsZVN0eWxlID0ge1xuICBtaW5DZWxsU2l6ZT86IG51bWJlcjtcbiAgY2VsbFBhZGRpbmc/OiBudW1iZXI7XG4gIGZvbnRTaXplPzogbnVtYmVyO1xuICBmb250Pzogc3RyaW5nO1xuICBvcHRpb25zQnV0dG9uPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUHJldmlld0RhdGFQYW5lbFByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICByZXN1bHQ6IGFueTtcbiAgcm93c1RvQ2FsY3VsYXRlUHJldmlldz86IG51bWJlcjtcbiAgdGhlbWU/OiBhbnk7XG4gIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ/OiAoZm9ybWF0czoge1trZXk6IHN0cmluZ106IHN0cmluZ30pID0+IHZvaWQ7XG4gIGRlZmF1bHRQaW5uZWRDb2x1bW5zPzogc3RyaW5nW107XG4gIGRhdGFUYWJsZVN0eWxlOiBEYXRhVGFibGVTdHlsZTtcbiAgb25BZGRSZXN1bHRUb01hcDogKHJlc3VsdDogYW55KSA9PiB2b2lkO1xufTtcblxuY29uc3QgUHJldmlld0RhdGFQYW5lbFdPVGhlbWU6IFJlYWN0LkZDPFByZXZpZXdEYXRhUGFuZWxQcm9wcz4gPSAoe1xuICByZXN1bHQsXG4gIHJvd3NUb0NhbGN1bGF0ZVByZXZpZXcgPSBERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVcsXG4gIHNldENvbHVtbkRpc3BsYXlGb3JtYXQsXG4gIGRlZmF1bHRQaW5uZWRDb2x1bW5zID0gW10sXG4gIHRoZW1lXG59KSA9PiB7XG4gIGNvbnN0IFtwaW5uZWRDb2x1bW5zLCBzZXRQaW5uZWRDb2x1bW5zXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihkZWZhdWx0UGlubmVkQ29sdW1ucyk7XG4gIGNvbnN0IGZpZWxkcyA9IHVzZU1lbW8oKCkgPT4gYXJyb3dTY2hlbWFUb0ZpZWxkcyhyZXN1bHQuc2NoZW1hKSwgW3Jlc3VsdC5zY2hlbWFdKTtcbiAgY29uc3QgZGF0YUNvbnRhaW5lciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIGNvbnN0IGZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMocmVzdWx0LnNjaGVtYSk7XG5cbiAgICBjb25zdCBjb2xzID0gWy4uLkFycmF5KHJlc3VsdC5udW1Db2xzKS5rZXlzKCldLm1hcChpID0+IHJlc3VsdC5nZXRDaGlsZEF0KGkpKTtcblxuICAgIGNvbnN0IGRhdGFDb250YWluZXIgPSBjcmVhdGVEYXRhQ29udGFpbmVyKGNvbHMsIHtcbiAgICAgIGZpZWxkcyxcbiAgICAgIGlucHV0RGF0YUZvcm1hdDogRGF0YUZvcm0uQ09MU19BUlJBWVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyO1xuICB9LCBbcmVzdWx0LCBmaWVsZHNdKTtcblxuICBjb25zdCBjb2x1bW5zID0gdXNlTWVtbygoKSA9PiBmaWVsZHMubWFwKGYgPT4gZi5uYW1lKSwgW2ZpZWxkc10pO1xuICBjb25zdCBjb2xNZXRhID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgZmllbGRzLnJlZHVjZShcbiAgICAgICAgKGFjYywge25hbWUsIGRpc3BsYXlOYW1lLCB0eXBlLCBkaXNwbGF5Rm9ybWF0fSwgY29sSWR4KSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbbmFtZV06IHtcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgJycgfHwgJ2FhYScgPSAnYWFhJ1xuICAgICAgICAgICAgbmFtZTogZGlzcGxheU5hbWUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlOYW1lIDogbmFtZSxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgZGlzcGxheUZvcm1hdCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBjb2xJZHhcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKSxcbiAgICBbZmllbGRzXVxuICApO1xuICBjb25zdCBjb3B5VGFibGVDb2x1bW4gPSB1c2VDYWxsYmFjayhcbiAgICBjb2x1bW4gPT4ge1xuICAgICAgY29uc3Qge2NvbElkeCwgdHlwZX0gPSBjb2xNZXRhW2NvbHVtbl07XG4gICAgICBjb25zdCB0ZXh0ID0gZGF0YUNvbnRhaW5lclxuICAgICAgICAubWFwSW5kZXgocm93ID0+IHBhcnNlRmllbGRWYWx1ZShkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93LmluZGV4LCBjb2xJZHgpLCB0eXBlKSlcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgbmF2aWdhdG9yPy5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIH0sXG4gICAgW2NvbE1ldGEsIGRhdGFDb250YWluZXJdXG4gICk7XG4gIGNvbnN0IHBpblRhYmxlQ29sdW1uID0gdXNlQ2FsbGJhY2soXG4gICAgY29sdW1uID0+XG4gICAgICBwaW5uZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbilcbiAgICAgICAgPyBzZXRQaW5uZWRDb2x1bW5zKHBpbm5lZENvbHVtbnMuZmlsdGVyKGMgPT4gYyAhPT0gY29sdW1uKSlcbiAgICAgICAgOiBzZXRQaW5uZWRDb2x1bW5zKFsuLi5waW5uZWRDb2x1bW5zLCBjb2x1bW5dKSxcbiAgICBbcGlubmVkQ29sdW1uc11cbiAgKTtcblxuICAvLyBUT0RPIFBvdGVudGlhbGx5IGNvc3RseSBvcGVyYXRpb24gZm9yIG5vbiByb3cgYmFzZWQgZGF0YSBjb250YWluZXJzLiBSZXZpc2l0IHNvcnRpbmcgYmVsb3cuXG4gIGNvbnN0IGRhdGFUYWJsZVN0eWxlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgbWluQ2VsbFNpemUsXG4gICAgICBjZWxsUGFkZGluZyxcbiAgICAgIG9wdGlvbnNCdXR0b246XG4gICAgICAgIHRoZW1lLmZpZWxkVG9rZW5XaWR0aCArIHRoZW1lLmZpZWxkVG9rZW5SaWdodE1hcmdpbiArIG9wdGlvbkJ1dHRvbldpZHRoICsgcGluQnV0dG9uLFxuICAgICAgZm9udFNpemU6IHRoZW1lLmNlbGxGb250U2l6ZSxcbiAgICAgIGZvbnQ6IHRoZW1lLmZvbnRGYW1pbHlcbiAgICB9KSxcbiAgICBbdGhlbWVdXG4gICk7XG4gIGNvbnN0IGNlbGxTaXplQ2FjaGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY29sdW1ucy5yZWR1Y2UoKGFjYywgY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCB7Y29sSWR4LCBkaXNwbGF5TmFtZSwgdHlwZX0gPSBjb2xNZXRhW2NvbHVtbl07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtjb2x1bW5dOiByZW5kZXJlZFNpemUoe1xuICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIGRhdGFDb250YWluZXIsXG4gICAgICAgICAgICBjb2x1bW46IGRpc3BsYXlOYW1lXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb2xJZHgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBudW1Sb3dzVG9DYWxjdWxhdGU6IHJvd3NUb0NhbGN1bGF0ZVByZXZpZXcsXG4gICAgICAgICAgLi4uZGF0YVRhYmxlU3R5bGVcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSwge30pO1xuICB9LCBbY29sdW1ucywgY29sTWV0YSwgZGF0YUNvbnRhaW5lciwgcm93c1RvQ2FsY3VsYXRlUHJldmlldywgZGF0YVRhYmxlU3R5bGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxEYXRhVGFibGVcbiAgICAgIGNvbE1ldGE9e2NvbE1ldGF9XG4gICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgY2VsbFNpemVDYWNoZT17Y2VsbFNpemVDYWNoZX1cbiAgICAgIGRhdGFDb250YWluZXI9e2RhdGFDb250YWluZXJ9XG4gICAgICBwaW5uZWRDb2x1bW5zPXtwaW5uZWRDb2x1bW5zfVxuICAgICAgLy8gICBzb3J0Q29sdW1uPXtzb3J0Q29sdW1uQ29uZmlnfVxuICAgICAgY29weVRhYmxlQ29sdW1uPXtjb3B5VGFibGVDb2x1bW59XG4gICAgICBwaW5UYWJsZUNvbHVtbj17cGluVGFibGVDb2x1bW59XG4gICAgICAvLyAgIHNvcnRUYWJsZUNvbHVtbj17c2V0VGFibGVTb3J0Q29sdW1ufVxuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD17c2V0Q29sdW1uRGlzcGxheUZvcm1hdCA/PyAoKCkgPT4gbnVsbCl9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3RGF0YVBhbmVsID0gd2l0aFRoZW1lKFxuICBQcmV2aWV3RGF0YVBhbmVsV09UaGVtZVxuKSBhcyBSZWFjdC5GQzxQcmV2aWV3RGF0YVBhbmVsUHJvcHM+O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGlCQUFBLEdBQUFKLE9BQUE7QUFBNEMsU0FBQUsseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEs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
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const SchemaPanel: ({ setTableSchema }: {
3
+ setTableSchema: any;
4
+ }) => React.JSX.Element;