@teselagen/ove 0.3.12 → 0.3.14
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/index.js +379 -384
- package/index.mjs +380 -385
- package/index.umd.js +366 -341
- package/package.json +2 -2
- package/src/Editor/index.js +1 -1
- package/src/Editor/userDefinedHandlersAndOpts.js +1 -1
- package/src/StatusBar/index.js +29 -33
- package/src/ToolBar/editTool.js +39 -36
- package/src/commands/index.js +2 -1
- package/src/helperComponents/AddOrEditAnnotationDialog/index.js +9 -9
- package/src/helperComponents/PropertiesDialog/GeneralProperties.js +5 -4
- package/src/withEditorProps/index.js +29 -18
- package/style.css +138 -138
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teselagen/ove",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.14",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@teselagen/sequence-utils": "0.3.7",
|
|
17
17
|
"@teselagen/range-utils": "0.3.7",
|
|
18
|
-
"@teselagen/ui": "0.3.
|
|
18
|
+
"@teselagen/ui": "0.3.12",
|
|
19
19
|
"@teselagen/file-utils": "0.3.9",
|
|
20
20
|
"@teselagen/bounce-loader": "0.3.7",
|
|
21
21
|
"@teselagen/bio-parsers": "0.3.8",
|
package/src/Editor/index.js
CHANGED
|
@@ -902,7 +902,7 @@ export class Editor extends React.Component {
|
|
|
902
902
|
contentLeft={this.props.contentLeft}
|
|
903
903
|
editorName={editorName}
|
|
904
904
|
withDigestTool
|
|
905
|
-
|
|
905
|
+
beforeReadOnlyChange={this.props.beforeReadOnlyChange}
|
|
906
906
|
{...ToolBarProps}
|
|
907
907
|
/>
|
|
908
908
|
|
package/src/StatusBar/index.js
CHANGED
|
@@ -14,41 +14,35 @@ import { getSelectionMessage } from "../utils/editorUtils";
|
|
|
14
14
|
import useMeltingTemp from "../utils/useMeltingTemp";
|
|
15
15
|
import MeltingTemp from "./MeltingTemp";
|
|
16
16
|
import { getSequenceWithinRange } from "@teselagen/range-utils";
|
|
17
|
+
import { handleReadOnlyChange } from "../ToolBar/editTool";
|
|
17
18
|
|
|
18
19
|
const EditReadOnlyItem = connectToEditor(({ readOnly }) => ({
|
|
19
20
|
readOnly
|
|
20
|
-
}))(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
readOnly
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
) : (
|
|
46
|
-
"Editable"
|
|
47
|
-
)}
|
|
48
|
-
</StatusBarItem>
|
|
49
|
-
) : null;
|
|
50
|
-
}
|
|
51
|
-
);
|
|
21
|
+
}))(props => {
|
|
22
|
+
const { onSave, readOnly, showReadOnly, disableSetReadOnly } = props;
|
|
23
|
+
return showReadOnly ? (
|
|
24
|
+
<StatusBarItem dataTest="veStatusBar-readOnly">
|
|
25
|
+
{onSave ? (
|
|
26
|
+
<HTMLSelect
|
|
27
|
+
options={[
|
|
28
|
+
{ label: "Read Only", value: "readOnly" },
|
|
29
|
+
{ label: "Editable", value: "editable" }
|
|
30
|
+
]}
|
|
31
|
+
disabled={disableSetReadOnly || !onSave} //the !onSave here is redundant
|
|
32
|
+
className={Classes.MINIMAL}
|
|
33
|
+
value={readOnly ? "readOnly" : "editable"}
|
|
34
|
+
onChange={({ target: { value } }) =>
|
|
35
|
+
handleReadOnlyChange(value === "readOnly", props)
|
|
36
|
+
}
|
|
37
|
+
/>
|
|
38
|
+
) : readOnly ? (
|
|
39
|
+
"Read Only"
|
|
40
|
+
) : (
|
|
41
|
+
"Editable"
|
|
42
|
+
)}
|
|
43
|
+
</StatusBarItem>
|
|
44
|
+
) : null;
|
|
45
|
+
});
|
|
52
46
|
|
|
53
47
|
const ShowSelectionItem = compose(
|
|
54
48
|
connectToEditor(
|
|
@@ -226,7 +220,8 @@ export function StatusBar({
|
|
|
226
220
|
showGCContentByDefault,
|
|
227
221
|
onSelectionOrCaretChanged,
|
|
228
222
|
GCDecimalDigits = 1,
|
|
229
|
-
isProtein
|
|
223
|
+
isProtein,
|
|
224
|
+
beforeReadOnlyChange
|
|
230
225
|
}) {
|
|
231
226
|
return (
|
|
232
227
|
<div className="veStatusBar">
|
|
@@ -234,6 +229,7 @@ export function StatusBar({
|
|
|
234
229
|
<ShowTypeItem editorName={editorName}></ShowTypeItem>
|
|
235
230
|
)}
|
|
236
231
|
<EditReadOnlyItem
|
|
232
|
+
beforeReadOnlyChange={beforeReadOnlyChange}
|
|
237
233
|
editorName={editorName}
|
|
238
234
|
onSave={onSave}
|
|
239
235
|
disableSetReadOnly={disableSetReadOnly}
|
package/src/ToolBar/editTool.js
CHANGED
|
@@ -7,40 +7,43 @@ export default connectToEditor(editorState => {
|
|
|
7
7
|
return {
|
|
8
8
|
readOnly: editorState.readOnly
|
|
9
9
|
};
|
|
10
|
-
})(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
)
|
|
10
|
+
})(props => {
|
|
11
|
+
const { toolbarItemProps, readOnly, disableSetReadOnly } = props;
|
|
12
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
13
|
+
const readOnlyTooltip = ({ readOnly, disableSetReadOnly }) => {
|
|
14
|
+
if (isLoading) {
|
|
15
|
+
return "Loading...";
|
|
16
|
+
} else if (disableSetReadOnly) {
|
|
17
|
+
return "You do not have permission to edit locks on this sequence";
|
|
18
|
+
}
|
|
19
|
+
return readOnly ? "Click to enable editing" : "Click to disable editing";
|
|
20
|
+
};
|
|
21
|
+
return (
|
|
22
|
+
<ToolbarItem
|
|
23
|
+
{...{
|
|
24
|
+
disabled: isLoading || disableSetReadOnly,
|
|
25
|
+
Icon: <Icon icon={readOnly ? "lock" : "unlock"} />,
|
|
26
|
+
onIconClick: () =>
|
|
27
|
+
handleReadOnlyChange(!readOnly, { ...props, setIsLoading }),
|
|
28
|
+
tooltip: readOnlyTooltip({ readOnly, disableSetReadOnly }),
|
|
29
|
+
...toolbarItemProps
|
|
30
|
+
}}
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export async function handleReadOnlyChange(
|
|
36
|
+
newVal,
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
38
|
+
{ beforeReadOnlyChange, updateReadOnlyMode, setIsLoading = () => {} }
|
|
39
|
+
) {
|
|
40
|
+
if (beforeReadOnlyChange) {
|
|
41
|
+
setIsLoading(true);
|
|
42
|
+
const shouldChange = await beforeReadOnlyChange(newVal);
|
|
43
|
+
setIsLoading(false);
|
|
44
|
+
if (shouldChange === false) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
|
-
);
|
|
48
|
+
updateReadOnlyMode(newVal);
|
|
49
|
+
}
|
package/src/commands/index.js
CHANGED
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
showDialog
|
|
37
37
|
} from "../GlobalDialogUtils";
|
|
38
38
|
import { partsSubmenu } from "../MenuBar/viewSubmenu";
|
|
39
|
+
import { handleReadOnlyChange } from "../ToolBar/editTool";
|
|
39
40
|
|
|
40
41
|
const isProtein = props => props.sequenceData && props.sequenceData.isProtein;
|
|
41
42
|
const isOligo = props => props.sequenceData && props.sequenceData.isOligo;
|
|
@@ -139,7 +140,7 @@ const fileCommandDefs = {
|
|
|
139
140
|
isDisabled: props => props.disableSetReadOnly || !props.onSave,
|
|
140
141
|
isHidden: props => !props.toggleReadOnlyMode,
|
|
141
142
|
isActive: props => props.readOnly,
|
|
142
|
-
handler: props => props.
|
|
143
|
+
handler: props => handleReadOnlyChange(!props.readOnly, props)
|
|
143
144
|
},
|
|
144
145
|
|
|
145
146
|
importSequence: {
|
|
@@ -39,7 +39,7 @@ import { store, view } from "@risingstack/react-easy-state";
|
|
|
39
39
|
|
|
40
40
|
import withEditorProps from "../../withEditorProps";
|
|
41
41
|
import { withProps } from "recompose";
|
|
42
|
-
import { map, flatMap } from "lodash";
|
|
42
|
+
import { map, flatMap, round } from "lodash";
|
|
43
43
|
import "./style.css";
|
|
44
44
|
|
|
45
45
|
class AddOrEditAnnotationDialog extends React.Component {
|
|
@@ -58,30 +58,30 @@ class AddOrEditAnnotationDialog extends React.Component {
|
|
|
58
58
|
formatStart = val => {
|
|
59
59
|
const { isProtein } = this.props.sequenceData || {};
|
|
60
60
|
if (isProtein) {
|
|
61
|
-
return (val + 2) / 3;
|
|
61
|
+
return round((val + 2) / 3);
|
|
62
62
|
}
|
|
63
|
-
return val;
|
|
63
|
+
return round(val);
|
|
64
64
|
};
|
|
65
65
|
formatEnd = val => {
|
|
66
66
|
const { isProtein } = this.props.sequenceData || {};
|
|
67
67
|
if (isProtein) {
|
|
68
|
-
return val / 3;
|
|
68
|
+
return round(val / 3);
|
|
69
69
|
}
|
|
70
|
-
return val;
|
|
70
|
+
return round(val);
|
|
71
71
|
};
|
|
72
72
|
parseStart = val => {
|
|
73
73
|
const { isProtein } = this.props.sequenceData || {};
|
|
74
74
|
if (isProtein) {
|
|
75
|
-
return val * 3 - 2;
|
|
75
|
+
return round(val * 3 - 2);
|
|
76
76
|
}
|
|
77
|
-
return val;
|
|
77
|
+
return round(val);
|
|
78
78
|
};
|
|
79
79
|
parseEnd = val => {
|
|
80
80
|
const { isProtein } = this.props.sequenceData || {};
|
|
81
81
|
if (isProtein) {
|
|
82
|
-
return val * 3;
|
|
82
|
+
return round(val * 3);
|
|
83
83
|
}
|
|
84
|
-
return val;
|
|
84
|
+
return round(val);
|
|
85
85
|
};
|
|
86
86
|
renderLocations = props => {
|
|
87
87
|
const { fields } = props;
|
|
@@ -3,6 +3,7 @@ import { InputField, BPSelect, TextareaField } from "@teselagen/ui";
|
|
|
3
3
|
import { reduxForm } from "redux-form";
|
|
4
4
|
import withEditorProps from "../../withEditorProps";
|
|
5
5
|
import { compose } from "recompose";
|
|
6
|
+
import { handleReadOnlyChange } from "../../ToolBar/editTool";
|
|
6
7
|
|
|
7
8
|
class GeneralProperties extends React.Component {
|
|
8
9
|
updateSeqDesc = val => {
|
|
@@ -17,7 +18,6 @@ class GeneralProperties extends React.Component {
|
|
|
17
18
|
disableSetReadOnly,
|
|
18
19
|
updateAvailability,
|
|
19
20
|
sequenceData,
|
|
20
|
-
updateReadOnlyMode,
|
|
21
21
|
onSave,
|
|
22
22
|
showAvailability,
|
|
23
23
|
sequenceNameUpdate
|
|
@@ -102,10 +102,11 @@ class GeneralProperties extends React.Component {
|
|
|
102
102
|
<div className="ve-column-right">
|
|
103
103
|
{" "}
|
|
104
104
|
<BPSelect
|
|
105
|
+
className={"veReadOnlySelect"}
|
|
105
106
|
disabled={!onSave || disableSetReadOnly}
|
|
106
|
-
onChange={val =>
|
|
107
|
-
|
|
108
|
-
}
|
|
107
|
+
onChange={val =>
|
|
108
|
+
handleReadOnlyChange(val === "readOnly", this.props)
|
|
109
|
+
}
|
|
109
110
|
value={readOnly ? "readOnly" : "editable"}
|
|
110
111
|
options={[
|
|
111
112
|
{ label: "Read Only", value: "readOnly" },
|
|
@@ -568,10 +568,10 @@ function mapStateToProps(state, ownProps) {
|
|
|
568
568
|
const { __allEditorsOptions } = VectorEditor;
|
|
569
569
|
const { uppercaseSequenceMapFont } = __allEditorsOptions;
|
|
570
570
|
|
|
571
|
-
|
|
572
571
|
if (!editorState) {
|
|
573
572
|
return editorReducer({}, {});
|
|
574
573
|
}
|
|
574
|
+
const sequenceLength = s.sequenceLengthSelector(editorState);
|
|
575
575
|
|
|
576
576
|
const { findTool, annotationsToSupport = {} } = editorState;
|
|
577
577
|
const visibilities = getVisibilities(editorState);
|
|
@@ -583,7 +583,13 @@ function mapStateToProps(state, ownProps) {
|
|
|
583
583
|
].forEach(([n, type, annotationTypePlural]) => {
|
|
584
584
|
const vals = getFormValues(n)(state);
|
|
585
585
|
if (vals) {
|
|
586
|
-
annotationToAdd = getAnnToAdd(
|
|
586
|
+
annotationToAdd = getAnnToAdd(
|
|
587
|
+
vals,
|
|
588
|
+
n,
|
|
589
|
+
type,
|
|
590
|
+
annotationTypePlural,
|
|
591
|
+
sequenceLength
|
|
592
|
+
);
|
|
587
593
|
}
|
|
588
594
|
});
|
|
589
595
|
|
|
@@ -614,7 +620,6 @@ function mapStateToProps(state, ownProps) {
|
|
|
614
620
|
editorState,
|
|
615
621
|
ownProps.additionalEnzymes
|
|
616
622
|
);
|
|
617
|
-
const sequenceLength = s.sequenceLengthSelector(editorState);
|
|
618
623
|
|
|
619
624
|
const { matchedSearchLayer, searchLayers, matchesTotal } =
|
|
620
625
|
getSearchLayersAndMatch(editorState);
|
|
@@ -956,22 +961,28 @@ const getFindTool = createSelector(
|
|
|
956
961
|
}
|
|
957
962
|
);
|
|
958
963
|
|
|
959
|
-
const getAnnToAdd = defaultMemoize(
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
964
|
+
const getAnnToAdd = defaultMemoize(
|
|
965
|
+
(vals, n, type, annotationTypePlural, sequenceLength) => {
|
|
966
|
+
const annToAdd = normalizeRange(
|
|
967
|
+
{
|
|
968
|
+
color: getFeatureToColorMap({ includeHidden: true })[
|
|
969
|
+
vals.type || "primer_bind"
|
|
970
|
+
], //we won't have the correct color yet so we set it here
|
|
971
|
+
...vals,
|
|
972
|
+
formName: n,
|
|
973
|
+
type,
|
|
974
|
+
annotationTypePlural,
|
|
975
|
+
name: vals.name || "Untitled"
|
|
976
|
+
},
|
|
977
|
+
sequenceLength
|
|
978
|
+
);
|
|
979
|
+
|
|
980
|
+
if (!vals.useLinkedOligo) {
|
|
981
|
+
delete annToAdd.bases;
|
|
982
|
+
}
|
|
983
|
+
return annToAdd;
|
|
972
984
|
}
|
|
973
|
-
|
|
974
|
-
});
|
|
985
|
+
);
|
|
975
986
|
const getSeqDataWithAnnToAdd = defaultMemoize(
|
|
976
987
|
(seqData, ann, allowMultipleFeatureDirections) => {
|
|
977
988
|
if (ann) {
|
package/style.css
CHANGED
|
@@ -10757,6 +10757,144 @@ li.bp3-menu-divider:last-child {
|
|
|
10757
10757
|
.bp3-dark .isBoldSeq {
|
|
10758
10758
|
stroke: white;
|
|
10759
10759
|
}
|
|
10760
|
+
.Popover-body {
|
|
10761
|
+
display: inline-flex;
|
|
10762
|
+
flex-direction: column;
|
|
10763
|
+
padding: 10px;
|
|
10764
|
+
background: white;
|
|
10765
|
+
color: black;
|
|
10766
|
+
box-shadow: 0px 1px 9px rgba(0, 0, 0, 0.5);
|
|
10767
|
+
z-index: 1;
|
|
10768
|
+
margin-top: 10px;
|
|
10769
|
+
}
|
|
10770
|
+
|
|
10771
|
+
.Popover-tipShape {
|
|
10772
|
+
fill: white;
|
|
10773
|
+
}
|
|
10774
|
+
|
|
10775
|
+
.Popover-tip {
|
|
10776
|
+
display: none;
|
|
10777
|
+
}
|
|
10778
|
+
|
|
10779
|
+
.veToolbar .veToolbarItemOuter {
|
|
10780
|
+
display: flex;
|
|
10781
|
+
height: 32px;
|
|
10782
|
+
}
|
|
10783
|
+
.veToolbar .veToolbarItemOuter .veToolbarItem {
|
|
10784
|
+
display: flex;
|
|
10785
|
+
align-items: center;
|
|
10786
|
+
height: 32px;
|
|
10787
|
+
}
|
|
10788
|
+
.veToolbarSpacer {
|
|
10789
|
+
height: 80%;
|
|
10790
|
+
width: 1px;
|
|
10791
|
+
margin-left: 10px;
|
|
10792
|
+
margin-right: 10px;
|
|
10793
|
+
}
|
|
10794
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon {
|
|
10795
|
+
padding: 3px;
|
|
10796
|
+
border-radius: 3px;
|
|
10797
|
+
height: 32px;
|
|
10798
|
+
width: 30px;
|
|
10799
|
+
display: flex;
|
|
10800
|
+
align-items: center;
|
|
10801
|
+
justify-content: center;
|
|
10802
|
+
color: #006cab;
|
|
10803
|
+
}
|
|
10804
|
+
.veToolbarItemOuter.disabled .veToolbarIcon {
|
|
10805
|
+
color: #c0c0c0;
|
|
10806
|
+
}
|
|
10807
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon.veToolbarItemToggled {
|
|
10808
|
+
background: lightgrey;
|
|
10809
|
+
border-color: #006cab;
|
|
10810
|
+
}
|
|
10811
|
+
|
|
10812
|
+
.veToolbar :not(.disabled).veToolbarItemOuter .veToolbarIcon:hover {
|
|
10813
|
+
border-color: #006cab;
|
|
10814
|
+
}
|
|
10815
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon:active {
|
|
10816
|
+
opacity: 0.7;
|
|
10817
|
+
}
|
|
10818
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon img,
|
|
10819
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon svg,
|
|
10820
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon object {
|
|
10821
|
+
cursor: pointer;
|
|
10822
|
+
}
|
|
10823
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon img svg,
|
|
10824
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon svg svg,
|
|
10825
|
+
.veToolbar .veToolbarItemOuter .veToolbarIcon object svg {
|
|
10826
|
+
color: #006baa;
|
|
10827
|
+
}
|
|
10828
|
+
|
|
10829
|
+
.minOrfSizeInput::-webkit-inner-spin-button,
|
|
10830
|
+
.minOrfSizeInput::-webkit-outer-spin-button {
|
|
10831
|
+
-webkit-appearance: none;
|
|
10832
|
+
margin: 0;
|
|
10833
|
+
}
|
|
10834
|
+
|
|
10835
|
+
.minOrfSizeInput {
|
|
10836
|
+
padding-bottom: 0.25em;
|
|
10837
|
+
width: 5em;
|
|
10838
|
+
margin-left: 10px;
|
|
10839
|
+
text-align: center;
|
|
10840
|
+
padding-top: 0.25em;
|
|
10841
|
+
border: 1px solid lightgrey;
|
|
10842
|
+
justify-content: center;
|
|
10843
|
+
display: flex;
|
|
10844
|
+
flex-direction: column;
|
|
10845
|
+
}
|
|
10846
|
+
|
|
10847
|
+
.veToolbarDropdown {
|
|
10848
|
+
cursor: pointer;
|
|
10849
|
+
padding: 0px;
|
|
10850
|
+
padding-bottom: 5px;
|
|
10851
|
+
padding-top: 5px;
|
|
10852
|
+
border-radius: 3px;
|
|
10853
|
+
}
|
|
10854
|
+
.veToolbarDropdown:hover {
|
|
10855
|
+
background: lightgrey;
|
|
10856
|
+
}
|
|
10857
|
+
.veToolbarDropdown.isOpen {
|
|
10858
|
+
background: lightgrey;
|
|
10859
|
+
}
|
|
10860
|
+
|
|
10861
|
+
.veToolbarCutsiteFilterHolder {
|
|
10862
|
+
min-width: 300px;
|
|
10863
|
+
}
|
|
10864
|
+
.veToolbarCutsiteFilterHolder > div {
|
|
10865
|
+
margin: 10px;
|
|
10866
|
+
}
|
|
10867
|
+
.veToolbarCutsiteFilterHolder .title {
|
|
10868
|
+
margin: 10px;
|
|
10869
|
+
background: blue;
|
|
10870
|
+
width: 100%;
|
|
10871
|
+
}
|
|
10872
|
+
|
|
10873
|
+
.translateInfoSpan {
|
|
10874
|
+
font-size: 0.8em;
|
|
10875
|
+
padding: 4px;
|
|
10876
|
+
}
|
|
10877
|
+
|
|
10878
|
+
.showOrfTranslateSpan {
|
|
10879
|
+
padding: 8px;
|
|
10880
|
+
}
|
|
10881
|
+
|
|
10882
|
+
.veToolbarOrfOptionsHolder {
|
|
10883
|
+
min-width: 300px;
|
|
10884
|
+
margin-bottom: 10px;
|
|
10885
|
+
}
|
|
10886
|
+
|
|
10887
|
+
.veToolbarViewOptionsHolder div {
|
|
10888
|
+
margin-left: 10px;
|
|
10889
|
+
margin-bottom: 10px;
|
|
10890
|
+
}
|
|
10891
|
+
.veToolbarViewOptionsHolder label {
|
|
10892
|
+
margin: 40px 10px;
|
|
10893
|
+
}
|
|
10894
|
+
.ve-toolbar-item-popover {
|
|
10895
|
+
/* the z-index has to be high for it to work with ice */
|
|
10896
|
+
z-index: 4000;
|
|
10897
|
+
}
|
|
10760
10898
|
.insertReplaceButton {
|
|
10761
10899
|
width: 140px;
|
|
10762
10900
|
}
|
|
@@ -11217,144 +11355,6 @@ path.partWithSelectedTag {
|
|
|
11217
11355
|
.taLineHolder div {
|
|
11218
11356
|
width: 100%;
|
|
11219
11357
|
}
|
|
11220
|
-
.Popover-body {
|
|
11221
|
-
display: inline-flex;
|
|
11222
|
-
flex-direction: column;
|
|
11223
|
-
padding: 10px;
|
|
11224
|
-
background: white;
|
|
11225
|
-
color: black;
|
|
11226
|
-
box-shadow: 0px 1px 9px rgba(0, 0, 0, 0.5);
|
|
11227
|
-
z-index: 1;
|
|
11228
|
-
margin-top: 10px;
|
|
11229
|
-
}
|
|
11230
|
-
|
|
11231
|
-
.Popover-tipShape {
|
|
11232
|
-
fill: white;
|
|
11233
|
-
}
|
|
11234
|
-
|
|
11235
|
-
.Popover-tip {
|
|
11236
|
-
display: none;
|
|
11237
|
-
}
|
|
11238
|
-
|
|
11239
|
-
.veToolbar .veToolbarItemOuter {
|
|
11240
|
-
display: flex;
|
|
11241
|
-
height: 32px;
|
|
11242
|
-
}
|
|
11243
|
-
.veToolbar .veToolbarItemOuter .veToolbarItem {
|
|
11244
|
-
display: flex;
|
|
11245
|
-
align-items: center;
|
|
11246
|
-
height: 32px;
|
|
11247
|
-
}
|
|
11248
|
-
.veToolbarSpacer {
|
|
11249
|
-
height: 80%;
|
|
11250
|
-
width: 1px;
|
|
11251
|
-
margin-left: 10px;
|
|
11252
|
-
margin-right: 10px;
|
|
11253
|
-
}
|
|
11254
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon {
|
|
11255
|
-
padding: 3px;
|
|
11256
|
-
border-radius: 3px;
|
|
11257
|
-
height: 32px;
|
|
11258
|
-
width: 30px;
|
|
11259
|
-
display: flex;
|
|
11260
|
-
align-items: center;
|
|
11261
|
-
justify-content: center;
|
|
11262
|
-
color: #006cab;
|
|
11263
|
-
}
|
|
11264
|
-
.veToolbarItemOuter.disabled .veToolbarIcon {
|
|
11265
|
-
color: #c0c0c0;
|
|
11266
|
-
}
|
|
11267
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon.veToolbarItemToggled {
|
|
11268
|
-
background: lightgrey;
|
|
11269
|
-
border-color: #006cab;
|
|
11270
|
-
}
|
|
11271
|
-
|
|
11272
|
-
.veToolbar :not(.disabled).veToolbarItemOuter .veToolbarIcon:hover {
|
|
11273
|
-
border-color: #006cab;
|
|
11274
|
-
}
|
|
11275
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon:active {
|
|
11276
|
-
opacity: 0.7;
|
|
11277
|
-
}
|
|
11278
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon img,
|
|
11279
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon svg,
|
|
11280
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon object {
|
|
11281
|
-
cursor: pointer;
|
|
11282
|
-
}
|
|
11283
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon img svg,
|
|
11284
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon svg svg,
|
|
11285
|
-
.veToolbar .veToolbarItemOuter .veToolbarIcon object svg {
|
|
11286
|
-
color: #006baa;
|
|
11287
|
-
}
|
|
11288
|
-
|
|
11289
|
-
.minOrfSizeInput::-webkit-inner-spin-button,
|
|
11290
|
-
.minOrfSizeInput::-webkit-outer-spin-button {
|
|
11291
|
-
-webkit-appearance: none;
|
|
11292
|
-
margin: 0;
|
|
11293
|
-
}
|
|
11294
|
-
|
|
11295
|
-
.minOrfSizeInput {
|
|
11296
|
-
padding-bottom: 0.25em;
|
|
11297
|
-
width: 5em;
|
|
11298
|
-
margin-left: 10px;
|
|
11299
|
-
text-align: center;
|
|
11300
|
-
padding-top: 0.25em;
|
|
11301
|
-
border: 1px solid lightgrey;
|
|
11302
|
-
justify-content: center;
|
|
11303
|
-
display: flex;
|
|
11304
|
-
flex-direction: column;
|
|
11305
|
-
}
|
|
11306
|
-
|
|
11307
|
-
.veToolbarDropdown {
|
|
11308
|
-
cursor: pointer;
|
|
11309
|
-
padding: 0px;
|
|
11310
|
-
padding-bottom: 5px;
|
|
11311
|
-
padding-top: 5px;
|
|
11312
|
-
border-radius: 3px;
|
|
11313
|
-
}
|
|
11314
|
-
.veToolbarDropdown:hover {
|
|
11315
|
-
background: lightgrey;
|
|
11316
|
-
}
|
|
11317
|
-
.veToolbarDropdown.isOpen {
|
|
11318
|
-
background: lightgrey;
|
|
11319
|
-
}
|
|
11320
|
-
|
|
11321
|
-
.veToolbarCutsiteFilterHolder {
|
|
11322
|
-
min-width: 300px;
|
|
11323
|
-
}
|
|
11324
|
-
.veToolbarCutsiteFilterHolder > div {
|
|
11325
|
-
margin: 10px;
|
|
11326
|
-
}
|
|
11327
|
-
.veToolbarCutsiteFilterHolder .title {
|
|
11328
|
-
margin: 10px;
|
|
11329
|
-
background: blue;
|
|
11330
|
-
width: 100%;
|
|
11331
|
-
}
|
|
11332
|
-
|
|
11333
|
-
.translateInfoSpan {
|
|
11334
|
-
font-size: 0.8em;
|
|
11335
|
-
padding: 4px;
|
|
11336
|
-
}
|
|
11337
|
-
|
|
11338
|
-
.showOrfTranslateSpan {
|
|
11339
|
-
padding: 8px;
|
|
11340
|
-
}
|
|
11341
|
-
|
|
11342
|
-
.veToolbarOrfOptionsHolder {
|
|
11343
|
-
min-width: 300px;
|
|
11344
|
-
margin-bottom: 10px;
|
|
11345
|
-
}
|
|
11346
|
-
|
|
11347
|
-
.veToolbarViewOptionsHolder div {
|
|
11348
|
-
margin-left: 10px;
|
|
11349
|
-
margin-bottom: 10px;
|
|
11350
|
-
}
|
|
11351
|
-
.veToolbarViewOptionsHolder label {
|
|
11352
|
-
margin: 40px 10px;
|
|
11353
|
-
}
|
|
11354
|
-
.ve-toolbar-item-popover {
|
|
11355
|
-
/* the z-index has to be high for it to work with ice */
|
|
11356
|
-
z-index: 4000;
|
|
11357
|
-
}
|
|
11358
11358
|
.veMergeFeaturesDialog .bp3-form-content {
|
|
11359
11359
|
flex-grow: 1;
|
|
11360
11360
|
}
|