@perspective-dev/workspace 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,7 +24,7 @@ import type {
24
24
  } from "@perspective-dev/viewer";
25
25
  import type * as psp from "@perspective-dev/client";
26
26
  import type * as psp_viewer from "@perspective-dev/viewer";
27
- import injectedStyles from "../../../build/css/injected.css";
27
+ import injectedStyles from "../../../dist/css/injected.css";
28
28
  import { PerspectiveDockPanel } from "./dockpanel";
29
29
  import { WorkspaceMenu } from "./menu";
30
30
  import { createCommands } from "./commands";
@@ -683,20 +683,23 @@ export class PerspectiveWorkspace extends SplitPanel {
683
683
 
684
684
  async _filterViewer(
685
685
  viewer: HTMLPerspectiveViewerElement,
686
- filters: [string, string, string][],
686
+ removeFilters: psp.Filter[],
687
+ insertFilters: psp.Filter[],
687
688
  candidates: Set<string>,
688
689
  ) {
689
690
  const config = await viewer.save();
690
691
  const table = await viewer.getTable();
691
692
  const availableColumns = Object.keys(await table.schema());
692
693
  const currentFilters = config.filter || [];
693
- const columnAvailable = (filter: [string, string, any]) =>
694
+ const columnAvailable = (filter: psp.Filter) =>
694
695
  filter[0] && availableColumns.includes(filter[0]);
695
696
 
696
- const validFilters = filters.filter(columnAvailable);
697
+ const clearColumns = new Set<string>(removeFilters.map((f) => f[0]));
698
+ const validFilters = insertFilters.filter(columnAvailable);
697
699
  validFilters.push(
698
700
  ...currentFilters.filter(
699
- (x: [string, ..._: string[]]) => !candidates.has(x[0]),
701
+ (x: [string, ..._: string[]]) =>
702
+ !candidates.has(x[0]) && !clearColumns.has(x[0]),
700
703
  ),
701
704
  );
702
705
 
@@ -712,14 +715,21 @@ export class PerspectiveWorkspace extends SplitPanel {
712
715
  const candidates = new Set([
713
716
  ...(config["group_by"] || []),
714
717
  ...(config["split_by"] || []),
715
- ...(config.filter || []).map((x: [string, string, any]) => x[0]),
718
+ ...(config.filter || []).map((x: psp.Filter) => x[0]),
716
719
  ]);
717
720
 
718
- const filters = [...event.detail.config.filter];
721
+ const removeFilters = (
722
+ (event.detail.removeConfigs ?? []) as psp.ViewConfigUpdate[]
723
+ ).flatMap((x) => x.filter ?? []);
724
+ const insertFilters = (
725
+ (event.detail.insertConfigs ?? []) as psp.ViewConfigUpdate[]
726
+ ).flatMap((x) => x.filter ?? []);
727
+
719
728
  toArray(this.dockpanel.widgets()).forEach((widget) => {
720
729
  this._filterViewer(
721
730
  (widget as PerspectiveViewerWidget).viewer,
722
- filters,
731
+ removeFilters,
732
+ insertFilters,
723
733
  candidates,
724
734
  );
725
735
  });
@@ -1,105 +0,0 @@
1
- // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
- // ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
- // ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
- // ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
- // ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
- // ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
- // ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
- // ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
- // ┃ This file is part of the Perspective library, distributed under the terms ┃
10
- // ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
- // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
-
13
- .lm-DockPanel {
14
- overflow: var(--dock-panel--overflow, hidden);
15
- position: absolute;
16
- background-color: var(--detail--background-color, transparent);
17
- padding: var(--workspace-spacing);
18
- top: 0;
19
- left: 0;
20
- right: 0;
21
- bottom: 0;
22
- &[data-mode="single-document"] {
23
- padding: 0px;
24
- }
25
- }
26
-
27
- .lm-Widget,
28
- .lm-Widget {
29
- cursor: inherit;
30
- }
31
-
32
- .lm-DockPanel.ew,
33
- .lm-DockPanel.ew .lm-Widget,
34
- .lm-SplitPanel.ew,
35
- .lm-SplitPanel.ew .lm-Widget {
36
- cursor: ew-resize !important;
37
- }
38
-
39
- .lm-DockPanel.ns,
40
- .lm-DockPanel.ns .lm-Widget,
41
- .lm-SplitPanel.ns,
42
- .lm-SplitPanel.ns .lm-Widget {
43
- cursor: ns-resize !important;
44
- }
45
-
46
- .workspace-master-widget {
47
- min-width: 100px !important;
48
- }
49
-
50
- .lm-DockPanel.resizing ::slotted(perspective-viewer),
51
- .lm-SplitPanel.resizing ::slotted(perspective-viewer) {
52
- pointer-events: none;
53
- }
54
-
55
- .widget-blur ::slotted(perspective-viewer) {
56
- opacity: 0.5;
57
- }
58
-
59
- .lm-DockPanel-handle.resizing {
60
- background-color: rgba(0, 0, 0, 0.05);
61
- }
62
-
63
- .perspective-scroll-panel {
64
- overflow: auto !important;
65
- }
66
-
67
- .lm-Panel {
68
- min-height: 100%;
69
- }
70
-
71
- .lm-DockPanel-handle {
72
- background-color: none;
73
- }
74
-
75
- .lm-SplitPanel-handle {
76
- background-color: var(--workspace-split-panel-handle--background-color);
77
- }
78
-
79
- .lm-SplitPanel-handle,
80
- .lm-DockPanel-handle {
81
- transition: background-color 0.3s ease-out;
82
- &:hover {
83
- background-color: rgba(0, 0, 0, 0.05);
84
- }
85
- }
86
-
87
- .lm-DockPanel-handle[data-orientation="horizontal"] {
88
- width: 10px !important;
89
- margin-left: -5px;
90
- }
91
-
92
- .lm-DockPanel-handle[data-orientation="vertical"] {
93
- height: 10px !important;
94
- margin-top: -5px;
95
- }
96
-
97
- .lm-DockPanel-overlay {
98
- background: rgba(75, 75, 75, 0.2);
99
- border: 1px dashed #666;
100
- border-radius: 6px;
101
- transition-property: top, left, right, bottom;
102
- transition-duration: 50ms;
103
- transition-timing-function: linear;
104
- margin: 0px;
105
- }
@@ -1,128 +0,0 @@
1
- // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
- // ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
- // ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
- // ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
- // ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
- // ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
- // ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
- // ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
- // ┃ This file is part of the Perspective library, distributed under the terms ┃
10
- // ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
- // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
-
13
- @import "@lumino/widgets/style/menu.css";
14
-
15
- .lm-Menu {
16
- font-size: 12px;
17
- padding: 8px;
18
- background-color: var(--plugin--background);
19
- color: var(--icon--color);
20
- border: 1px solid var(--inactive--color);
21
- border-radius: 3px;
22
- max-width: 350px;
23
- top: 0;
24
- left: 0;
25
- }
26
-
27
- .lm-Menu.perspective-workspace-menu {
28
- .lm-Menu-item {
29
- padding-left: 37px !important;
30
- min-width: var(--min-width);
31
- }
32
- }
33
-
34
- .lm-Menu-item.lm-mod-active {
35
- background-color: var(--icon--color);
36
- color: var(--plugin--background);
37
- }
38
-
39
- .lm-Menu-item.lm-mod-disabled {
40
- opacity: 0.5;
41
- }
42
-
43
- .lm-Menu-itemIcon {
44
- width: 24px;
45
- height: 12px;
46
- margin-right: 4px;
47
- }
48
-
49
- .lm-Menu-itemLabel {
50
- flex: 1 1;
51
- padding: 4px 2px 4px 2px;
52
- }
53
-
54
- .lm-Menu-itemMnemonic {
55
- text-decoration: underline;
56
- }
57
-
58
- .lm-Menu-itemShortcut {
59
- padding: 4px 0px;
60
- }
61
-
62
- .lm-Menu-itemSubmenuIcon {
63
- width: 24px;
64
- height: 18px;
65
- }
66
-
67
- .lm-Menu-item {
68
- display: flex;
69
- align-items: center;
70
- outline: none;
71
-
72
- margin: 0 -8px;
73
- padding: 0 8px;
74
- }
75
-
76
- .lm-Menu-item[data-type="separator"] > div {
77
- padding: 0;
78
- height: 9px;
79
- }
80
-
81
- .lm-Menu-item[data-type="separator"] > div::after {
82
- content: "";
83
- display: block;
84
- position: relative;
85
- top: 4px;
86
- border-top: 1px solid;
87
- }
88
-
89
- .lm-MenuBar-menu {
90
- transform: translateY(-1px);
91
- }
92
-
93
- .lm-MenuBar-item {
94
- padding: 10px 32px;
95
- border-left: 1px solid transparent;
96
- border-right: 1px solid transparent;
97
- color: #737373 !important;
98
- }
99
-
100
- .lm-MenuBar-item.lm-mod-active {
101
- background: rgba(0, 0, 0, 0.2);
102
- }
103
-
104
- .lm-MenuBar.lm-mod-active .lm-MenuBar-item.lm-mod-active {
105
- z-index: 10001;
106
- background: rgba(0, 0, 0, 0.2);
107
- // border-left: 1px solid #c0c0c0;
108
- // border-right: 1px solid #c0c0c0;
109
- }
110
-
111
- .lm-Menu-itemIcon:before {
112
- content: attr(content);
113
- font-family:
114
- "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas",
115
- "Liberation Mono", monospace;
116
- }
117
-
118
- [data-type="submenu"] .lm-Menu-itemSubmenuIcon:before {
119
- content: ">";
120
- font-family:
121
- "ui-monospace", "SFMono-Regular", "SF Mono", "Menlo", "Consolas",
122
- "Liberation Mono", monospace;
123
- height: 18px;
124
- }
125
-
126
- .lm-mod-drag-image.lm-TabBar-tab {
127
- display: none;
128
- }
@@ -1,389 +0,0 @@
1
- // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
- // ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
- // ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
- // ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
- // ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
- // ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
- // ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
- // ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
- // ┃ This file is part of the Perspective library, distributed under the terms ┃
10
- // ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
- // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
-
13
- .lm-TabBar-tabLabel {
14
- background-color: transparent;
15
- border: none;
16
- color: var(--icon--color, #666);
17
- cursor: pointer;
18
- padding: 0px 6px;
19
- margin: 0;
20
- margin-left: 15.5px;
21
- margin-right: auto;
22
- flex: 0 1 auto;
23
- border-radius: 3px;
24
- &:hover {
25
- background-color: var(--icon--color);
26
- color: var(--plugin--background);
27
- }
28
- }
29
-
30
- // .p-TabBar-tabLabel[value="[untitled]"] {
31
- // color: #ddd !important;
32
- // }
33
-
34
- .lm-TabBar-tabLabel:focus {
35
- outline: none;
36
- color: var(--workspace-secondary--color, #666) !important;
37
- cursor: text;
38
- }
39
-
40
- .lm-TabBar-tab.lm-mod-closable > .lm-TabBar-tabCloseIcon:before {
41
- content: var(--close-button--content, "\2715");
42
- }
43
-
44
- .lm-TabBar-tab > .lm-TabBar-tabConfigIcon:before {
45
- content: var(--open-settings-button--content, "\1F527");
46
- font-family: var(--settings--font-family, "Arial");
47
- transition: color 0.5s ease;
48
- }
49
-
50
- .lm-TabBar-tab.lm-mod-current.settings_open > .lm-TabBar-tabConfigIcon:before {
51
- content: var(--close-settings-button--content, "\1F527");
52
- }
53
-
54
- .lm-TabBar-tab.lm-mod-current.linked > .lm-TabBar-tabConfigIcon:before {
55
- color: #22a0ce;
56
- }
57
-
58
- .lm-TabBar-tab > .lm-TabBar-tabConfigIcon {
59
- opacity: 0;
60
- pointer-events: none;
61
- }
62
-
63
- .lm-TabBar-tab.lm-mod-current > .lm-TabBar-tabConfigIcon {
64
- opacity: 1;
65
- pointer-events: all;
66
- }
67
-
68
- .lm-mod-current {
69
- .lm-TabBar-tabConfigIcon,
70
- .lm-TabBar-tabCloseIcon {
71
- color: inherit;
72
- transition: color 0.2s ease-out;
73
- }
74
-
75
- .lm-TabBar-tabConfigIcon:hover,
76
- .lm-TabBar-tabCloseIcon:hover {
77
- color: #1a7da1;
78
- transition: color 0.2s ease-out;
79
- }
80
- }
81
-
82
- .lm-BoxPanel {
83
- overflow: scroll !important;
84
- }
85
-
86
- .lm-TabBar,
87
- .lm-TabBar-tab {
88
- position: relative;
89
-
90
- overflow: visible !important;
91
- }
92
-
93
- .lm-TabBar-tabLabel:empty::after {
94
- content: "untitled";
95
- color: #aaa;
96
- }
97
-
98
- .lm-mod-current .lm-TabBar-tabLabel:empty::after {
99
- color: #ddd;
100
- }
101
-
102
- .lm-TabBar-tabLabel:empty::after {
103
- content: "untitled";
104
- }
105
-
106
- .divider {
107
- left: 32px;
108
- bottom: 0;
109
- position: absolute;
110
- right: 32px;
111
-
112
- height: 1px;
113
- background-color: var(--workspace-tabbar--border-color);
114
- margin-bottom: 0px;
115
- }
116
-
117
- .lm-TabBar-tab .drag-handle {
118
- pointer-events: all;
119
- height: 12px;
120
- width: 14px;
121
- -webkit-mask-image: var(--column-drag-handle--mask-image);
122
- mask-image: var(--column-drag-handle--mask-image);
123
- padding: 12px 0 12px 12px;
124
- background-repeat: no-repeat;
125
- background-color: var(--icon--color, red);
126
- content: "";
127
- display: inline-block;
128
- -webkit-mask-size: cover;
129
- mask-size: auto;
130
- mask-position: center;
131
- mask-repeat: no-repeat;
132
- }
133
-
134
- .lm-TabBar {
135
- // z-index: -1;
136
- pointer-events: none;
137
- .lm-TabBar-tabCloseIcon {
138
- pointer-events: all;
139
- }
140
-
141
- .bookmarks-button {
142
- pointer-events: all;
143
- }
144
- }
145
-
146
- .lm-TabBar-tab.lm-mod-hidden {
147
- display: flex !important;
148
- opacity: 0.5;
149
- }
150
-
151
- .lm-TabBar-tab.lm-mod-current .divider {
152
- display: block;
153
- }
154
-
155
- // .lm-TabBar-tabLabel input {
156
- // height: 18px;
157
- // }
158
-
159
- // .lm-TabBar {
160
- // // min-height: 0px !important;
161
- // }
162
-
163
- @border-color: 1px solid #eaeaea;
164
- @night-border-color: 1px solid #ddd;
165
-
166
- .pfm-button-base {
167
- background: white !important;
168
- }
169
-
170
- .pfm-button-base:active {
171
- background: #016bc6 !important;
172
- }
173
-
174
- .lm-TabBar-content {
175
- padding: 0px;
176
- border-bottom: 0px solid #fff !important;
177
- border-left: #eaeaea;
178
- border-right: #eaeaea;
179
- }
180
-
181
- .lm-TabBar-tab.lm-mod-current {
182
- .shadow {
183
- margin: -1px;
184
- position: absolute;
185
- width: calc(100% + 2px);
186
- height: 200%;
187
- pointer-events: none;
188
- left: 0px;
189
- }
190
-
191
- &.settings_open .shadow {
192
- box-shadow: none;
193
- }
194
- }
195
-
196
- .lm-TabBar-tab {
197
- // margin: 0px 4px;
198
- border-color: #eaeaea;
199
- align-items: center;
200
- }
201
-
202
- .lm-TabBar-content.inactive-blur > .lm-TabBar-tab {
203
- background-color: var(
204
- --workspace-inactive-blur--background-color,
205
- transparent
206
- );
207
- }
208
-
209
- .condensed .lm-TabBar-content {
210
- & > .lm-TabBar-tab.lm-mod-current .lm-TabBar-tabConfigIcon {
211
- display: block;
212
- }
213
-
214
- & > .lm-TabBar-tab.lm-mod-current.settings_open {
215
- .lm-TabBar-tabLabel {
216
- margin-left: 0px;
217
- }
218
- }
219
- }
220
-
221
- .lm-TabBar-content > .lm-TabBar-tab.lm-mod-current.settings_open {
222
- border-width: 1px 1px 0px 1px !important;
223
- border-color: var(--workspace-tabbar--border-color, #ddd);
224
-
225
- .lm-TabBar-tabToolbar {
226
- display: flex;
227
- }
228
-
229
- .divider {
230
- height: 1px;
231
- margin-bottom: 0px;
232
- background-color: var(--workspace-tabbar--border-color, #ddd);
233
- }
234
-
235
- &:last-child:first-child .divider {
236
- transition: none;
237
- }
238
- }
239
-
240
- .lm-TabBar-content > .lm-TabBar-tab.lm-mod-current.perspective_updating {
241
- .lm-TabBar-tabConfigIcon {
242
- display: none;
243
- }
244
-
245
- .lm-TabBar-tabLoadingIcon {
246
- display: block;
247
- }
248
- }
249
-
250
- .lm-TabBar-content > .lm-TabBar-tab {
251
- max-width: 100000px !important;
252
- flex: 0 1 100000px !important;
253
- background: none;
254
- color: #737373;
255
- height: 40px !important;
256
- max-height: 40px !important;
257
- margin-bottom: -40px;
258
- transform: none !important;
259
- transition: color 0.2s ease-out;
260
- }
261
-
262
- .lm-TabBar-content > .lm-TabBar-tab {
263
- color: #ccc;
264
- }
265
-
266
- .lm-TabBar-content > .lm-TabBar-tab {
267
- color: #ccc;
268
- }
269
-
270
- .lm-TabBar-content > .lm-TabBar-tab:hover {
271
- color: #ccc;
272
- }
273
-
274
- .lm-TabBar-content > .lm-TabBar-tab.lm-mod-current {
275
- color: var(--workspace-secondary--color, #666);
276
- }
277
-
278
- .lm-TabBar-tab.lm-mod-current .lm-TabBar-tabLabel {
279
- white-space: nowrap !important;
280
- }
281
-
282
- .lm-TabBar-tabLabel {
283
- font-family: inherit;
284
- font-size: 12px;
285
- line-height: 22px;
286
- text-align: start;
287
- white-space: normal !important;
288
- word-break: break-all;
289
- }
290
-
291
- .lm-TabBar-tabCloseIcon,
292
- .lm-TabBar-tabConfigIcon {
293
- cursor: pointer !important;
294
- line-height: 22px !important;
295
- padding-right: 16.5px !important;
296
- }
297
-
298
- .lm-TabBar-tabConfigIcon {
299
- padding-left: 8px;
300
- padding-right: 8px !important;
301
- }
302
-
303
- .lm-TabBar-tabLoadingIcon {
304
- padding-left: 11px;
305
- padding-right: 12px;
306
- }
307
-
308
- .bottom .lm-TabBar-tab {
309
- flex-basis: 10000px !important;
310
- max-width: 10000px !important;
311
- }
312
-
313
- .lm-TabBar-content > .lm-TabBar-tab.lm-mod-current {
314
- color: var(--workspace-tabbar--color, #666) !important;
315
- // border: var(--workspace-tabbar--border, 1px solid #ddd);
316
- // border-width: var(--workspace-tabbar-tab--border-width);
317
- // box-shadow: 0 13px 0 -12px var(--inactive--border-color);
318
- // border-radius: var(--workspace-tabbar--border-radius, 6px)
319
- // var(--workspace-tabbar--border-radius, 6px) 0 0;
320
- // background-color: var(--workspace-tabbar--background-color, white);
321
- background: none;
322
- height: 40px !important;
323
- max-height: 40px !important;
324
- margin-bottom: -40px;
325
- border: 0 solid transparent;
326
- border-width: 1px 1px 0px 1px;
327
- }
328
-
329
- .bottom .lm-TabBar-tab.lm-mod-current {
330
- border: none;
331
- }
332
-
333
- ::-webkit-scrollbar-thumb {
334
- background-color: #ccc;
335
- }
336
-
337
- .perspective-workspace.context-menu * .lm-TabBar.context-focus {
338
- opacity: 1;
339
- }
340
-
341
- .perspective-workspace.context-menu * .lm-TabBar,
342
- .perspective-workspace.context-menu
343
- .lm-Widget.workspace-widget:not(.context-focus)
344
- .viewer-container {
345
- opacity: 0.2;
346
- }
347
-
348
- @mixin icon {
349
- background-repeat: no-repeat;
350
- background-color: var(--icon--color);
351
- content: "";
352
- display: inline-block;
353
- -webkit-mask-size: cover;
354
- mask-size: cover;
355
- }
356
-
357
- .bookmarks-button {
358
- margin-left: 11px;
359
- margin-right: -13px;
360
- height: 20px;
361
- border-radius: 3px;
362
- border: 1px solid var(--inactive--color);
363
- background-color: var(--plugin--background);
364
-
365
- &:hover {
366
- background-color: var(--icon--color);
367
- border-color: var(--icon--color);
368
- }
369
- }
370
-
371
- .bookmarks {
372
- @include icon;
373
- cursor: pointer;
374
- width: 20px;
375
- height: 12px;
376
- -webkit-mask-image: var(--bookmarks--mask-image);
377
- mask-image: var(--bookmarks--mask-image);
378
- -webkit-mask-position: center;
379
- mask-position: center;
380
- -webkit-mask-size: auto;
381
- mask-size: auto;
382
- -webkit-mask-repeat: no-repeat;
383
- mask-repeat: no-repeat;
384
- padding: 4px 6px;
385
-
386
- &:hover {
387
- background-color: var(--plugin--background);
388
- }
389
- }