sqlite-wasm-viewer 1.0.9 → 1.0.13
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/dist/DbViewerWorker.js +1 -1
- package/dist/index.js +8 -1
- package/dist/styles.css +27 -3
- package/dist/utils/resizeHandler.js +48 -0
- package/dist/views/ExplorerView/ExplorerView.js +66 -10
- package/dist/views/ExplorerView/styles.css +30 -11
- package/dist/views/TableView/TableView.js +35 -8
- package/dist/views/TableView/styles.css +6 -4
- package/package.json +2 -2
package/dist/DbViewerWorker.js
CHANGED
|
@@ -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, '
|
|
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,
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var _ExplorerView = require("./views/ExplorerView/ExplorerView");
|
|
|
16
16
|
var _dbScanner = require("./dbScanner");
|
|
17
17
|
var _EditCellView = require("./views/EditCellView/EditCellView");
|
|
18
18
|
var _viewerState = require("./viewerState");
|
|
19
|
+
var _resizeHandler = require("./utils/resizeHandler");
|
|
19
20
|
var viewer = null;
|
|
20
21
|
var dbListEl = null;
|
|
21
22
|
var tableViewer = null;
|
|
@@ -50,6 +51,8 @@ function showViewer() {
|
|
|
50
51
|
hideViewer();
|
|
51
52
|
};
|
|
52
53
|
viewer.appendChild(closeBtn);
|
|
54
|
+
|
|
55
|
+
// Left Panel
|
|
53
56
|
dbListEl = document.createElement('div');
|
|
54
57
|
dbListEl.id = 'db_list';
|
|
55
58
|
viewer.appendChild(dbListEl);
|
|
@@ -57,6 +60,8 @@ function showViewer() {
|
|
|
57
60
|
// Middle Panel
|
|
58
61
|
middlePanel = document.createElement('div');
|
|
59
62
|
middlePanel.id = 'middle_panel';
|
|
63
|
+
var listResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(dbListEl, middlePanel, true, viewer);
|
|
64
|
+
viewer.appendChild(listResizeHandlerEl);
|
|
60
65
|
var tableViewEl = document.createElement('div');
|
|
61
66
|
tableViewEl.id = 'table_view';
|
|
62
67
|
middlePanel.appendChild(tableViewEl);
|
|
@@ -67,11 +72,13 @@ function showViewer() {
|
|
|
67
72
|
rightPanel.id = 'right_panel';
|
|
68
73
|
var executeSqlView = new _ExecuteSQLView.ExecuteSQLView(rightPanel);
|
|
69
74
|
var editCellView = new _EditCellView.EditCellView(viewer, rightPanel);
|
|
75
|
+
var rightPanelResizeHandlerEl = (0, _resizeHandler.createResizeHandler)(middlePanel, rightPanel, false, viewer);
|
|
76
|
+
viewer.appendChild(rightPanelResizeHandlerEl);
|
|
70
77
|
viewer.append(rightPanel);
|
|
71
78
|
var worker = new Worker(new URL('./DbWorker', import.meta.url), {
|
|
72
79
|
type: 'module'
|
|
73
80
|
});
|
|
74
|
-
explorerView = new _ExplorerView.ExplorerView(dbListEl);
|
|
81
|
+
explorerView = new _ExplorerView.ExplorerView(dbListEl, viewer);
|
|
75
82
|
var collectDbFilesPromise = (0, _dbScanner.collectDbFiles)(config.isSqliteDatabase);
|
|
76
83
|
var dbs = {};
|
|
77
84
|
worker.onmessage = function (message) {
|
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:
|
|
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
|
+
}
|
|
@@ -15,12 +15,15 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
15
15
|
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); }
|
|
16
16
|
var EXPANDED_EXPLORER_ITEMS_KEY = 'expanded_explorer_items';
|
|
17
17
|
var ExplorerView = /*#__PURE__*/function () {
|
|
18
|
-
function ExplorerView(rootEl) {
|
|
18
|
+
function ExplorerView(rootEl, viewEl) {
|
|
19
19
|
var _localStorage$getItem;
|
|
20
20
|
_classCallCheck(this, ExplorerView);
|
|
21
21
|
_defineProperty(this, "expandedItems", {});
|
|
22
22
|
_defineProperty(this, "selectedItem", null);
|
|
23
|
+
_defineProperty(this, "showFullItemLabelTimeout", 0);
|
|
23
24
|
this.dbs = [];
|
|
25
|
+
this.scheduleShowFullItemLabel = this.scheduleShowFullItemLabel.bind(this);
|
|
26
|
+
this.hideFullItemLabel = this.hideFullItemLabel.bind(this);
|
|
24
27
|
var dbListHeader = document.createElement('div');
|
|
25
28
|
dbListHeader.className = 'viewHeader';
|
|
26
29
|
dbListHeader.innerText = 'Database List';
|
|
@@ -29,6 +32,10 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
29
32
|
this.containerEl.id = 'explorer_tree';
|
|
30
33
|
rootEl.appendChild(this.containerEl);
|
|
31
34
|
this.expandedItems = JSON.parse((_localStorage$getItem = localStorage.getItem(EXPANDED_EXPLORER_ITEMS_KEY)) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : '{}');
|
|
35
|
+
this.fullItemLabelEl = document.createElement('div');
|
|
36
|
+
this.fullItemLabelEl.id = 'full_label';
|
|
37
|
+
this.fullItemLabelEl.style.display = 'none';
|
|
38
|
+
viewEl.appendChild(this.fullItemLabelEl);
|
|
32
39
|
}
|
|
33
40
|
_createClass(ExplorerView, [{
|
|
34
41
|
key: "addDatabaseItem",
|
|
@@ -57,8 +64,11 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
57
64
|
var _this2 = this;
|
|
58
65
|
var dbRoot = document.createDocumentFragment();
|
|
59
66
|
var dbItem = document.createElement('div');
|
|
60
|
-
dbItem
|
|
61
|
-
dbItem
|
|
67
|
+
this.setupCommonItemDom(dbItem);
|
|
68
|
+
this.setupLabelDom(dbItem, db.filename);
|
|
69
|
+
dbItem.classList.add('db');
|
|
70
|
+
dbItem.addEventListener('mouseenter', this.scheduleShowFullItemLabel);
|
|
71
|
+
dbItem.addEventListener('mouseleave', this.hideFullItemLabel);
|
|
62
72
|
var tablesContainer = document.createElement('div');
|
|
63
73
|
var isExpanded = !(this.expandedItems[db.filename] === false);
|
|
64
74
|
this.buildExpandArrowDom(dbItem, tablesContainer, db, isExpanded);
|
|
@@ -76,15 +86,13 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
76
86
|
var _this3 = this;
|
|
77
87
|
var expandArrow = document.createElement('div');
|
|
78
88
|
expandArrow.className = 'expand';
|
|
79
|
-
expandArrow.
|
|
89
|
+
expandArrow.innerHTML = '▸';
|
|
80
90
|
expandArrow.style.cursor = 'pointer';
|
|
81
91
|
if (isExpanded) {
|
|
82
92
|
expandArrow.classList.add('expanded');
|
|
83
93
|
}
|
|
84
94
|
expandArrow.onclick = function () {
|
|
85
95
|
_this3.expandedItems[db.filename] = !_this3.expandedItems[db.filename];
|
|
86
|
-
|
|
87
|
-
// eslint-disable-next-line no-param-reassign
|
|
88
96
|
tablesContainer.style.display = _this3.expandedItems[db.filename] ? 'block' : 'none';
|
|
89
97
|
expandArrow.classList.toggle('expanded');
|
|
90
98
|
localStorage.setItem(EXPANDED_EXPLORER_ITEMS_KEY, JSON.stringify(_this3.expandedItems));
|
|
@@ -98,7 +106,8 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
98
106
|
_this$selectedItem,
|
|
99
107
|
_this$selectedItem2;
|
|
100
108
|
var tableItem = document.createElement('div');
|
|
101
|
-
tableItem
|
|
109
|
+
this.setupCommonItemDom(tableItem);
|
|
110
|
+
tableItem.classList.add('table');
|
|
102
111
|
tableItem.onclick = function () {
|
|
103
112
|
_this4.selectTable(tableItem, db);
|
|
104
113
|
};
|
|
@@ -106,9 +115,7 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
106
115
|
this.selectedItem.tableElem = tableItem;
|
|
107
116
|
tableItem.classList.add('selected');
|
|
108
117
|
}
|
|
109
|
-
|
|
110
|
-
tableItemInner.innerText = tableName;
|
|
111
|
-
tableItem.appendChild(tableItemInner);
|
|
118
|
+
this.setupLabelDom(tableItem, tableName);
|
|
112
119
|
tablesContainer.appendChild(tableItem);
|
|
113
120
|
}
|
|
114
121
|
}, {
|
|
@@ -131,6 +138,55 @@ var ExplorerView = /*#__PURE__*/function () {
|
|
|
131
138
|
});
|
|
132
139
|
}
|
|
133
140
|
}
|
|
141
|
+
}, {
|
|
142
|
+
key: "setupCommonItemDom",
|
|
143
|
+
value: function setupCommonItemDom(item) {
|
|
144
|
+
item.classList.add('item');
|
|
145
|
+
item.addEventListener('mouseenter', this.scheduleShowFullItemLabel);
|
|
146
|
+
item.addEventListener('mouseleave', this.hideFullItemLabel);
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
key: "setupLabelDom",
|
|
150
|
+
value: function setupLabelDom(item, text) {
|
|
151
|
+
var label = document.createElement('div');
|
|
152
|
+
label.className = 'label';
|
|
153
|
+
label.innerText = text;
|
|
154
|
+
item.appendChild(label);
|
|
155
|
+
}
|
|
156
|
+
}, {
|
|
157
|
+
key: "scheduleShowFullItemLabel",
|
|
158
|
+
value: function scheduleShowFullItemLabel(event) {
|
|
159
|
+
var _this5 = this;
|
|
160
|
+
var item = event.target;
|
|
161
|
+
var label = item.querySelector('.label');
|
|
162
|
+
if (label && label.offsetWidth < label.scrollWidth) {
|
|
163
|
+
clearTimeout(this.showFullItemLabelTimeout);
|
|
164
|
+
this.showFullItemLabelTimeout = window.setTimeout(function () {
|
|
165
|
+
_this5.showFullItemLabel(item);
|
|
166
|
+
}, 300);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}, {
|
|
170
|
+
key: "hideFullItemLabel",
|
|
171
|
+
value: function hideFullItemLabel() {
|
|
172
|
+
clearTimeout(this.showFullItemLabelTimeout);
|
|
173
|
+
this.fullItemLabelEl.style.display = 'none';
|
|
174
|
+
}
|
|
175
|
+
}, {
|
|
176
|
+
key: "showFullItemLabel",
|
|
177
|
+
value: function showFullItemLabel(item) {
|
|
178
|
+
var _item$getBoundingClie = item.getBoundingClientRect(),
|
|
179
|
+
left = _item$getBoundingClie.left,
|
|
180
|
+
top = _item$getBoundingClie.top;
|
|
181
|
+
this.fullItemLabelEl.style.display = 'block';
|
|
182
|
+
this.fullItemLabelEl.style.left = "".concat(left - 1, "px");
|
|
183
|
+
this.fullItemLabelEl.style.top = "".concat(top - 1, "px");
|
|
184
|
+
this.fullItemLabelEl.style.backgroundColor = window.getComputedStyle(item).backgroundColor;
|
|
185
|
+
var labelNode = item.querySelector('.label').childNodes[0];
|
|
186
|
+
if (labelNode.nodeType === Node.TEXT_NODE) {
|
|
187
|
+
this.fullItemLabelEl.innerText = labelNode.textContent || '';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
134
190
|
}]);
|
|
135
191
|
return ExplorerView;
|
|
136
192
|
}();
|
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
#explorer_tree {
|
|
2
2
|
padding: 8px;
|
|
3
3
|
padding-left: 20px;
|
|
4
|
-
overflow-x: clip;
|
|
5
4
|
overflow-y: auto;
|
|
6
5
|
scrollbar-gutter: stable;
|
|
7
6
|
}
|
|
8
7
|
|
|
8
|
+
#explorer_tree .item {
|
|
9
|
+
height: 20px;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
text-overflow: ellipsis;
|
|
12
|
+
background-color: darkgray;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
#explorer_tree .item > .label {
|
|
16
|
+
padding: 2px 4px;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
text-overflow: ellipsis;
|
|
19
|
+
}
|
|
20
|
+
|
|
9
21
|
#explorer_tree > .db {
|
|
10
22
|
position: relative;
|
|
11
|
-
text-overflow: ellipsis;
|
|
12
|
-
overflow-y: clip;
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
#explorer_tree .expand {
|
|
16
26
|
position: absolute;
|
|
17
|
-
top:
|
|
18
|
-
left: -
|
|
27
|
+
top: 1px;
|
|
28
|
+
left: -20px;
|
|
29
|
+
width: 20px;
|
|
30
|
+
height: 20px;
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
19
34
|
transition: all .1s ease-in;
|
|
20
35
|
}
|
|
21
36
|
|
|
@@ -25,15 +40,19 @@
|
|
|
25
40
|
|
|
26
41
|
#explorer_tree .table {
|
|
27
42
|
margin-left: 20px;
|
|
28
|
-
height: 20px;
|
|
29
43
|
cursor: pointer;
|
|
30
44
|
}
|
|
31
45
|
|
|
32
|
-
#explorer_tree .table > div {
|
|
33
|
-
text-overflow: ellipsis;
|
|
34
|
-
overflow-x: hidden;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
46
|
#explorer_tree .table.selected {
|
|
38
47
|
background-color: rgb(128, 128, 128);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#viewer #full_label {
|
|
51
|
+
position: absolute;
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
z-index: 99999;
|
|
54
|
+
border: 1px solid gray;
|
|
55
|
+
background-color: darkgray;
|
|
56
|
+
padding: 2px 4px;
|
|
57
|
+
border-radius: 2px;
|
|
39
58
|
}
|
|
@@ -123,6 +123,12 @@ var TableView = /*#__PURE__*/function () {
|
|
|
123
123
|
};
|
|
124
124
|
revertBtn.setAttribute('disabled', '');
|
|
125
125
|
this.viewHeader.appendChild(revertBtn);
|
|
126
|
+
var dropTableBtn = document.createElement('button');
|
|
127
|
+
dropTableBtn.innerText = 'Delete table';
|
|
128
|
+
dropTableBtn.onclick = function () {
|
|
129
|
+
_this2.deleteTable();
|
|
130
|
+
};
|
|
131
|
+
this.viewHeader.appendChild(dropTableBtn);
|
|
126
132
|
this.rootElement.appendChild(this.viewHeader);
|
|
127
133
|
this.container = document.createElement('div');
|
|
128
134
|
this.container.id = 'table_container';
|
|
@@ -158,23 +164,24 @@ var TableView = /*#__PURE__*/function () {
|
|
|
158
164
|
columnHeader.innerHTML = column;
|
|
159
165
|
var filterFieldCell = document.createElement('th');
|
|
160
166
|
filterFieldCell.className = 'columnFilterCell';
|
|
161
|
-
var
|
|
167
|
+
var filterInput = document.createElement('input');
|
|
162
168
|
if (_this3.model.fitlers[column]) {
|
|
163
|
-
|
|
169
|
+
filterInput.value = _this3.model.fitlers[column];
|
|
164
170
|
}
|
|
165
|
-
|
|
171
|
+
filterInput.onkeydown = function (event) {
|
|
166
172
|
if (event.key === 'Escape') {
|
|
167
|
-
|
|
173
|
+
filterInput.value = '';
|
|
168
174
|
_this3.model.fitlers[column] = '';
|
|
169
175
|
_this3.scheduleUpdate();
|
|
170
176
|
}
|
|
171
177
|
};
|
|
172
|
-
|
|
173
|
-
_this3.model.fitlers[column] =
|
|
178
|
+
filterInput.oninput = function () {
|
|
179
|
+
_this3.model.fitlers[column] = filterInput.value;
|
|
174
180
|
_this3.scheduleUpdate();
|
|
175
181
|
};
|
|
176
|
-
|
|
177
|
-
|
|
182
|
+
filterInput.onmouseover = function () {};
|
|
183
|
+
filterInput.placeholder = 'Filter';
|
|
184
|
+
filterFieldCell.appendChild(filterInput);
|
|
178
185
|
_this3.headerRow.appendChild(columnHeader);
|
|
179
186
|
columnHeader.appendChild(filterFieldCell);
|
|
180
187
|
});
|
|
@@ -238,6 +245,26 @@ var TableView = /*#__PURE__*/function () {
|
|
|
238
245
|
this.requestRows(true);
|
|
239
246
|
_viewerState.ViewerState.instance.setHasChanges(false);
|
|
240
247
|
}
|
|
248
|
+
}, {
|
|
249
|
+
key: "deleteTable",
|
|
250
|
+
value: function deleteTable() {
|
|
251
|
+
if (!_viewerState.ViewerState.instance.selectedTable) {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
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({
|
|
257
|
+
sql: 'SAVEPOINT "RESTOREPOINT"',
|
|
258
|
+
parameters: []
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
var sql = "DROP TABLE \"".concat(_viewerState.ViewerState.instance.selectedTable.tableName, "\";");
|
|
262
|
+
this.queryRunner.runQuery({
|
|
263
|
+
sql: sql,
|
|
264
|
+
parameters: []
|
|
265
|
+
});
|
|
266
|
+
_viewerState.ViewerState.instance.setHasChanges(true);
|
|
267
|
+
}
|
|
241
268
|
}, {
|
|
242
269
|
key: "scheduleUpdate",
|
|
243
270
|
value: function scheduleUpdate() {
|
|
@@ -54,6 +54,10 @@
|
|
|
54
54
|
padding-top: 5px;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
#table_container .columnFilterCell input {
|
|
58
|
+
width: calc(100% - 8px);
|
|
59
|
+
}
|
|
60
|
+
|
|
57
61
|
#table_container td, #table_container .columnHeaderCell {
|
|
58
62
|
border: 1px solid lightgray;
|
|
59
63
|
}
|
|
@@ -66,14 +70,12 @@
|
|
|
66
70
|
#table_container td div {
|
|
67
71
|
height: 40px;
|
|
68
72
|
box-sizing: border-box;
|
|
69
|
-
display: -webkit-box;
|
|
70
73
|
padding: 4px;
|
|
71
74
|
text-overflow: ellipsis;
|
|
72
75
|
overflow: hidden;
|
|
73
76
|
white-space: pre;
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
line-height: 1.2em;
|
|
77
|
+
font-size: 15px;
|
|
78
|
+
line-height: 1.1em;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
#table_container .nullValue {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sqlite-wasm-viewer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
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": {
|
|
@@ -52,4 +52,4 @@
|
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@sqlite.org/sqlite-wasm": "^3.x.x"
|
|
54
54
|
}
|
|
55
|
-
}
|
|
55
|
+
}
|