sqlite-wasm-viewer 1.0.13 → 1.1.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.
@@ -88,7 +88,6 @@ var DbViewerWorker = /*#__PURE__*/function () {
88
88
  rawStatement.bind(parameters);
89
89
  }
90
90
  while (rawStatement.step()) {
91
- // Kysely expects the results to be in the object mode
92
91
  var row = rawStatement.get({});
93
92
  resultRows.push(row);
94
93
  }
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
- dbWorker.post(message);
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
  };
@@ -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
  }();
@@ -3,8 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.QueryRunner = void 0;
7
- var _viewerState = require("./viewerState");
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(db) {
18
+ function QueryRunner() {
19
+ var _this = this;
16
20
  _classCallCheck(this, QueryRunner);
17
- this.db = db;
18
- this.listeners = [];
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
- var currentDatabase = _viewerState.ViewerState.instance.selectedTable;
24
- if (!currentDatabase) {
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: currentDatabase.databasePath,
39
+ databasePath: currentTable.databasePath,
31
40
  label: label
32
41
  });
33
- this.listeners.forEach(function (listener) {
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 _TableView = require("./views/TableView/TableView");
12
- var _ExecuteSQLView = require("./views/ExecuteSQLView/ExecuteSQLView");
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 (!viewer) {
44
- viewer = document.createElement('div');
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(viewer);
34
+ document.body.appendChild(_viewer.element);
137
35
  }
138
36
  function hideViewer() {
139
- if (viewer) {
140
- document.body.removeChild(viewer);
37
+ if (_viewer) {
38
+ document.body.removeChild(_viewer.element);
141
39
  }
142
40
  }
package/dist/state.js ADDED
@@ -0,0 +1,37 @@
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.selectedTable = selectedTable;
11
+ exports.setDirty = setDirty;
12
+ var Bus = _interopRequireWildcard(require("./bus"));
13
+ 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); }
14
+ 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; }
15
+ var _state = {
16
+ selectedCell: null,
17
+ selectedTable: null,
18
+ dirty: false
19
+ };
20
+ function selectedTable() {
21
+ return _state.selectedTable;
22
+ }
23
+ function isDirty() {
24
+ return _state.dirty;
25
+ }
26
+ function selectCell(cell) {
27
+ _state.selectedCell = cell;
28
+ Bus.emit('cell-selected', cell);
29
+ }
30
+ function selectTable(table) {
31
+ _state.selectedTable = table;
32
+ Bus.emit('table-selected', table);
33
+ }
34
+ function setDirty(dirty) {
35
+ _state.dirty = dirty;
36
+ Bus.emit('db-dirtied', dirty);
37
+ }
package/dist/viewer.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Viewer = void 0;
7
+ var _dbWorkerConnector = require("./dbWorkerConnector");
8
+ var _resizeHandler = require("./utils/resizeHandler");
9
+ var _EditCellView = require("./views/EditCellView/EditCellView");
10
+ var _ExecuteSQLView = require("./views/ExecuteSQLView/ExecuteSQLView");
11
+ var _ExplorerView = require("./views/ExplorerView/ExplorerView");
12
+ var _SqlLogView = require("./views/SqlLogView/SqlLogView");
13
+ var _TableView = require("./views/TableView/TableView");
14
+ 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); }
15
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16
+ 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); } }
17
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
18
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
19
+ 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); }
20
+ var Viewer = /*#__PURE__*/function () {
21
+ function Viewer(config, onClickClose) {
22
+ _classCallCheck(this, Viewer);
23
+ this.onClickClose = onClickClose;
24
+ this.createElements();
25
+ (0, _dbWorkerConnector.connectToWorker)(config);
26
+ }
27
+ _createClass(Viewer, [{
28
+ key: "createElements",
29
+ value: function createElements() {
30
+ var _this = this;
31
+ this._container = document.createElement('div');
32
+ this._container.id = 'viewer';
33
+ var closeBtn = document.createElement('div');
34
+ closeBtn.id = 'close_btn';
35
+ closeBtn.innerText = 'Close';
36
+ closeBtn.onclick = function () {
37
+ _this.onClickClose();
38
+ };
39
+ this._container.appendChild(closeBtn);
40
+
41
+ // Left Panel
42
+ var leftPanel = document.createElement('div');
43
+ leftPanel.id = 'db_list';
44
+ (0, _ExplorerView.createExplorerView)(leftPanel, this._container);
45
+ this._container.appendChild(leftPanel);
46
+
47
+ // Middle Panel
48
+ var middlePanel = document.createElement('div');
49
+ middlePanel.id = 'middle_panel';
50
+ var listResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(leftPanel, middlePanel, true, this._container);
51
+ this._container.appendChild(listResizeHandlerEl);
52
+ var tableViewEl = document.createElement('div');
53
+ tableViewEl.id = 'table_view';
54
+ middlePanel.appendChild(tableViewEl);
55
+ (0, _TableView.createTableView)(tableViewEl);
56
+ this._container.append(middlePanel);
57
+
58
+ // Right Panel
59
+ var rightPanel = document.createElement('div');
60
+ rightPanel.id = 'right_panel';
61
+ var rightPanelResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(middlePanel, rightPanel, false, this._container);
62
+ this._container.appendChild(rightPanelResizeHandlerEl);
63
+ (0, _EditCellView.createEditCellView)(rightPanel);
64
+ (0, _ExecuteSQLView.createSQLExecutorView)(rightPanel);
65
+ (0, _SqlLogView.createSqlLogView)(rightPanel);
66
+ this._container.append(rightPanel);
67
+ }
68
+ }, {
69
+ key: "element",
70
+ get: function get() {
71
+ return this._container;
72
+ }
73
+ }]);
74
+ return Viewer;
75
+ }();
76
+ exports.Viewer = Viewer;
@@ -4,8 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.EditCellView = void 0;
7
- var _viewerState = require("../../viewerState");
7
+ exports.createEditCellView = createEditCellView;
8
+ var Bus = _interopRequireWildcard(require("../../bus"));
9
+ var _QueryRunner = require("../../QueryRunner");
10
+ var _state = require("../../state");
8
11
  require("./styles.css");
12
+ 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); }
13
+ 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; }
9
14
  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); }
10
15
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
16
  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); } }
@@ -13,14 +18,12 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
13
18
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
19
  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); }
15
20
  var EditCellView = /*#__PURE__*/function () {
16
- function EditCellView(viewerElem, rootEl) {
21
+ function EditCellView(rootEl) {
17
22
  var _this = this;
18
23
  _classCallCheck(this, EditCellView);
19
- this.viewerElem = viewerElem;
20
24
  this.rootEl = rootEl;
21
25
  this.buildDom();
22
- viewerElem.addEventListener('cellSelected', function (event) {
23
- var cell = event.detail;
26
+ Bus.listen('cell-selected', function (cell) {
24
27
  _this.currentCell = cell;
25
28
  _this.textArea.value = cell.value;
26
29
  _this.textArea.select();
@@ -48,27 +51,30 @@ var EditCellView = /*#__PURE__*/function () {
48
51
  key: "handleApplyEdit",
49
52
  value: function handleApplyEdit() {
50
53
  if (this.textArea.value) {
51
- var _this$queryRunner2, _this$currentCell, _this$currentCell2, _this$currentCell3;
52
- if (!_viewerState.ViewerState.instance.hasChanges) {
53
- var _this$queryRunner;
54
- (_this$queryRunner = this.queryRunner) === null || _this$queryRunner === void 0 ? void 0 : _this$queryRunner.runQuery({
54
+ var _this$currentCell, _this$currentCell2, _this$currentCell3;
55
+ if (!(0, _state.isDirty)()) {
56
+ _QueryRunner.queryRunner.runQuery({
55
57
  sql: 'SAVEPOINT "RESTOREPOINT"',
56
58
  parameters: []
57
59
  });
58
60
  }
59
- (_this$queryRunner2 = this.queryRunner) === null || _this$queryRunner2 === void 0 ? void 0 : _this$queryRunner2.runQuery({
61
+ _QueryRunner.queryRunner.runQuery({
60
62
  sql: "UPDATE ".concat((_this$currentCell = this.currentCell) === null || _this$currentCell === void 0 ? void 0 : _this$currentCell.tableName, " SET \"").concat((_this$currentCell2 = this.currentCell) === null || _this$currentCell2 === void 0 ? void 0 : _this$currentCell2.columnName, "\"=? WHERE \"_rowid_\"='").concat((_this$currentCell3 = this.currentCell) === null || _this$currentCell3 === void 0 ? void 0 : _this$currentCell3.cellRowId, "'"),
61
63
  parameters: [this.textArea.value]
62
64
  });
63
- _viewerState.ViewerState.instance.setHasChanges(true);
65
+ if (this.currentCell) {
66
+ Bus.emit('cell-edited', {
67
+ cell: this.currentCell,
68
+ value: this.textArea.value
69
+ });
70
+ }
71
+ (0, _state.setDirty)(true);
64
72
  }
65
73
  }
66
- }, {
67
- key: "setDb",
68
- value: function setDb(queryRunner) {
69
- this.queryRunner = queryRunner;
70
- }
71
74
  }]);
72
75
  return EditCellView;
73
76
  }();
74
- exports.EditCellView = EditCellView;
77
+ exports.EditCellView = EditCellView;
78
+ function createEditCellView(rootEl) {
79
+ return new EditCellView(rootEl);
80
+ }
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ExecuteSQLView = void 0;
6
+ exports.createSQLExecutorView = createSQLExecutorView;
7
+ var _QueryRunner = require("../../QueryRunner");
7
8
  require("./styles.css");
8
9
  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
10
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -39,19 +40,15 @@ var ExecuteSQLView = /*#__PURE__*/function () {
39
40
  key: "handleExecuteSql",
40
41
  value: function handleExecuteSql() {
41
42
  if (this.textArea.value) {
42
- var _this$queryRunner;
43
- (_this$queryRunner = this.queryRunner) === null || _this$queryRunner === void 0 ? void 0 : _this$queryRunner.runQuery({
43
+ _QueryRunner.queryRunner.runQuery({
44
44
  sql: this.textArea.value,
45
45
  parameters: []
46
46
  });
47
47
  }
48
48
  }
49
- }, {
50
- key: "setDb",
51
- value: function setDb(queryRunner) {
52
- this.queryRunner = queryRunner;
53
- }
54
49
  }]);
55
50
  return ExecuteSQLView;
56
51
  }();
57
- exports.ExecuteSQLView = ExecuteSQLView;
52
+ function createSQLExecutorView(rootEl) {
53
+ return new ExecuteSQLView(rootEl);
54
+ }
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ExplorerView = void 0;
7
- var _viewerState = require("../../viewerState");
7
+ exports.createExplorerView = createExplorerView;
8
+ var Bus = _interopRequireWildcard(require("../../bus"));
9
+ var _state = require("../../state");
8
10
  require("./styles.css");
11
+ 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); }
12
+ 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; }
9
13
  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); }
10
14
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
15
  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); } }
@@ -16,11 +20,15 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
16
20
  var EXPANDED_EXPLORER_ITEMS_KEY = 'expanded_explorer_items';
17
21
  var ExplorerView = /*#__PURE__*/function () {
18
22
  function ExplorerView(rootEl, viewEl) {
19
- var _localStorage$getItem;
23
+ var _this = this,
24
+ _localStorage$getItem;
20
25
  _classCallCheck(this, ExplorerView);
21
26
  _defineProperty(this, "expandedItems", {});
22
27
  _defineProperty(this, "selectedItem", null);
23
28
  _defineProperty(this, "showFullItemLabelTimeout", 0);
29
+ Bus.listen('db-found', function (table) {
30
+ _this.addDatabaseItem(table);
31
+ });
24
32
  this.dbs = [];
25
33
  this.scheduleShowFullItemLabel = this.scheduleShowFullItemLabel.bind(this);
26
34
  this.hideFullItemLabel = this.hideFullItemLabel.bind(this);
@@ -52,16 +60,16 @@ var ExplorerView = /*#__PURE__*/function () {
52
60
  }, {
53
61
  key: "buildDom",
54
62
  value: function buildDom() {
55
- var _this = this;
63
+ var _this2 = this;
56
64
  this.containerEl.innerHTML = '';
57
65
  this.dbs.forEach(function (db) {
58
- _this.buildDbGroupDom(db);
66
+ _this2.buildDbGroupDom(db);
59
67
  });
60
68
  }
61
69
  }, {
62
70
  key: "buildDbGroupDom",
63
71
  value: function buildDbGroupDom(db) {
64
- var _this2 = this;
72
+ var _this3 = this;
65
73
  var dbRoot = document.createDocumentFragment();
66
74
  var dbItem = document.createElement('div');
67
75
  this.setupCommonItemDom(dbItem);
@@ -74,7 +82,7 @@ var ExplorerView = /*#__PURE__*/function () {
74
82
  this.buildExpandArrowDom(dbItem, tablesContainer, db, isExpanded);
75
83
  dbRoot.appendChild(dbItem);
76
84
  db.tables.forEach(function (table) {
77
- _this2.buildTableDom(tablesContainer, table, db);
85
+ _this3.buildTableDom(tablesContainer, table, db);
78
86
  });
79
87
  tablesContainer.style.display = isExpanded ? 'block' : 'none';
80
88
  dbRoot.appendChild(tablesContainer);
@@ -83,7 +91,7 @@ var ExplorerView = /*#__PURE__*/function () {
83
91
  }, {
84
92
  key: "buildExpandArrowDom",
85
93
  value: function buildExpandArrowDom(itemElem, tablesContainer, db, isExpanded) {
86
- var _this3 = this;
94
+ var _this4 = this;
87
95
  var expandArrow = document.createElement('div');
88
96
  expandArrow.className = 'expand';
89
97
  expandArrow.innerHTML = '&#9656;';
@@ -92,24 +100,24 @@ var ExplorerView = /*#__PURE__*/function () {
92
100
  expandArrow.classList.add('expanded');
93
101
  }
94
102
  expandArrow.onclick = function () {
95
- _this3.expandedItems[db.filename] = !_this3.expandedItems[db.filename];
96
- tablesContainer.style.display = _this3.expandedItems[db.filename] ? 'block' : 'none';
103
+ _this4.expandedItems[db.filename] = !_this4.expandedItems[db.filename];
104
+ tablesContainer.style.display = _this4.expandedItems[db.filename] ? 'block' : 'none';
97
105
  expandArrow.classList.toggle('expanded');
98
- localStorage.setItem(EXPANDED_EXPLORER_ITEMS_KEY, JSON.stringify(_this3.expandedItems));
106
+ localStorage.setItem(EXPANDED_EXPLORER_ITEMS_KEY, JSON.stringify(_this4.expandedItems));
99
107
  };
100
108
  itemElem.appendChild(expandArrow);
101
109
  }
102
110
  }, {
103
111
  key: "buildTableDom",
104
112
  value: function buildTableDom(tablesContainer, tableName, db) {
105
- var _this4 = this,
113
+ var _this5 = this,
106
114
  _this$selectedItem,
107
115
  _this$selectedItem2;
108
116
  var tableItem = document.createElement('div');
109
117
  this.setupCommonItemDom(tableItem);
110
118
  tableItem.classList.add('table');
111
119
  tableItem.onclick = function () {
112
- _this4.selectTable(tableItem, db);
120
+ _this5.selectTable(tableItem, db);
113
121
  };
114
122
  if (((_this$selectedItem = this.selectedItem) === null || _this$selectedItem === void 0 ? void 0 : _this$selectedItem.tableName) === tableName && ((_this$selectedItem2 = this.selectedItem) === null || _this$selectedItem2 === void 0 ? void 0 : _this$selectedItem2.dbName) === db.filename) {
115
123
  this.selectedItem.tableElem = tableItem;
@@ -132,7 +140,7 @@ var ExplorerView = /*#__PURE__*/function () {
132
140
  tableElem: tableEl
133
141
  };
134
142
  var databasePath = databaseItem.filename;
135
- _viewerState.ViewerState.instance.setSelectedTable({
143
+ (0, _state.selectTable)({
136
144
  tableName: tableName,
137
145
  databasePath: databasePath
138
146
  });
@@ -156,13 +164,13 @@ var ExplorerView = /*#__PURE__*/function () {
156
164
  }, {
157
165
  key: "scheduleShowFullItemLabel",
158
166
  value: function scheduleShowFullItemLabel(event) {
159
- var _this5 = this;
167
+ var _this6 = this;
160
168
  var item = event.target;
161
169
  var label = item.querySelector('.label');
162
170
  if (label && label.offsetWidth < label.scrollWidth) {
163
171
  clearTimeout(this.showFullItemLabelTimeout);
164
172
  this.showFullItemLabelTimeout = window.setTimeout(function () {
165
- _this5.showFullItemLabel(item);
173
+ _this6.showFullItemLabel(item);
166
174
  }, 300);
167
175
  }
168
176
  }
@@ -190,4 +198,12 @@ var ExplorerView = /*#__PURE__*/function () {
190
198
  }]);
191
199
  return ExplorerView;
192
200
  }();
193
- exports.ExplorerView = ExplorerView;
201
+ exports.ExplorerView = ExplorerView;
202
+ var _explorerView;
203
+ function createExplorerView(rootEl, viewEl) {
204
+ if (!_explorerView) {
205
+ _explorerView = new ExplorerView(rootEl, viewEl);
206
+ } else {
207
+ console.warn('ExplorerView is already created');
208
+ }
209
+ }
@@ -3,8 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.initSqlLogView = initSqlLogView;
6
+ exports.createSqlLogView = createSqlLogView;
7
+ var Bus = _interopRequireWildcard(require("../../bus"));
7
8
  require("./styles.css");
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,10 +15,16 @@ 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 SqlLogView = /*#__PURE__*/function () {
15
- function SqlLogView(rootEl, queryRunner) {
18
+ function SqlLogView(rootEl) {
16
19
  var _this = this;
17
20
  _classCallCheck(this, SqlLogView);
18
- queryRunner.addListener(this.handleQueryRun.bind(this));
21
+ Bus.listen('query-run', function (query) {
22
+ if (query.errorMsg) {
23
+ _this.textArea.value += "Error while running previous query: ".concat(query.errorMsg, "\n");
24
+ } else {
25
+ _this.textArea.value += "".concat(query.sql, "\n");
26
+ }
27
+ });
19
28
  var container = document.createElement('div');
20
29
  container.id = 'sql_log_container';
21
30
  var header = document.createElement('div');
@@ -43,6 +52,6 @@ var SqlLogView = /*#__PURE__*/function () {
43
52
  }]);
44
53
  return SqlLogView;
45
54
  }();
46
- function initSqlLogView(rootEl, queryRunner) {
47
- return new SqlLogView(rootEl, queryRunner);
55
+ function createSqlLogView(rootEl) {
56
+ return new SqlLogView(rootEl);
48
57
  }
@@ -4,10 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TableView = void 0;
7
- var _viewerState = require("../../viewerState");
7
+ exports.createTableView = createTableView;
8
+ var _state = require("../../state");
9
+ var Bus = _interopRequireWildcard(require("../../bus"));
8
10
  var _ListVirtualizer = require("../../ListVirtualizer");
9
- require("./styles.css");
11
+ var _QueryRunner = require("../../QueryRunner");
10
12
  var _TableViewModel = require("./TableViewModel");
13
+ require("./styles.css");
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; }
11
16
  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); }
12
17
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
18
  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); } }
@@ -16,18 +21,33 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
16
21
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
22
  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); }
18
23
  var TableView = /*#__PURE__*/function () {
19
- function TableView(viewerElem, rootElement, queryRunner) {
24
+ function TableView(rootElement) {
20
25
  var _this = this;
21
26
  _classCallCheck(this, TableView);
22
27
  _defineProperty(this, "updateTimer", null);
23
- this.viewerElem = viewerElem;
24
28
  this.rootElement = rootElement;
25
- this.queryRunner = queryRunner;
26
29
  this.buildDomTemplate();
27
30
  this.model = new _TableViewModel.TableViewModel();
28
- this.viewerElem.addEventListener('tableSelected', function (event) {
29
- var selectedTable = event.detail;
30
- _this.setTable(selectedTable.tableName);
31
+ Bus.listen('table-selected', function (table) {
32
+ _this.setTable(table.tableName);
33
+ });
34
+ Bus.listen('query-results', function (data) {
35
+ if ((data === null || data === void 0 ? void 0 : data.label) === 'tableViewColumns') {
36
+ _this.setTableColumns(data.result.resultRows || []);
37
+ } else if ((data === null || data === void 0 ? void 0 : data.label) === 'tableView') {
38
+ _this.setTableResults(data.result.resultRows || []);
39
+ }
40
+ });
41
+ Bus.listen('cell-edited', function (_ref) {
42
+ var cell = _ref.cell,
43
+ value = _ref.value;
44
+ var row = _this.model.rows.find(function (r) {
45
+ return r.rowid === cell.cellRowId;
46
+ });
47
+ if (row) {
48
+ row[cell.columnName] = value;
49
+ _this.virtualizer.update();
50
+ }
31
51
  });
32
52
  this.virtualizer = new _ListVirtualizer.ListVirtualizer({
33
53
  width: 500,
@@ -37,19 +57,38 @@ var TableView = /*#__PURE__*/function () {
37
57
  contentRoot: this.bodyRoot,
38
58
  container: this.container,
39
59
  generatorFn: function generatorFn(i) {
40
- var _row$rowid;
41
60
  var row = _this.model.rows[i];
42
61
  if (!row) {
43
62
  return null;
44
63
  }
45
64
  var tr = document.createElement('tr');
46
- var rowId = (_row$rowid = row.rowid) !== null && _row$rowid !== void 0 ? _row$rowid : (i + 1).toString();
65
+ var rowId = row.rowid;
66
+ tr.onclick = function (event) {
67
+ var _event$target;
68
+ var element = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.parentElement;
69
+ if (element !== null && element !== void 0 && element.id) {
70
+ var _selectedTable;
71
+ var value = row[element.id];
72
+ (0, _state.selectCell)({
73
+ value: value,
74
+ cellRowId: rowId,
75
+ columnName: element.id,
76
+ tableName: ((_selectedTable = (0, _state.selectedTable)()) === null || _selectedTable === void 0 ? void 0 : _selectedTable.tableName) || ''
77
+ });
78
+ if (_this.model.selectedCell) {
79
+ _this.model.selectedCell.classList.remove('selected');
80
+ }
81
+ element.classList.add('selected');
82
+ _this.model.selectedCell = element;
83
+ }
84
+ };
47
85
  Object.keys(row).forEach(function (columnKey) {
48
86
  if (columnKey === 'rowid') {
49
87
  return;
50
88
  }
51
89
  var value = row[columnKey];
52
90
  var td = document.createElement('td');
91
+ td.id = columnKey;
53
92
  var contentEl = document.createElement('div');
54
93
  if (value !== null) {
55
94
  contentEl.innerHTML = value;
@@ -57,20 +96,6 @@ var TableView = /*#__PURE__*/function () {
57
96
  contentEl.innerHTML = 'NULL';
58
97
  contentEl.className = 'nullValue';
59
98
  }
60
- td.onclick = function () {
61
- var _ViewerState$instance;
62
- _viewerState.ViewerState.instance.setSelectedCell({
63
- value: value,
64
- cellRowId: rowId,
65
- columnName: columnKey,
66
- tableName: ((_ViewerState$instance = _viewerState.ViewerState.instance.selectedTable) === null || _ViewerState$instance === void 0 ? void 0 : _ViewerState$instance.tableName) || ''
67
- });
68
- if (_this.model.selectedCell) {
69
- _this.model.selectedCell.classList.remove('selected');
70
- }
71
- td.classList.add('selected');
72
- _this.model.selectedCell = td;
73
- };
74
99
  td.appendChild(contentEl);
75
100
  tr.appendChild(td);
76
101
  });
@@ -139,9 +164,8 @@ var TableView = /*#__PURE__*/function () {
139
164
  this.bodyRoot = table.createTBody();
140
165
  this.container.appendChild(table);
141
166
  this.rootElement.appendChild(this.container);
142
- this.viewerElem.addEventListener('dbHasChanges', function (event) {
143
- var hasChanges = event.detail;
144
- if (hasChanges) {
167
+ Bus.listen('db-dirtied', function (dirty) {
168
+ if (dirty) {
145
169
  saveBtn.removeAttribute('disabled');
146
170
  revertBtn.removeAttribute('disabled');
147
171
  } else {
@@ -202,12 +226,12 @@ var TableView = /*#__PURE__*/function () {
202
226
  value: function requestRows(refetchColumns) {
203
227
  if (refetchColumns) {
204
228
  var _sql = "PRAGMA table_info(".concat(this.model.tableName, ");");
205
- this.queryRunner.runQuery({
229
+ _QueryRunner.queryRunner.runQuery({
206
230
  sql: _sql,
207
231
  parameters: []
208
232
  }, 'tableViewColumns');
209
233
  }
210
- var sql = "SELECT \"_rowid_\",* FROM ".concat(this.model.tableName);
234
+ var sql = "SELECT \"_rowid_\" as rowid,* FROM ".concat(this.model.tableName);
211
235
  var filterSql = [];
212
236
  Object.entries(this.model.fitlers).forEach(function (filterEntry) {
213
237
  var column = filterEntry[0];
@@ -219,7 +243,7 @@ var TableView = /*#__PURE__*/function () {
219
243
  if (filterSql.length > 0) {
220
244
  sql += " WHERE ".concat(filterSql.join(' AND '), " ESCAPE '\\'");
221
245
  }
222
- this.queryRunner.runQuery({
246
+ _QueryRunner.queryRunner.runQuery({
223
247
  sql: sql,
224
248
  parameters: []
225
249
  }, 'tableView');
@@ -228,42 +252,42 @@ var TableView = /*#__PURE__*/function () {
228
252
  key: "saveChanges",
229
253
  value: function saveChanges() {
230
254
  var sql = 'RELEASE "RESTOREPOINT";';
231
- this.queryRunner.runQuery({
255
+ _QueryRunner.queryRunner.runQuery({
232
256
  sql: sql,
233
257
  parameters: []
234
258
  });
235
- _viewerState.ViewerState.instance.setHasChanges(false);
259
+ (0, _state.setDirty)(false);
236
260
  }
237
261
  }, {
238
262
  key: "revertChanges",
239
263
  value: function revertChanges() {
240
264
  var sql = 'ROLLBACK TO SAVEPOINT "RESTOREPOINT";';
241
- this.queryRunner.runQuery({
265
+ _QueryRunner.queryRunner.runQuery({
242
266
  sql: sql,
243
267
  parameters: []
244
268
  });
245
269
  this.requestRows(true);
246
- _viewerState.ViewerState.instance.setHasChanges(false);
270
+ (0, _state.setDirty)(false);
247
271
  }
248
272
  }, {
249
273
  key: "deleteTable",
250
274
  value: function deleteTable() {
251
- if (!_viewerState.ViewerState.instance.selectedTable) {
275
+ var table = (0, _state.selectedTable)();
276
+ if (!table) {
252
277
  return;
253
278
  }
254
- if (!_viewerState.ViewerState.instance.hasChanges) {
255
- var _this$queryRunner;
256
- (_this$queryRunner = this.queryRunner) === null || _this$queryRunner === void 0 ? void 0 : _this$queryRunner.runQuery({
279
+ if (!(0, _state.isDirty)()) {
280
+ _QueryRunner.queryRunner === null || _QueryRunner.queryRunner === void 0 ? void 0 : _QueryRunner.queryRunner.runQuery({
257
281
  sql: 'SAVEPOINT "RESTOREPOINT"',
258
282
  parameters: []
259
283
  });
260
284
  }
261
- var sql = "DROP TABLE \"".concat(_viewerState.ViewerState.instance.selectedTable.tableName, "\";");
262
- this.queryRunner.runQuery({
285
+ var sql = "DROP TABLE \"".concat(table.tableName, "\";");
286
+ _QueryRunner.queryRunner.runQuery({
263
287
  sql: sql,
264
288
  parameters: []
265
289
  });
266
- _viewerState.ViewerState.instance.setHasChanges(true);
290
+ (0, _state.setDirty)(true);
267
291
  }
268
292
  }, {
269
293
  key: "scheduleUpdate",
@@ -280,4 +304,12 @@ var TableView = /*#__PURE__*/function () {
280
304
  }]);
281
305
  return TableView;
282
306
  }();
283
- exports.TableView = TableView;
307
+ exports.TableView = TableView;
308
+ var _tableView;
309
+ function createTableView(rootEl) {
310
+ if (!_tableView) {
311
+ _tableView = new TableView(rootEl);
312
+ } else {
313
+ console.warn('TableView is already created');
314
+ }
315
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sqlite-wasm-viewer",
3
- "version": "1.0.13",
3
+ "version": "1.1.1",
4
4
  "description": "An SQLite OPFS database viewer that enables database inspection and SQL command execution.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {