sqlite-wasm-viewer 1.0.10 → 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.
@@ -60,7 +60,7 @@ var DbViewerWorker = /*#__PURE__*/function () {
60
60
  case 'readSchema':
61
61
  {
62
62
  var _path = message.data.path;
63
- this.dbsByPath[_path] = new this.sqlite.oo1.OpfsDb(_path, 'c');
63
+ this.dbsByPath[_path] = new this.sqlite.oo1.OpfsDb(_path, 'w');
64
64
  var sql = "SELECT name, sql FROM sqlite_master WHERE type='table' ORDER BY name";
65
65
  var result = this.dbsByPath[_path].exec({
66
66
  sql: sql,
@@ -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,21 +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 viewer = null;
20
- var dbListEl = null;
21
- var tableViewer = null;
22
- var middlePanel = null;
23
- var rightPanel = null;
24
- var explorerView = null;
25
- var queryRunner = null;
11
+ var _viewer2 = require("./viewer");
12
+ var _viewer;
26
13
  var defaultSqliteExtension = ['db', 'sqlite'];
27
14
  function defaultIsSqliteDatabase(filename) {
28
15
  return defaultSqliteExtension.some(function (ext) {
@@ -39,97 +26,15 @@ function setConfig(userConfig) {
39
26
  Object.freeze(config);
40
27
  }
41
28
  function showViewer() {
42
- if (!viewer) {
43
- viewer = document.createElement('div');
44
- viewer.id = 'viewer';
45
- (0, _viewerState.initState)(viewer);
46
- var closeBtn = document.createElement('div');
47
- closeBtn.id = 'close_btn';
48
- closeBtn.innerText = 'Close';
49
- closeBtn.onclick = function () {
29
+ if (!_viewer) {
30
+ _viewer = new _viewer2.Viewer(config, function () {
50
31
  hideViewer();
51
- };
52
- viewer.appendChild(closeBtn);
53
- dbListEl = document.createElement('div');
54
- dbListEl.id = 'db_list';
55
- viewer.appendChild(dbListEl);
56
-
57
- // Middle Panel
58
- middlePanel = document.createElement('div');
59
- middlePanel.id = 'middle_panel';
60
- var tableViewEl = document.createElement('div');
61
- tableViewEl.id = 'table_view';
62
- middlePanel.appendChild(tableViewEl);
63
- viewer.append(middlePanel);
64
-
65
- // Right Panel
66
- rightPanel = document.createElement('div');
67
- rightPanel.id = 'right_panel';
68
- var executeSqlView = new _ExecuteSQLView.ExecuteSQLView(rightPanel);
69
- var editCellView = new _EditCellView.EditCellView(viewer, rightPanel);
70
- viewer.append(rightPanel);
71
- var worker = new Worker(new URL('./DbWorker', import.meta.url), {
72
- type: 'module'
73
- });
74
- explorerView = new _ExplorerView.ExplorerView(dbListEl);
75
- var collectDbFilesPromise = (0, _dbScanner.collectDbFiles)(config.isSqliteDatabase);
76
- var dbs = {};
77
- worker.onmessage = function (message) {
78
- if (message.data.type === 'onReady') {
79
- collectDbFilesPromise.then(function (dbFiles) {
80
- dbFiles.forEach(function (dbFile) {
81
- var dbFilepath = dbFile;
82
- var dbName = dbFile;
83
- dbs[dbFilepath] = {
84
- filename: dbName,
85
- tables: []
86
- };
87
- worker.postMessage({
88
- type: 'readSchema',
89
- path: dbFile
90
- });
91
- });
92
- });
93
- } else if (message.data.type === 'onSchema') {
94
- var _explorerView;
95
- var tables = message.data.schema.map(function (tableSchema) {
96
- return tableSchema[0];
97
- });
98
- dbs[message.data.dbName].tables = tables;
99
- (_explorerView = explorerView) === null || _explorerView === void 0 ? void 0 : _explorerView.addDatabaseItem(dbs[message.data.dbName]);
100
- } else if (message.data.type === 'onQuery') {
101
- if (message.data.label === 'tableViewColumns') {
102
- var _tableViewer;
103
- (_tableViewer = tableViewer) === null || _tableViewer === void 0 ? void 0 : _tableViewer.setTableColumns(message.data.result.resultRows || []);
104
- }
105
- if (message.data.label === 'tableView') {
106
- var _tableViewer2;
107
- (_tableViewer2 = tableViewer) === null || _tableViewer2 === void 0 ? void 0 : _tableViewer2.setTableResults(message.data.result.resultRows || []);
108
- }
109
- }
110
- };
111
- var db = {
112
- post: function post(message) {
113
- worker.postMessage(message);
114
- },
115
- on: function on(message) {
116
- var _worker$onmessage;
117
- (_worker$onmessage = worker.onmessage) === null || _worker$onmessage === void 0 ? void 0 : _worker$onmessage.call(worker, message);
118
- }
119
- };
120
- queryRunner = new _QueryRunner.QueryRunner(db);
121
- (0, _SqlLogView.initSqlLogView)(rightPanel, queryRunner);
122
- tableViewer = new _TableView.TableView(viewer, tableViewEl, queryRunner);
123
- executeSqlView.setDb(queryRunner);
124
- editCellView.setDb(queryRunner);
125
- worker.postMessage({
126
- type: 'init'
127
32
  });
128
33
  }
129
- document.body.appendChild(viewer);
34
+ document.body.appendChild(_viewer.element);
130
35
  }
131
36
  function hideViewer() {
132
- if (viewer) {
133
- document.body.removeChild(viewer);
37
+ if (_viewer) {
38
+ document.body.removeChild(_viewer.element);
134
39
  }
135
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/styles.css CHANGED
@@ -8,7 +8,6 @@
8
8
  display: flex;
9
9
  padding: 10px;
10
10
  padding-top: 20px;
11
- gap: 8px;
12
11
  }
13
12
 
14
13
  #viewer * {
@@ -18,6 +17,7 @@
18
17
  #viewer .viewHeader {
19
18
  max-height: 20px;
20
19
  flex-basis: 20px;
20
+ flex-shrink: 0;
21
21
  line-height: 1.1rem;
22
22
  padding: 8px;
23
23
  display: flex;
@@ -34,7 +34,10 @@
34
34
  }
35
35
 
36
36
  #viewer #db_list {
37
- width: 200px;
37
+ width: 300px;
38
+ min-width: 180px;
39
+ max-width: 750px;
40
+ flex: 0 0 auto;
38
41
  padding: 5px;
39
42
  background-color: darkgray;
40
43
  display: flex;
@@ -56,9 +59,12 @@
56
59
  }
57
60
 
58
61
  #viewer #right_panel {
62
+ width: 300px;
63
+ min-width: 180px;
64
+ max-width: 500px;
65
+ flex: 0 0 auto;
59
66
  padding: 5px;
60
67
  background-color: darkgray;
61
- flex: 1;
62
68
  display: flex;
63
69
  flex-direction: column;
64
70
  gap: 5px;
@@ -67,3 +73,21 @@
67
73
  #viewer #right_panel > div {
68
74
  height: 33.33%;
69
75
  }
76
+
77
+ #viewer .resizeDragHandler {
78
+ width: 8px;
79
+ flex-shrink: 0;
80
+ cursor: col-resize;
81
+ }
82
+
83
+ #viewer .resizeDragHandler:hover::after {
84
+ border: 2px solid gray;
85
+ border-radius: 2px;
86
+ content: '';
87
+ display: block;
88
+ height: 80%;
89
+ margin: 0 auto;
90
+ position: relative;
91
+ top: 10%;
92
+ width: 0;
93
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createResizeHandler = createResizeHandler;
7
+ function createResizeHandler(leftEl, rightEl, resizeLeft, containerEl) {
8
+ var isDragging = false;
9
+ var initialWidth = 0;
10
+ var initialXPos = 0;
11
+ var lastWidth;
12
+ var controlledEl = resizeLeft ? leftEl : rightEl;
13
+ var storageWidthKey = "sqlite-wasm-viewer_".concat(controlledEl.id);
14
+ var resizeHandlerEl = document.createElement('div');
15
+ resizeHandlerEl.className = 'resizeDragHandler';
16
+ var storedWidthStr = localStorage.getItem(storageWidthKey);
17
+ if (storedWidthStr) {
18
+ controlledEl.style.width = "".concat(+storedWidthStr, "px");
19
+ }
20
+ resizeHandlerEl.addEventListener('dblclick', function () {
21
+ controlledEl.style.width = '';
22
+ localStorage.removeItem(storageWidthKey);
23
+ });
24
+ resizeHandlerEl.addEventListener('mousedown', function (event) {
25
+ isDragging = true;
26
+ containerEl.style.userSelect = 'none';
27
+ initialXPos = event.x;
28
+ initialWidth = controlledEl.offsetWidth;
29
+ lastWidth = undefined;
30
+ });
31
+ document.addEventListener('mousemove', function (event) {
32
+ if (isDragging) {
33
+ event.preventDefault();
34
+ event.stopPropagation();
35
+ var newWidth = resizeLeft ? initialWidth - initialXPos + event.clientX : initialWidth + initialXPos - event.clientX;
36
+ lastWidth = Math.max(newWidth, 0);
37
+ controlledEl.style.width = "".concat(lastWidth, "px");
38
+ }
39
+ });
40
+ document.addEventListener('mouseup', function () {
41
+ isDragging = false;
42
+ containerEl.style.userSelect = 'auto';
43
+ if (lastWidth) {
44
+ localStorage.setItem(storageWidthKey, lastWidth.toString());
45
+ }
46
+ });
47
+ return resizeHandlerEl;
48
+ }
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
+ }