sqlite-wasm-viewer 1.0.13 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/DbViewerWorker.js +0 -1
- package/dist/DbWorker.js +11 -1
- package/dist/ListVirtualizer.js +7 -0
- package/dist/QueryRunner.js +21 -24
- package/dist/bus.js +47 -0
- package/dist/dbWorkerConnector.js +63 -0
- package/dist/index.js +7 -109
- package/dist/state.js +46 -0
- package/dist/styles.css +107 -22
- package/dist/viewer.js +76 -0
- package/dist/views/EditCellView/EditCellView.js +33 -20
- package/dist/views/EditCellView/styles.css +15 -8
- package/dist/views/ExecuteSQLView/ExecuteSQLView.js +7 -9
- package/dist/views/ExecuteSQLView/styles.css +19 -15
- package/dist/views/ExplorerView/ExplorerView.js +32 -16
- package/dist/views/ExplorerView/styles.css +24 -12
- package/dist/views/SqlLogView/SqlLogView.js +14 -5
- package/dist/views/SqlLogView/styles.css +10 -0
- package/dist/views/TableView/TableView.js +74 -42
- package/dist/views/TableView/styles.css +47 -23
- package/package.json +13 -3
package/README.md
CHANGED
package/dist/DbViewerWorker.js
CHANGED
package/dist/DbWorker.js
CHANGED
|
@@ -3,5 +3,15 @@
|
|
|
3
3
|
var _DbViewerWorker = require("./DbViewerWorker");
|
|
4
4
|
var dbWorker = new _DbViewerWorker.DbViewerWorker();
|
|
5
5
|
onmessage = function onmessage(message) {
|
|
6
|
-
|
|
6
|
+
try {
|
|
7
|
+
dbWorker.post(message);
|
|
8
|
+
} catch (e) {
|
|
9
|
+
if (message.data.type === 'query') {
|
|
10
|
+
postMessage({
|
|
11
|
+
type: 'error',
|
|
12
|
+
sql: message.data.query.sql,
|
|
13
|
+
errorMsg: e.toString()
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
7
17
|
};
|
package/dist/ListVirtualizer.js
CHANGED
|
@@ -84,6 +84,13 @@ var ListVirtualizer = /*#__PURE__*/function () {
|
|
|
84
84
|
first = first < 0 ? 0 : first;
|
|
85
85
|
this.renderChunk(first);
|
|
86
86
|
}
|
|
87
|
+
}, {
|
|
88
|
+
key: "update",
|
|
89
|
+
value: function update() {
|
|
90
|
+
var first = Math.ceil(this.scrollTop / this.itemHeight - this.screenItemsLen);
|
|
91
|
+
first = first < 0 ? 0 : first;
|
|
92
|
+
this.renderChunk(first);
|
|
93
|
+
}
|
|
87
94
|
}]);
|
|
88
95
|
return ListVirtualizer;
|
|
89
96
|
}();
|
package/dist/QueryRunner.js
CHANGED
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.QueryRunner = void 0;
|
|
7
|
-
var
|
|
6
|
+
exports.queryRunner = exports.QueryRunner = void 0;
|
|
7
|
+
var Bus = _interopRequireWildcard(require("./bus"));
|
|
8
|
+
var _state = require("./state");
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
8
11
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
9
12
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
10
13
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
@@ -12,41 +15,35 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
12
15
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
16
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
17
|
var QueryRunner = /*#__PURE__*/function () {
|
|
15
|
-
function QueryRunner(
|
|
18
|
+
function QueryRunner() {
|
|
19
|
+
var _this = this;
|
|
16
20
|
_classCallCheck(this, QueryRunner);
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
Bus.listen('db-connector-ready', function (db) {
|
|
22
|
+
_this.db = db;
|
|
23
|
+
Bus.emit('query-runner-ready', true);
|
|
24
|
+
});
|
|
19
25
|
}
|
|
20
26
|
_createClass(QueryRunner, [{
|
|
21
27
|
key: "runQuery",
|
|
22
28
|
value: function runQuery(query, label) {
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
if (!this.db) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var currentTable = (0, _state.selectedTable)();
|
|
33
|
+
if (!currentTable) {
|
|
25
34
|
return;
|
|
26
35
|
}
|
|
27
36
|
this.db.post({
|
|
28
37
|
type: 'query',
|
|
29
38
|
query: query,
|
|
30
|
-
databasePath:
|
|
39
|
+
databasePath: currentTable.databasePath,
|
|
31
40
|
label: label
|
|
32
41
|
});
|
|
33
|
-
|
|
34
|
-
listener(query);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}, {
|
|
38
|
-
key: "addListener",
|
|
39
|
-
value: function addListener(listener) {
|
|
40
|
-
var _this = this;
|
|
41
|
-
if (this.listeners.indexOf(listener) !== -1) {
|
|
42
|
-
throw new Error('Listener is already added');
|
|
43
|
-
}
|
|
44
|
-
this.listeners.push(listener);
|
|
45
|
-
return function () {
|
|
46
|
-
_this.listeners.splice(_this.listeners.indexOf(listener), 1);
|
|
47
|
-
};
|
|
42
|
+
Bus.emit('query-run', query);
|
|
48
43
|
}
|
|
49
44
|
}]);
|
|
50
45
|
return QueryRunner;
|
|
51
46
|
}();
|
|
52
|
-
exports.QueryRunner = QueryRunner;
|
|
47
|
+
exports.QueryRunner = QueryRunner;
|
|
48
|
+
var queryRunner = new QueryRunner();
|
|
49
|
+
exports.queryRunner = queryRunner;
|
package/dist/bus.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.emit = emit;
|
|
7
|
+
exports.listen = listen;
|
|
8
|
+
exports.remove = remove;
|
|
9
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
+
var _listeners = {};
|
|
13
|
+
function listen(type, listener) {
|
|
14
|
+
var listeners = _listeners[type];
|
|
15
|
+
if (!listeners) {
|
|
16
|
+
listeners = _listeners[type] = [];
|
|
17
|
+
}
|
|
18
|
+
listeners.push(listener);
|
|
19
|
+
}
|
|
20
|
+
function remove(type, listener) {
|
|
21
|
+
var listeners = _listeners[type];
|
|
22
|
+
if (!listeners) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
var idx = listeners.indexOf(listener);
|
|
26
|
+
if (idx >= 0) {
|
|
27
|
+
listeners.splice(idx, 1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function emit(type, event) {
|
|
31
|
+
var listeners = _listeners[type];
|
|
32
|
+
if (!listeners) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
var _iterator = _createForOfIteratorHelper(listeners),
|
|
36
|
+
_step;
|
|
37
|
+
try {
|
|
38
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
39
|
+
var listener = _step.value;
|
|
40
|
+
listener(event);
|
|
41
|
+
}
|
|
42
|
+
} catch (err) {
|
|
43
|
+
_iterator.e(err);
|
|
44
|
+
} finally {
|
|
45
|
+
_iterator.f();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.connectToWorker = connectToWorker;
|
|
8
|
+
var _dbScanner = require("./dbScanner");
|
|
9
|
+
var Bus = _interopRequireWildcard(require("./bus"));
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
|
+
function connectToWorker(config) {
|
|
13
|
+
var worker = new Worker(new URL('./DbWorker', import.meta.url), {
|
|
14
|
+
type: 'module'
|
|
15
|
+
});
|
|
16
|
+
var collectDbFilesPromise = (0, _dbScanner.collectDbFiles)(config.isSqliteDatabase);
|
|
17
|
+
var dbs = {};
|
|
18
|
+
worker.onmessage = function (message) {
|
|
19
|
+
if (message.data.type === 'onReady') {
|
|
20
|
+
var db = {
|
|
21
|
+
post: function post(mess) {
|
|
22
|
+
worker.postMessage(mess);
|
|
23
|
+
},
|
|
24
|
+
on: function on(mess) {
|
|
25
|
+
var _worker$onmessage;
|
|
26
|
+
(_worker$onmessage = worker.onmessage) === null || _worker$onmessage === void 0 ? void 0 : _worker$onmessage.call(worker, mess);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
Bus.emit('db-connector-ready', db);
|
|
30
|
+
collectDbFilesPromise.then(function (dbFiles) {
|
|
31
|
+
dbFiles.forEach(function (dbFile) {
|
|
32
|
+
var dbFilepath = dbFile;
|
|
33
|
+
var dbName = dbFile;
|
|
34
|
+
dbs[dbFilepath] = {
|
|
35
|
+
filename: dbName,
|
|
36
|
+
tables: []
|
|
37
|
+
};
|
|
38
|
+
worker.postMessage({
|
|
39
|
+
type: 'readSchema',
|
|
40
|
+
path: dbFile
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
} else if (message.data.type === 'onSchema') {
|
|
45
|
+
var tables = message.data.schema.map(function (tableSchema) {
|
|
46
|
+
return tableSchema[0];
|
|
47
|
+
});
|
|
48
|
+
dbs[message.data.dbName].tables = tables;
|
|
49
|
+
Bus.emit('db-found', dbs[message.data.dbName]);
|
|
50
|
+
} else if (message.data.type === 'onQuery') {
|
|
51
|
+
Bus.emit('query-results', message.data);
|
|
52
|
+
} else if (message.data.type === 'error') {
|
|
53
|
+
Bus.emit('query-run', {
|
|
54
|
+
sql: message.data.sql,
|
|
55
|
+
errorMsg: message.data.errorMsg,
|
|
56
|
+
parameters: []
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
worker.postMessage({
|
|
61
|
+
type: 'init'
|
|
62
|
+
});
|
|
63
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -8,22 +8,8 @@ exports.hideViewer = hideViewer;
|
|
|
8
8
|
exports.setConfig = setConfig;
|
|
9
9
|
exports.showViewer = showViewer;
|
|
10
10
|
require("./styles.css");
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var _QueryRunner = require("./QueryRunner");
|
|
14
|
-
var _SqlLogView = require("./views/SqlLogView/SqlLogView");
|
|
15
|
-
var _ExplorerView = require("./views/ExplorerView/ExplorerView");
|
|
16
|
-
var _dbScanner = require("./dbScanner");
|
|
17
|
-
var _EditCellView = require("./views/EditCellView/EditCellView");
|
|
18
|
-
var _viewerState = require("./viewerState");
|
|
19
|
-
var _resizeHandler = require("./utils/resizeHandler");
|
|
20
|
-
var viewer = null;
|
|
21
|
-
var dbListEl = null;
|
|
22
|
-
var tableViewer = null;
|
|
23
|
-
var middlePanel = null;
|
|
24
|
-
var rightPanel = null;
|
|
25
|
-
var explorerView = null;
|
|
26
|
-
var queryRunner = null;
|
|
11
|
+
var _viewer2 = require("./viewer");
|
|
12
|
+
var _viewer;
|
|
27
13
|
var defaultSqliteExtension = ['db', 'sqlite'];
|
|
28
14
|
function defaultIsSqliteDatabase(filename) {
|
|
29
15
|
return defaultSqliteExtension.some(function (ext) {
|
|
@@ -40,103 +26,15 @@ function setConfig(userConfig) {
|
|
|
40
26
|
Object.freeze(config);
|
|
41
27
|
}
|
|
42
28
|
function showViewer() {
|
|
43
|
-
if (!
|
|
44
|
-
|
|
45
|
-
viewer.id = 'viewer';
|
|
46
|
-
(0, _viewerState.initState)(viewer);
|
|
47
|
-
var closeBtn = document.createElement('div');
|
|
48
|
-
closeBtn.id = 'close_btn';
|
|
49
|
-
closeBtn.innerText = 'Close';
|
|
50
|
-
closeBtn.onclick = function () {
|
|
29
|
+
if (!_viewer) {
|
|
30
|
+
_viewer = new _viewer2.Viewer(config, function () {
|
|
51
31
|
hideViewer();
|
|
52
|
-
};
|
|
53
|
-
viewer.appendChild(closeBtn);
|
|
54
|
-
|
|
55
|
-
// Left Panel
|
|
56
|
-
dbListEl = document.createElement('div');
|
|
57
|
-
dbListEl.id = 'db_list';
|
|
58
|
-
viewer.appendChild(dbListEl);
|
|
59
|
-
|
|
60
|
-
// Middle Panel
|
|
61
|
-
middlePanel = document.createElement('div');
|
|
62
|
-
middlePanel.id = 'middle_panel';
|
|
63
|
-
var listResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(dbListEl, middlePanel, true, viewer);
|
|
64
|
-
viewer.appendChild(listResizeHandlerEl);
|
|
65
|
-
var tableViewEl = document.createElement('div');
|
|
66
|
-
tableViewEl.id = 'table_view';
|
|
67
|
-
middlePanel.appendChild(tableViewEl);
|
|
68
|
-
viewer.append(middlePanel);
|
|
69
|
-
|
|
70
|
-
// Right Panel
|
|
71
|
-
rightPanel = document.createElement('div');
|
|
72
|
-
rightPanel.id = 'right_panel';
|
|
73
|
-
var executeSqlView = new _ExecuteSQLView.ExecuteSQLView(rightPanel);
|
|
74
|
-
var editCellView = new _EditCellView.EditCellView(viewer, rightPanel);
|
|
75
|
-
var rightPanelResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(middlePanel, rightPanel, false, viewer);
|
|
76
|
-
viewer.appendChild(rightPanelResizeHandlerEl);
|
|
77
|
-
viewer.append(rightPanel);
|
|
78
|
-
var worker = new Worker(new URL('./DbWorker', import.meta.url), {
|
|
79
|
-
type: 'module'
|
|
80
|
-
});
|
|
81
|
-
explorerView = new _ExplorerView.ExplorerView(dbListEl, viewer);
|
|
82
|
-
var collectDbFilesPromise = (0, _dbScanner.collectDbFiles)(config.isSqliteDatabase);
|
|
83
|
-
var dbs = {};
|
|
84
|
-
worker.onmessage = function (message) {
|
|
85
|
-
if (message.data.type === 'onReady') {
|
|
86
|
-
collectDbFilesPromise.then(function (dbFiles) {
|
|
87
|
-
dbFiles.forEach(function (dbFile) {
|
|
88
|
-
var dbFilepath = dbFile;
|
|
89
|
-
var dbName = dbFile;
|
|
90
|
-
dbs[dbFilepath] = {
|
|
91
|
-
filename: dbName,
|
|
92
|
-
tables: []
|
|
93
|
-
};
|
|
94
|
-
worker.postMessage({
|
|
95
|
-
type: 'readSchema',
|
|
96
|
-
path: dbFile
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
} else if (message.data.type === 'onSchema') {
|
|
101
|
-
var _explorerView;
|
|
102
|
-
var tables = message.data.schema.map(function (tableSchema) {
|
|
103
|
-
return tableSchema[0];
|
|
104
|
-
});
|
|
105
|
-
dbs[message.data.dbName].tables = tables;
|
|
106
|
-
(_explorerView = explorerView) === null || _explorerView === void 0 ? void 0 : _explorerView.addDatabaseItem(dbs[message.data.dbName]);
|
|
107
|
-
} else if (message.data.type === 'onQuery') {
|
|
108
|
-
if (message.data.label === 'tableViewColumns') {
|
|
109
|
-
var _tableViewer;
|
|
110
|
-
(_tableViewer = tableViewer) === null || _tableViewer === void 0 ? void 0 : _tableViewer.setTableColumns(message.data.result.resultRows || []);
|
|
111
|
-
}
|
|
112
|
-
if (message.data.label === 'tableView') {
|
|
113
|
-
var _tableViewer2;
|
|
114
|
-
(_tableViewer2 = tableViewer) === null || _tableViewer2 === void 0 ? void 0 : _tableViewer2.setTableResults(message.data.result.resultRows || []);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
var db = {
|
|
119
|
-
post: function post(message) {
|
|
120
|
-
worker.postMessage(message);
|
|
121
|
-
},
|
|
122
|
-
on: function on(message) {
|
|
123
|
-
var _worker$onmessage;
|
|
124
|
-
(_worker$onmessage = worker.onmessage) === null || _worker$onmessage === void 0 ? void 0 : _worker$onmessage.call(worker, message);
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
queryRunner = new _QueryRunner.QueryRunner(db);
|
|
128
|
-
(0, _SqlLogView.initSqlLogView)(rightPanel, queryRunner);
|
|
129
|
-
tableViewer = new _TableView.TableView(viewer, tableViewEl, queryRunner);
|
|
130
|
-
executeSqlView.setDb(queryRunner);
|
|
131
|
-
editCellView.setDb(queryRunner);
|
|
132
|
-
worker.postMessage({
|
|
133
|
-
type: 'init'
|
|
134
32
|
});
|
|
135
33
|
}
|
|
136
|
-
document.body.appendChild(
|
|
34
|
+
document.body.appendChild(_viewer.element);
|
|
137
35
|
}
|
|
138
36
|
function hideViewer() {
|
|
139
|
-
if (
|
|
140
|
-
document.body.removeChild(
|
|
37
|
+
if (_viewer) {
|
|
38
|
+
document.body.removeChild(_viewer.element);
|
|
141
39
|
}
|
|
142
40
|
}
|
package/dist/state.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.isDirty = isDirty;
|
|
8
|
+
exports.selectCell = selectCell;
|
|
9
|
+
exports.selectTable = selectTable;
|
|
10
|
+
exports.selectedCell = selectedCell;
|
|
11
|
+
exports.selectedTable = selectedTable;
|
|
12
|
+
exports.setDirty = setDirty;
|
|
13
|
+
var Bus = _interopRequireWildcard(require("./bus"));
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
var _state = {
|
|
17
|
+
selectedCell: null,
|
|
18
|
+
selectedTable: null,
|
|
19
|
+
dirty: false
|
|
20
|
+
};
|
|
21
|
+
function selectedTable() {
|
|
22
|
+
return _state.selectedTable;
|
|
23
|
+
}
|
|
24
|
+
function selectedCell() {
|
|
25
|
+
return _state.selectedCell;
|
|
26
|
+
}
|
|
27
|
+
function isDirty() {
|
|
28
|
+
return _state.dirty;
|
|
29
|
+
}
|
|
30
|
+
function selectCell(cell) {
|
|
31
|
+
_state.selectedCell = cell;
|
|
32
|
+
Bus.emit('cell-selected', cell);
|
|
33
|
+
}
|
|
34
|
+
function selectTable(table) {
|
|
35
|
+
var _state$selectedTable;
|
|
36
|
+
var hasChanged = ((_state$selectedTable = _state.selectedTable) === null || _state$selectedTable === void 0 ? void 0 : _state$selectedTable.tableName) !== table.tableName;
|
|
37
|
+
if (hasChanged) {
|
|
38
|
+
selectCell(null);
|
|
39
|
+
}
|
|
40
|
+
_state.selectedTable = table;
|
|
41
|
+
Bus.emit('table-selected', table);
|
|
42
|
+
}
|
|
43
|
+
function setDirty(dirty) {
|
|
44
|
+
_state.dirty = dirty;
|
|
45
|
+
Bus.emit('db-dirtied', dirty);
|
|
46
|
+
}
|
package/dist/styles.css
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
left: 0;
|
|
5
5
|
right: 0;
|
|
6
6
|
bottom: 0;
|
|
7
|
-
background
|
|
7
|
+
background: linear-gradient(180deg, #f4f7fb 0%, #edf2f8 100%);
|
|
8
8
|
display: flex;
|
|
9
|
-
padding:
|
|
10
|
-
padding-top:
|
|
9
|
+
padding: 12px;
|
|
10
|
+
padding-top: 44px;
|
|
11
|
+
gap: 10px;
|
|
12
|
+
color: #111827;
|
|
13
|
+
font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
|
|
14
|
+
font-size: 13px;
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
#viewer * {
|
|
@@ -15,22 +19,40 @@
|
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
#viewer .viewHeader {
|
|
18
|
-
max-height:
|
|
19
|
-
flex-basis:
|
|
22
|
+
max-height: 34px;
|
|
23
|
+
flex-basis: 34px;
|
|
20
24
|
flex-shrink: 0;
|
|
21
|
-
line-height: 1.
|
|
22
|
-
padding: 8px;
|
|
25
|
+
line-height: 1.2rem;
|
|
26
|
+
padding: 8px 10px;
|
|
23
27
|
display: flex;
|
|
24
28
|
align-items: center;
|
|
25
29
|
gap: 8px;
|
|
26
|
-
|
|
30
|
+
border-bottom: 1px solid #e5e7eb;
|
|
31
|
+
background: linear-gradient(180deg, #ffffff 0%, #f9fafb 100%);
|
|
32
|
+
font-weight: 600;
|
|
33
|
+
color: #334155;
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
#viewer #close_btn {
|
|
30
37
|
position: absolute;
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
top: 12px;
|
|
39
|
+
left: 14px;
|
|
40
|
+
z-index: 5;
|
|
41
|
+
padding: 2px 10px;
|
|
42
|
+
min-height: 26px;
|
|
43
|
+
border-radius: 999px;
|
|
33
44
|
cursor: pointer;
|
|
45
|
+
color: #334155;
|
|
46
|
+
background: #ffffff;
|
|
47
|
+
border: 1px solid #b8c6d9;
|
|
48
|
+
font-size: 12px;
|
|
49
|
+
line-height: 1.2;
|
|
50
|
+
box-shadow: 0 2px 6px rgba(15, 23, 42, 0.08);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#viewer #close_btn:hover {
|
|
54
|
+
background: #f8fafc;
|
|
55
|
+
border-color: #94a3b8;
|
|
34
56
|
}
|
|
35
57
|
|
|
36
58
|
#viewer #db_list {
|
|
@@ -38,24 +60,33 @@
|
|
|
38
60
|
min-width: 180px;
|
|
39
61
|
max-width: 750px;
|
|
40
62
|
flex: 0 0 auto;
|
|
41
|
-
padding:
|
|
63
|
+
padding: 0;
|
|
42
64
|
background-color: darkgray;
|
|
43
65
|
display: flex;
|
|
44
66
|
flex-direction: column;
|
|
67
|
+
border: 1px solid #dbe2ea;
|
|
68
|
+
border-radius: 10px;
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
background: #fff;
|
|
71
|
+
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
|
|
45
72
|
}
|
|
46
73
|
|
|
47
74
|
#viewer #tree_root {
|
|
48
75
|
flex-grow: 1;
|
|
49
|
-
padding:
|
|
50
|
-
background-color:
|
|
76
|
+
padding: 0;
|
|
77
|
+
background-color: #fff;
|
|
51
78
|
}
|
|
52
79
|
|
|
53
80
|
#viewer #middle_panel {
|
|
54
|
-
background
|
|
81
|
+
background: #fff;
|
|
55
82
|
flex: 1;
|
|
56
83
|
flex-basis: 800px;
|
|
57
84
|
display: flex;
|
|
58
85
|
flex-direction: column;
|
|
86
|
+
border: 1px solid #dbe2ea;
|
|
87
|
+
border-radius: 10px;
|
|
88
|
+
overflow: hidden;
|
|
89
|
+
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
|
|
59
90
|
}
|
|
60
91
|
|
|
61
92
|
#viewer #right_panel {
|
|
@@ -63,31 +94,85 @@
|
|
|
63
94
|
min-width: 180px;
|
|
64
95
|
max-width: 500px;
|
|
65
96
|
flex: 0 0 auto;
|
|
66
|
-
padding:
|
|
67
|
-
background
|
|
97
|
+
padding: 0;
|
|
98
|
+
background: transparent;
|
|
68
99
|
display: flex;
|
|
69
100
|
flex-direction: column;
|
|
70
|
-
gap:
|
|
101
|
+
gap: 10px;
|
|
71
102
|
}
|
|
72
103
|
|
|
73
104
|
#viewer #right_panel > div {
|
|
74
105
|
height: 33.33%;
|
|
106
|
+
border: 1px solid #dbe2ea;
|
|
107
|
+
border-radius: 10px;
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
background: #fff;
|
|
110
|
+
box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
|
|
75
111
|
}
|
|
76
112
|
|
|
77
113
|
#viewer .resizeDragHandler {
|
|
78
|
-
width:
|
|
114
|
+
width: 10px;
|
|
79
115
|
flex-shrink: 0;
|
|
80
116
|
cursor: col-resize;
|
|
117
|
+
position: relative;
|
|
81
118
|
}
|
|
82
119
|
|
|
83
120
|
#viewer .resizeDragHandler:hover::after {
|
|
84
|
-
border: 2px solid
|
|
85
|
-
border-radius:
|
|
121
|
+
border: 2px solid #94a3b8;
|
|
122
|
+
border-radius: 999px;
|
|
86
123
|
content: '';
|
|
87
124
|
display: block;
|
|
88
|
-
height:
|
|
125
|
+
height: 72%;
|
|
89
126
|
margin: 0 auto;
|
|
90
127
|
position: relative;
|
|
91
|
-
top:
|
|
128
|
+
top: 14%;
|
|
92
129
|
width: 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#viewer button,
|
|
133
|
+
#viewer input,
|
|
134
|
+
#viewer textarea {
|
|
135
|
+
font: inherit;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
#viewer button {
|
|
139
|
+
border: 1px solid #cbd5e1;
|
|
140
|
+
border-radius: 6px;
|
|
141
|
+
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
|
|
142
|
+
color: #1e293b;
|
|
143
|
+
padding: 4px 10px;
|
|
144
|
+
cursor: pointer;
|
|
145
|
+
transition: background-color 0.15s ease, border-color 0.15s ease;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
#viewer button.panelActionBtn {
|
|
149
|
+
border-top-left-radius: 0;
|
|
150
|
+
border-top-right-radius: 0;
|
|
151
|
+
border-bottom-left-radius: 9px;
|
|
152
|
+
border-bottom-right-radius: 9px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
#viewer button:hover:not([disabled]) {
|
|
156
|
+
border-color: #94a3b8;
|
|
157
|
+
background: #f8fafc;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
#viewer button[disabled] {
|
|
161
|
+
opacity: 0.55;
|
|
162
|
+
cursor: not-allowed;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
#viewer input,
|
|
166
|
+
#viewer textarea {
|
|
167
|
+
border: 1px solid #cbd5e1;
|
|
168
|
+
background: #fff;
|
|
169
|
+
color: #111827;
|
|
170
|
+
padding: 6px 8px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
#viewer input:focus,
|
|
174
|
+
#viewer textarea:focus {
|
|
175
|
+
outline: none;
|
|
176
|
+
border-color: #60a5fa;
|
|
177
|
+
box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.18);
|
|
93
178
|
}
|