@modusoperandi/licit 0.13.25 → 0.14.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.
- package/.eslintrc.js +1 -1
- package/README.md +1 -0
- package/dist/BlockquoteInsertNewLineCommand.js +3 -23
- package/dist/BlockquoteNodeSpec.js +3 -13
- package/dist/BlockquoteToggleCommand.js +3 -16
- package/dist/BookmarkNodeSpec.js +0 -6
- package/dist/BulletListNodeSpec.js +2 -16
- package/dist/CZIProseMirror.js +3 -27
- package/dist/CodeBlockCommand.js +3 -19
- package/dist/CodeBlockNodeSpec.js +3 -4
- package/dist/CodeMarkSpec.js +0 -4
- package/dist/ContentPlaceholderPlugin.js +6 -58
- package/dist/CursorPlaceholderPlugin.js +2 -32
- package/dist/DocLayoutCommand.js +5 -28
- package/dist/DocNodeSpec.js +0 -9
- package/dist/EMMarkSpec.js +0 -4
- package/dist/EditorCommands.js +5 -33
- package/dist/EditorKeyMap.js +4 -18
- package/dist/EditorMarks.js +2 -26
- package/dist/EditorNodes.js +4 -22
- package/dist/EditorPageLayoutPlugin.js +3 -15
- package/dist/EditorPlugins.js +0 -4
- package/dist/EditorSchema.js +0 -5
- package/dist/EditorState.js +0 -2
- package/dist/FontSizeMarkSpec.js +0 -12
- package/dist/FontTypeMarkSpec.js +15 -19
- package/dist/HTMLMutator.js +5 -24
- package/dist/HardBreakNodeSpec.js +0 -2
- package/dist/HeadingNodeSpec.js +6 -15
- package/dist/HistoryRedoCommand.js +3 -11
- package/dist/HistoryUndoCommand.js +3 -11
- package/dist/HorizontalRuleCommand.js +3 -22
- package/dist/HorizontalRuleNodeSpec.js +0 -10
- package/dist/ImageFromURLCommand.js +0 -9
- package/dist/ImageNodeSpec.js +2 -14
- package/dist/ImageSourceCommand.js +3 -39
- package/dist/ImageUploadCommand.js +3 -21
- package/dist/ImageUploadPlaceholderPlugin.js +10 -48
- package/dist/LinkMarkSpec.js +0 -4
- package/dist/LinkSetURLCommand.js +3 -28
- package/dist/LinkTooltipPlugin.js +6 -52
- package/dist/ListItemInsertNewLineCommand.js +3 -23
- package/dist/ListItemMergeCommand.js +15 -66
- package/dist/ListItemNodeSpec.js +0 -11
- package/dist/ListSplitCommand.js +3 -14
- package/dist/ListToggleCommand.js +5 -26
- package/dist/MarksClearCommand.js +6 -17
- package/dist/MathEditCommand.js +3 -38
- package/dist/MathNodeSpec.js +0 -10
- package/dist/OrderedListNodeSpec.js +0 -24
- package/dist/ParagraphNodeSpec.js +5 -26
- package/dist/ParagraphSpacingCommand.js +3 -32
- package/dist/PrintCommand.js +3 -13
- package/dist/SelectionPlaceholderPlugin.js +2 -31
- package/dist/SpacerMarkSpec.js +2 -6
- package/dist/StrikeMarkSpec.js +0 -4
- package/dist/StrongMarkSpec.js +2 -5
- package/dist/StyleView.js +1 -7
- package/dist/TableBackgroundColorCommand.js +3 -24
- package/dist/TableBorderColorCommand.js +3 -24
- package/dist/TableCellColorCommand.js +3 -23
- package/dist/TableCellMenuPlugin.js +9 -45
- package/dist/TableInsertCommand.js +7 -39
- package/dist/TableMergeCellsCommand.js +5 -30
- package/dist/TableNodesSpecs.js +4 -23
- package/dist/TablePlugins.js +0 -5
- package/dist/TableResizePlugin.js +54 -138
- package/dist/TextColorMarkSpec.js +0 -9
- package/dist/TextHighlightMarkSpec.js +0 -8
- package/dist/TextInsertTabSpaceCommand.js +3 -28
- package/dist/TextNoWrapMarkSpec.js +0 -4
- package/dist/TextSelectionMarkSpec.js +0 -5
- package/dist/TextSubMarkSpec.js +0 -4
- package/dist/TextSuperMarkSpec.js +0 -4
- package/dist/TextUnderlineMarkSpec.js +0 -4
- package/dist/Types.js +0 -6
- package/dist/WebFontLoader.js +3 -8
- package/dist/blockQuoteInputRule.js +0 -13
- package/dist/bom.xml +1492 -1645
- package/dist/buildEditorPlugins.js +5 -27
- package/dist/buildInputRules.js +12 -24
- package/dist/client/CollabConnector.js +6 -30
- package/dist/client/EditorConnection.js +23 -69
- package/dist/client/Licit.js +79 -163
- package/dist/client/Licit.js.flow +16 -2
- package/dist/client/Licit.test.js +6 -13
- package/dist/client/Reporter.js +1 -8
- package/dist/client/SimpleConnector.js +6 -26
- package/dist/client/http.js +8 -15
- package/dist/client/throttle.js +0 -2
- package/dist/convertFromDOMElement.js +2 -10
- package/dist/convertFromHTML.js +0 -5
- package/dist/convertFromJSON.js +3 -13
- package/dist/convertToCSSPTValue.js +0 -6
- package/dist/convertToJSON.js +0 -2
- package/dist/createCommand.js +3 -11
- package/dist/createEditorKeyMap.js +0 -13
- package/dist/createEmptyEditorState.js +0 -7
- package/dist/createTableResizingPlugin.js +5 -16
- package/dist/findActionableCell.js +0 -19
- package/dist/findActiveMark.js +0 -11
- package/dist/hyphenize.js +2 -4
- package/dist/index.js +0 -9
- package/dist/insertTable.js +0 -16
- package/dist/isEditorStateEmpty.js +0 -6
- package/dist/isTableNode.js +0 -3
- package/dist/joinDown.js +0 -7
- package/dist/joinListNode.js +0 -15
- package/dist/joinUp.js +0 -9
- package/dist/keymaps.js +0 -15
- package/dist/lookUpElement.js +0 -3
- package/dist/nodeAt.js +0 -3
- package/dist/normalizeHTML.js +9 -25
- package/dist/patchAnchorElements.js +5 -12
- package/dist/patchBreakElements.js +0 -6
- package/dist/patchElementInlineStyles.js +5 -15
- package/dist/patchListElements.js +20 -54
- package/dist/patchMathElements.js +11 -21
- package/dist/patchParagraphElements.js +0 -5
- package/dist/patchStyleElements.js +12 -41
- package/dist/patchTableElements.js +9 -37
- package/dist/rebaseDocWithSteps.js +0 -6
- package/dist/sanitizeURL.js +0 -3
- package/dist/splitListItem.js +12 -43
- package/dist/toClosestFontPtSize.js +1 -5
- package/dist/toSafeHTMLDocument.js +0 -1
- package/dist/toggleBlockquote.js +2 -19
- package/dist/toggleCodeBlock.js +2 -22
- package/dist/ui/AlertInfo.js +6 -22
- package/dist/ui/BookmarkNodeView.js +7 -28
- package/dist/ui/CommandButton.js +3 -19
- package/dist/ui/CommandMenu.js +3 -25
- package/dist/ui/CommandMenuButton.js +3 -36
- package/dist/ui/CustomEditorView.js +3 -16
- package/dist/ui/CustomMenu.js +0 -8
- package/dist/ui/CustomMenuItem.js +4 -18
- package/dist/ui/CustomNodeView.js +21 -67
- package/dist/ui/CustomRadioButton.js +14 -33
- package/dist/ui/DocLayoutEditor.js +5 -27
- package/dist/ui/Editor.js +18 -79
- package/dist/ui/EditorFrameset.js +3 -18
- package/dist/ui/EditorToolbar.js +10 -46
- package/dist/ui/EditorToolbarConfig.js +10 -20
- package/dist/ui/FontSizeCommandMenuButton.js +5 -19
- package/dist/ui/FontTypeCommandMenuButton.js +5 -22
- package/dist/ui/Frag.js +0 -7
- package/dist/ui/Icon.js +5 -25
- package/dist/ui/ImageAlignEditor.js +3 -16
- package/dist/ui/ImageInlineEditor.js +3 -16
- package/dist/ui/ImageNodeView.js +20 -109
- package/dist/ui/ImageResizeBox.js +3 -53
- package/dist/ui/ImageURLEditor.js +3 -28
- package/dist/ui/ImageUploadEditor.js +3 -35
- package/dist/ui/LinkTooltip.js +5 -25
- package/dist/ui/LinkURLEditor.js +3 -29
- package/dist/ui/ListItemNodeView.js +15 -30
- package/dist/ui/ListTypeButton.js +5 -37
- package/dist/ui/ListTypeCommandButton.js +3 -19
- package/dist/ui/ListTypeMenu.js +4 -25
- package/dist/ui/LoadingIndicator.js +0 -7
- package/dist/ui/MathEditor.js +3 -24
- package/dist/ui/MathInlineEditor.js +3 -26
- package/dist/ui/MathNodeView.js +9 -59
- package/dist/ui/PasteMenu.js +4 -20
- package/dist/ui/ResizeObserver.js +0 -18
- package/dist/ui/RichTextEditor.js +5 -27
- package/dist/ui/SelectionObserver.js +3 -29
- package/dist/ui/TableCellMenu.js +3 -18
- package/dist/ui/TableGridSizeEditor.js +5 -51
- package/dist/ui/TableNodeView.js +0 -11
- package/dist/ui/bindScrollHandler.js +2 -9
- package/dist/ui/canUseCSSFont.js +2 -8
- package/dist/ui/czi-icon.css +4 -4
- package/dist/ui/findActiveFontSize.js +2 -18
- package/dist/ui/findActiveFontType.js +0 -12
- package/dist/ui/handleEditorDrop.js +0 -9
- package/dist/ui/handleEditorKeyDown.js +0 -7
- package/dist/ui/handleEditorPaste.js +0 -9
- package/dist/ui/htmlElementToRect.js +0 -4
- package/dist/ui/injectStyleSheet.js +0 -10
- package/dist/ui/isElementFullyVisible.js +2 -8
- package/dist/ui/isOffline.js +0 -2
- package/dist/ui/isReactClass.js +0 -4
- package/dist/ui/mathquill-editor/MathQuillEditor.js +9 -44
- package/dist/ui/mathquill-editor/MathQuillEditorSymbols.js +1 -3
- package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +3 -16
- package/dist/ui/mathquill-editor/mathquill-import-kludge.js +5 -7
- package/dist/ui/renderLaTeXAsHTML.js +2 -13
- package/dist/ui/resolveImage.js +7 -32
- package/dist/ui/toCSSColor.js +0 -14
- package/dist/ui/toCSSLineSpacing.js +10 -11
- package/dist/ui/toHexColor.js +0 -8
- package/dist/ui/uuid.js +0 -2
- package/dist/uuid.js +0 -2
- package/package-lock.json.old +32889 -0
- package/package.json +45 -69
- package/src/client/Licit.js +16 -2
- package/src/ui/czi-icon.css +4 -4
- package/utils/build_web_server.js +1 -7
- package/webpack.config.js +3 -3
package/dist/ui/isReactClass.js
CHANGED
|
@@ -4,17 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = isReactClass;
|
|
7
|
-
|
|
8
7
|
function isReactClass(maybe) {
|
|
9
8
|
if (typeof maybe !== 'function') {
|
|
10
9
|
return false;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
const proto = maybe.prototype;
|
|
14
|
-
|
|
15
12
|
if (!proto) {
|
|
16
13
|
return false;
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
return !!proto.isReactComponent;
|
|
20
16
|
}
|
|
@@ -4,52 +4,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("./czi-mathquill-editor.css");
|
|
9
|
-
|
|
10
8
|
var MathQuillEditorSymbols = _interopRequireWildcard(require("./MathQuillEditorSymbols"));
|
|
11
|
-
|
|
12
9
|
var _MathQuillEditorSymbolsPanel = _interopRequireDefault(require("./MathQuillEditorSymbolsPanel"));
|
|
13
|
-
|
|
14
10
|
var React = _interopRequireWildcard(require("react"));
|
|
15
|
-
|
|
16
11
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
17
|
-
|
|
18
12
|
var _canUseCSSFont = _interopRequireDefault(require("./../canUseCSSFont"));
|
|
19
|
-
|
|
20
13
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
21
|
-
|
|
22
14
|
var _mathquillImportKludge = require("./mathquill-import-kludge");
|
|
23
|
-
|
|
24
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
17
|
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; }
|
|
29
|
-
|
|
30
|
-
function
|
|
31
|
-
|
|
18
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
20
|
+
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); }
|
|
32
21
|
const CSS_CDN_URL = '//cdnjs.cloudflare.com/ajax/libs/mathquill/0.10.1/mathquill.css';
|
|
33
22
|
const CSS_FONT = 'Symbola';
|
|
34
|
-
|
|
35
23
|
const MQ = _mathquillImportKludge.MathQuill.getInterface(2);
|
|
36
|
-
|
|
37
24
|
(async function () {
|
|
38
25
|
const fontSupported = await (0, _canUseCSSFont.default)(CSS_FONT);
|
|
39
|
-
|
|
40
26
|
if (!fontSupported) {
|
|
41
|
-
console.info('Add CSS from ', CSS_CDN_URL);
|
|
27
|
+
console.info('Add CSS from ', CSS_CDN_URL);
|
|
28
|
+
// [FS] IRAD-1061 2020-09-19
|
|
42
29
|
// Now loaded locally, so that it work in closed network as well.
|
|
43
30
|
//injectStyleSheet(CSS_CDN_URL);
|
|
44
|
-
}
|
|
45
|
-
|
|
31
|
+
}
|
|
32
|
+
// injectStyleSheet(CSS_CDN_URL);
|
|
46
33
|
})();
|
|
47
34
|
|
|
48
35
|
class MathQuillElement extends React.Component {
|
|
49
36
|
shouldComponentUpdate() {
|
|
50
37
|
return false;
|
|
51
38
|
}
|
|
52
|
-
|
|
53
39
|
render() {
|
|
54
40
|
return /*#__PURE__*/React.createElement("div", {
|
|
55
41
|
className: "czi-mathquill-editor-element",
|
|
@@ -58,23 +44,15 @@ class MathQuillElement extends React.Component {
|
|
|
58
44
|
}
|
|
59
45
|
});
|
|
60
46
|
}
|
|
61
|
-
|
|
62
47
|
}
|
|
63
|
-
|
|
64
48
|
class MathQuillEditor extends React.PureComponent {
|
|
65
49
|
constructor() {
|
|
66
50
|
super(...arguments);
|
|
67
|
-
|
|
68
51
|
_defineProperty(this, "props", void 0);
|
|
69
|
-
|
|
70
52
|
_defineProperty(this, "_element", null);
|
|
71
|
-
|
|
72
53
|
_defineProperty(this, "_ignoreEditEvents", 4);
|
|
73
|
-
|
|
74
54
|
_defineProperty(this, "_mathField", null);
|
|
75
|
-
|
|
76
55
|
_defineProperty(this, "_latex", '');
|
|
77
|
-
|
|
78
56
|
_defineProperty(this, "_renderPanel", (symbols, ii) => {
|
|
79
57
|
return /*#__PURE__*/React.createElement(_MathQuillEditorSymbolsPanel.default, {
|
|
80
58
|
key: `s${ii}`,
|
|
@@ -82,33 +60,27 @@ class MathQuillEditor extends React.PureComponent {
|
|
|
82
60
|
symbols: symbols
|
|
83
61
|
});
|
|
84
62
|
});
|
|
85
|
-
|
|
86
63
|
_defineProperty(this, "_onSymbolSelect", symbol => {
|
|
87
64
|
const {
|
|
88
65
|
latex,
|
|
89
66
|
cmd
|
|
90
67
|
} = symbol;
|
|
91
68
|
const mathField = this._mathField;
|
|
92
|
-
|
|
93
69
|
if (!mathField || !cmd || !latex) {
|
|
94
70
|
return;
|
|
95
71
|
}
|
|
96
|
-
|
|
97
72
|
if (cmd === 'write') {
|
|
98
73
|
mathField.write(latex);
|
|
99
74
|
} else if (cmd === 'cmd') {
|
|
100
75
|
mathField.cmd(latex);
|
|
101
76
|
}
|
|
102
|
-
|
|
103
77
|
mathField.focus();
|
|
104
78
|
});
|
|
105
|
-
|
|
106
79
|
_defineProperty(this, "_onEdit", mathField => {
|
|
107
80
|
if (this._ignoreEditEvents > 0) {
|
|
108
81
|
this._ignoreEditEvents -= 1;
|
|
109
82
|
return;
|
|
110
83
|
}
|
|
111
|
-
|
|
112
84
|
const {
|
|
113
85
|
onChange
|
|
114
86
|
} = this.props;
|
|
@@ -116,7 +88,6 @@ class MathQuillEditor extends React.PureComponent {
|
|
|
116
88
|
this._latex = latex;
|
|
117
89
|
onChange && onChange(latex);
|
|
118
90
|
});
|
|
119
|
-
|
|
120
91
|
_defineProperty(this, "_onElementRef", ref => {
|
|
121
92
|
if (ref) {
|
|
122
93
|
this._element = _reactDom.default.findDOMNode(ref);
|
|
@@ -125,7 +96,6 @@ class MathQuillEditor extends React.PureComponent {
|
|
|
125
96
|
}
|
|
126
97
|
});
|
|
127
98
|
}
|
|
128
|
-
|
|
129
99
|
render() {
|
|
130
100
|
const {
|
|
131
101
|
value
|
|
@@ -145,15 +115,12 @@ class MathQuillEditor extends React.PureComponent {
|
|
|
145
115
|
className: "czi-mathquill-editor-side"
|
|
146
116
|
}, panels));
|
|
147
117
|
}
|
|
148
|
-
|
|
149
118
|
componentDidUpdate() {
|
|
150
119
|
const mathField = this._mathField;
|
|
151
|
-
|
|
152
120
|
if (this._latex !== this.props.value && mathField) {
|
|
153
121
|
mathField.latex(this.props.value || ' ');
|
|
154
122
|
}
|
|
155
123
|
}
|
|
156
|
-
|
|
157
124
|
componentDidMount() {
|
|
158
125
|
const config = {
|
|
159
126
|
autoCommands: 'pi theta sqrt sum',
|
|
@@ -164,18 +131,16 @@ class MathQuillEditor extends React.PureComponent {
|
|
|
164
131
|
}
|
|
165
132
|
};
|
|
166
133
|
const mathField = MQ.MathField(this._element, config);
|
|
167
|
-
this._mathField = mathField;
|
|
134
|
+
this._mathField = mathField;
|
|
168
135
|
|
|
136
|
+
// TODO: Remove this if MathQuill supports `\displaystyle`.
|
|
169
137
|
const rawLatex = (this.props.value || '').replace(/\\displaystyle/g, '');
|
|
170
138
|
mathField.latex(rawLatex || ' ');
|
|
171
139
|
mathField.focus();
|
|
172
|
-
|
|
173
140
|
if (rawLatex && !mathField.latex()) {
|
|
174
141
|
console.error('unable to process latex', rawLatex);
|
|
175
142
|
}
|
|
176
143
|
}
|
|
177
|
-
|
|
178
144
|
}
|
|
179
|
-
|
|
180
145
|
var _default = MathQuillEditor;
|
|
181
146
|
exports.default = _default;
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.bpfrpt_proptype_SymbolDefination = exports.bpfrpt_proptype_MathQuillEditorSymbol = exports.VERT = exports.VDASH = exports.UNION = exports.UNDERLINE = exports.TRIG = exports.TRIANGLE = exports.TIMES = exports.THETA = exports.TAN = exports.SYMBOLS = exports.SUPERSETEQ = exports.SUPERSET = exports.SUM = exports.SUBSETEQ = exports.SUBSET = exports.SUBSCRIPT = exports.STRUCTURE = exports.SQRT2 = exports.SQRT = exports.SQR = exports.SMALLE = exports.SIN = exports.SIMEQ = exports.SIM = exports.POWER = exports.PM = exports.PLUS = exports.PI = exports.PHI = exports.PERP = exports.PARENS = exports.OVERLINE = exports.OPERATORS = exports.NEQ = exports.MINUS = exports.LTE = exports.LT = exports.LOG_E = exports.INTXY = exports.INTERSECT = exports.INT = exports.INFINITY = exports.IMAGINARY = exports.GTE = exports.GT = exports.FRAC = exports.EQUAL = exports.DOTM = exports.DOLLAR = exports.DIVIDE = exports.DEGREES = exports.CTIMES = exports.COS = exports.CONG = exports.CENT = exports.BRACKETS = exports.ARROWRL = exports.ARROWLLR = exports.ARROWLL = exports.ARCTAN = exports.ARCSIN = exports.ARCCOS = exports.APPROX = exports.ANGLE = exports.ABSOLUTE = void 0;
|
|
7
|
-
|
|
8
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var bpfrpt_proptype_MathQuillEditorSymbol = {
|
|
13
10
|
"label": _propTypes.default.string.isRequired,
|
|
14
11
|
"latex": _propTypes.default.string.isRequired,
|
|
@@ -41,6 +38,7 @@ exports.bpfrpt_proptype_SymbolDefination = bpfrpt_proptype_SymbolDefination;
|
|
|
41
38
|
// https://inspera.atlassian.net/wiki/spaces/KB/pages/62062830/MathQuill+symbols
|
|
42
39
|
// https://www.rapidtables.com/math/symbols/Basic_Math_Symbols.html
|
|
43
40
|
// https://www.math.uci.edu/~xiangwen/pdf/LaTeX-Math-Symbols.pdf
|
|
41
|
+
|
|
44
42
|
const ABSOLUTE = {
|
|
45
43
|
label: '|x|',
|
|
46
44
|
latex: '|',
|
|
@@ -4,31 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _renderLaTeXAsHTML = _interopRequireDefault(require("../renderLaTeXAsHTML"));
|
|
9
|
-
|
|
10
8
|
require("./czi-mathquill-editor-symbols-panel.css");
|
|
11
|
-
|
|
12
9
|
var _licitUiCommands = require("@modusoperandi/licit-ui-commands");
|
|
13
|
-
|
|
14
10
|
var React = _interopRequireWildcard(require("react"));
|
|
15
|
-
|
|
16
11
|
var _MathQuillEditorSymbols = require("./MathQuillEditorSymbols");
|
|
17
|
-
|
|
18
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
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; }
|
|
21
|
-
|
|
22
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
24
|
-
function
|
|
25
|
-
|
|
15
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
16
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
17
|
+
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); }
|
|
26
18
|
class MathQuillEditorSymbolsPanel extends React.PureComponent {
|
|
27
19
|
constructor() {
|
|
28
20
|
super(...arguments);
|
|
29
|
-
|
|
30
21
|
_defineProperty(this, "props", void 0);
|
|
31
|
-
|
|
32
22
|
_defineProperty(this, "_renderButton", symbol => {
|
|
33
23
|
const {
|
|
34
24
|
label,
|
|
@@ -51,7 +41,6 @@ class MathQuillEditorSymbolsPanel extends React.PureComponent {
|
|
|
51
41
|
});
|
|
52
42
|
});
|
|
53
43
|
}
|
|
54
|
-
|
|
55
44
|
render() {
|
|
56
45
|
const {
|
|
57
46
|
title,
|
|
@@ -66,8 +55,6 @@ class MathQuillEditorSymbolsPanel extends React.PureComponent {
|
|
|
66
55
|
className: "czi-mathquill-editor-symbols-panel-body"
|
|
67
56
|
}, buttons));
|
|
68
57
|
}
|
|
69
|
-
|
|
70
58
|
}
|
|
71
|
-
|
|
72
59
|
var _default = MathQuillEditorSymbolsPanel;
|
|
73
60
|
exports.default = _default;
|
|
@@ -4,29 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.MathQuill = void 0;
|
|
7
|
-
|
|
8
7
|
var _jquery = _interopRequireDefault(require("jquery"));
|
|
9
|
-
|
|
10
8
|
var _mathquill = _interopRequireDefault(require("node-mathquill/build/mathquill"));
|
|
11
|
-
|
|
12
9
|
require("node-mathquill/build/mathquill.css");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
// Moved these files here because exports-loader is only valid when built
|
|
17
12
|
// using webpack, but this project is being built using babel.
|
|
13
|
+
|
|
18
14
|
// The MathQuill IIFE explicitly looks for jQuery at window.jQuery.
|
|
19
15
|
// This means that
|
|
20
16
|
// A) window must exist (browser env only)
|
|
21
17
|
// B) jQuery is being loaded via <script src=".../jquery">
|
|
22
18
|
//
|
|
19
|
+
|
|
23
20
|
window.jQuery = window.jQuery || _jquery.default;
|
|
24
21
|
window.MathQuill = window.MathQuill || _mathquill.default;
|
|
25
|
-
const MathQuill = window.MathQuill || _mathquill.default;
|
|
22
|
+
const MathQuill = window.MathQuill || _mathquill.default;
|
|
23
|
+
|
|
24
|
+
// // [FS] IRAD-1010 2020-07-24
|
|
26
25
|
// // With the latest to generate export default MathQuill these options need to
|
|
27
26
|
// // be passed into exports loader. Moved this from webpack config to here, so
|
|
28
27
|
// // that package could load fine with other application.
|
|
29
28
|
// const MQLoader = require('exports-loader?exports=default|MathQuill&type=module!node-mathquill/build/mathquill.js');
|
|
30
29
|
// export const MathQuill = MQLoader.default;
|
|
31
|
-
|
|
32
30
|
exports.MathQuill = MathQuill;
|
|
@@ -4,43 +4,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = renderLaTeXAsHTML;
|
|
7
|
-
|
|
8
7
|
var _canUseCSSFont = _interopRequireDefault(require("./canUseCSSFont"));
|
|
9
|
-
|
|
10
8
|
var _katex = _interopRequireDefault(require("katex"));
|
|
11
|
-
|
|
12
9
|
require("katex/dist/katex.min.css");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
// [FS] IRAD-1061 2020-09-19
|
|
17
12
|
// Now loaded locally, so that it work in closed network as well.
|
|
18
13
|
const latexEl = document.createElement('div');
|
|
19
14
|
const cached = {};
|
|
20
15
|
const CSS_FONT = 'KaTeX_Main';
|
|
21
|
-
|
|
22
16
|
(async function () {
|
|
23
17
|
const fontSupported = await (0, _canUseCSSFont.default)(CSS_FONT);
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
if (!fontSupported) {
|
|
19
|
+
// [FS] IRAD-1061 2020-09-19
|
|
26
20
|
// Now loaded locally, so that it work in closed network as well.
|
|
27
21
|
//console.info('Add CSS from ', CSS_CDN_URL);
|
|
28
22
|
//injectStyleSheet(CSS_CDN_URL);
|
|
29
23
|
}
|
|
30
24
|
})();
|
|
31
|
-
|
|
32
25
|
function renderLaTeXAsHTML(latex) {
|
|
33
26
|
if (cached.hasOwnProperty(latex)) {
|
|
34
27
|
return cached[latex];
|
|
35
28
|
}
|
|
36
|
-
|
|
37
29
|
const latexText = latex || '';
|
|
38
30
|
latexEl.innerHTML = '';
|
|
39
|
-
|
|
40
31
|
if (!latexText) {
|
|
41
32
|
return latexText;
|
|
42
33
|
}
|
|
43
|
-
|
|
44
34
|
try {
|
|
45
35
|
_katex.default.render(latex, latexEl);
|
|
46
36
|
} catch (ex) {
|
|
@@ -48,7 +38,6 @@ function renderLaTeXAsHTML(latex) {
|
|
|
48
38
|
latexEl.innerHTML = '';
|
|
49
39
|
latexEl.appendChild(document.createTextNode(latexText));
|
|
50
40
|
}
|
|
51
|
-
|
|
52
41
|
const html = latexEl.innerHTML;
|
|
53
42
|
latexEl.innerHTML = '';
|
|
54
43
|
cached[latex] = html;
|
package/dist/ui/resolveImage.js
CHANGED
|
@@ -5,21 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.bpfrpt_proptype_ImageResult = void 0;
|
|
7
7
|
exports.default = resolveImage;
|
|
8
|
-
|
|
9
8
|
var _url = _interopRequireDefault(require("url"));
|
|
10
|
-
|
|
11
9
|
var _isOffline = _interopRequireDefault(require("./isOffline"));
|
|
12
|
-
|
|
13
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
-
|
|
15
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
|
|
17
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
|
|
19
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
20
|
-
|
|
21
|
-
function
|
|
22
|
-
|
|
14
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
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); }
|
|
23
17
|
var bpfrpt_proptype_ImageResult = {
|
|
24
18
|
"complete": _propTypes.default.bool.isRequired,
|
|
25
19
|
"height": _propTypes.default.number.isRequired,
|
|
@@ -31,7 +25,6 @@ var bpfrpt_proptype_ImageResult = {
|
|
|
31
25
|
exports.bpfrpt_proptype_ImageResult = bpfrpt_proptype_ImageResult;
|
|
32
26
|
const cache = {};
|
|
33
27
|
const queue = [];
|
|
34
|
-
|
|
35
28
|
function resolveImage(src) {
|
|
36
29
|
return new Promise((resolve, reject) => {
|
|
37
30
|
const bag = {
|
|
@@ -43,15 +36,12 @@ function resolveImage(src) {
|
|
|
43
36
|
processQueue();
|
|
44
37
|
});
|
|
45
38
|
}
|
|
46
|
-
|
|
47
39
|
function processQueue() {
|
|
48
40
|
const bag = queue.shift();
|
|
49
|
-
|
|
50
41
|
if (bag) {
|
|
51
42
|
processPromise(bag.src, bag.resolve, bag.reject);
|
|
52
43
|
}
|
|
53
44
|
}
|
|
54
|
-
|
|
55
45
|
function processPromise(src, resolve, reject) {
|
|
56
46
|
const result = {
|
|
57
47
|
complete: false,
|
|
@@ -61,14 +51,11 @@ function processPromise(src, resolve, reject) {
|
|
|
61
51
|
src: src || '',
|
|
62
52
|
width: 0
|
|
63
53
|
};
|
|
64
|
-
|
|
65
54
|
if ((0, _isOffline.default)()) {
|
|
66
55
|
resolve(result);
|
|
67
56
|
return;
|
|
68
57
|
}
|
|
69
|
-
|
|
70
58
|
const srcStr = src || '';
|
|
71
|
-
|
|
72
59
|
if (!srcStr) {
|
|
73
60
|
resolve(result);
|
|
74
61
|
return;
|
|
@@ -77,37 +64,29 @@ function processPromise(src, resolve, reject) {
|
|
|
77
64
|
resolve(cachedResult);
|
|
78
65
|
return;
|
|
79
66
|
}
|
|
80
|
-
|
|
81
|
-
|
|
67
|
+
const parsedURL = _url.default.parse(srcStr);
|
|
68
|
+
// [FS] IRAD-1007 2020-07-13
|
|
82
69
|
// Removed the port validation from here
|
|
83
|
-
|
|
84
|
-
|
|
85
70
|
const {
|
|
86
71
|
protocol
|
|
87
72
|
} = parsedURL;
|
|
88
|
-
|
|
89
73
|
if (!/(http:|https:|data:)/.test(protocol || window.location.protocol)) {
|
|
90
74
|
resolve(result);
|
|
91
75
|
return;
|
|
92
76
|
}
|
|
93
|
-
|
|
94
77
|
let img;
|
|
95
|
-
|
|
96
78
|
const dispose = () => {
|
|
97
79
|
if (img) {
|
|
98
80
|
if (img instanceof HTMLElement) {
|
|
99
81
|
const pe = img.parentNode;
|
|
100
82
|
pe && pe.removeChild(img);
|
|
101
83
|
}
|
|
102
|
-
|
|
103
84
|
img.onload = null;
|
|
104
85
|
img.onerror = null;
|
|
105
86
|
img = null;
|
|
106
87
|
}
|
|
107
|
-
|
|
108
88
|
processQueue();
|
|
109
89
|
};
|
|
110
|
-
|
|
111
90
|
const onLoad = () => {
|
|
112
91
|
if (img) {
|
|
113
92
|
result.width = img.width;
|
|
@@ -116,24 +95,20 @@ function processPromise(src, resolve, reject) {
|
|
|
116
95
|
result.naturalHeight = img.height;
|
|
117
96
|
result.complete = true;
|
|
118
97
|
}
|
|
119
|
-
|
|
120
98
|
resolve(result);
|
|
121
|
-
dispose();
|
|
99
|
+
dispose();
|
|
100
|
+
// [FS] IRAD-1006 2020-07-17
|
|
122
101
|
// Fix: Inconsistent behavior on image load
|
|
123
102
|
// Avoid image caching remove the below line
|
|
124
|
-
|
|
125
103
|
cache[srcStr] = _objectSpread({}, result);
|
|
126
104
|
};
|
|
127
|
-
|
|
128
105
|
const onError = () => {
|
|
129
106
|
resolve(result);
|
|
130
107
|
dispose();
|
|
131
108
|
};
|
|
132
|
-
|
|
133
109
|
const {
|
|
134
110
|
body
|
|
135
111
|
} = document;
|
|
136
|
-
|
|
137
112
|
if (body) {
|
|
138
113
|
img = document.createElement('img');
|
|
139
114
|
img.style.cssText = 'position:fixed;left:-10000000000px;width:auto;height:auto;';
|
package/dist/ui/toCSSColor.js
CHANGED
|
@@ -6,51 +6,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.isTransparent = isTransparent;
|
|
8
8
|
exports.toCSSColor = toCSSColor;
|
|
9
|
-
|
|
10
9
|
var _color = _interopRequireDefault(require("color"));
|
|
11
|
-
|
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
11
|
const RGBA_PATTERN = /^rgba/i;
|
|
15
12
|
const RGBA_TRANSPARENT = 'rgba(0,0,0,0)';
|
|
16
13
|
const ColorMaping = {
|
|
17
14
|
transparent: RGBA_TRANSPARENT,
|
|
18
15
|
inherit: ''
|
|
19
16
|
};
|
|
20
|
-
|
|
21
17
|
function isTransparent(source) {
|
|
22
18
|
if (!source) {
|
|
23
19
|
return true;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
const hex = toCSSColor(source);
|
|
27
22
|
return !hex || hex === RGBA_TRANSPARENT;
|
|
28
23
|
}
|
|
29
|
-
|
|
30
24
|
function toCSSColor(source) {
|
|
31
25
|
if (!source) {
|
|
32
26
|
return '';
|
|
33
27
|
}
|
|
34
|
-
|
|
35
28
|
if (source in ColorMaping) {
|
|
36
29
|
return ColorMaping[source];
|
|
37
30
|
}
|
|
38
|
-
|
|
39
31
|
if (source && RGBA_PATTERN.test(source)) {
|
|
40
32
|
const color = (0, _color.default)(source);
|
|
41
|
-
|
|
42
33
|
if (color.valpha === 0) {
|
|
43
34
|
ColorMaping[source] = RGBA_TRANSPARENT;
|
|
44
35
|
return RGBA_TRANSPARENT;
|
|
45
36
|
}
|
|
46
|
-
|
|
47
37
|
const rgba = color.toString();
|
|
48
38
|
ColorMaping[source] = rgba.toString();
|
|
49
39
|
return rgba;
|
|
50
40
|
}
|
|
51
|
-
|
|
52
41
|
let hex = '';
|
|
53
|
-
|
|
54
42
|
try {
|
|
55
43
|
hex = (0, _color.default)(source).hex().toLowerCase();
|
|
56
44
|
ColorMaping[source] = hex;
|
|
@@ -58,9 +46,7 @@ function toCSSColor(source) {
|
|
|
58
46
|
console.warn('unable to convert to hex', source);
|
|
59
47
|
ColorMaping[source] = '';
|
|
60
48
|
}
|
|
61
|
-
|
|
62
49
|
return hex;
|
|
63
50
|
}
|
|
64
|
-
|
|
65
51
|
var _default = toCSSColor;
|
|
66
52
|
exports.default = _default;
|
|
@@ -14,21 +14,24 @@ const LINE_SPACING_150 = '165%';
|
|
|
14
14
|
exports.LINE_SPACING_150 = LINE_SPACING_150;
|
|
15
15
|
const LINE_SPACING_200 = '232%';
|
|
16
16
|
exports.LINE_SPACING_200 = LINE_SPACING_200;
|
|
17
|
-
const NUMBER_VALUE_PATTERN = /^\d+(.\d+)?$/;
|
|
17
|
+
const NUMBER_VALUE_PATTERN = /^\d+(.\d+)?$/;
|
|
18
|
+
|
|
19
|
+
// Normalize the css line-height vlaue to percentage-based value if applicable.
|
|
18
20
|
// Also, it calibrates the incorrect line spacing value exported from Google
|
|
19
21
|
// Doc.
|
|
20
|
-
|
|
21
22
|
function toCSSLineSpacing(source) {
|
|
22
23
|
if (!source) {
|
|
23
24
|
return '';
|
|
24
25
|
}
|
|
26
|
+
let strValue = String(source);
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
// e.g. line-height: 1.5;
|
|
28
29
|
if (NUMBER_VALUE_PATTERN.test(strValue)) {
|
|
29
30
|
const numValue = parseFloat(strValue);
|
|
30
31
|
strValue = String(Math.round(numValue * 100)) + '%';
|
|
31
|
-
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Google Doc exports line spacing with wrong values. For instance:
|
|
32
35
|
// - Single => 100%
|
|
33
36
|
// - 1.15 => 115%
|
|
34
37
|
// - Double => 200%
|
|
@@ -38,23 +41,19 @@ function toCSSLineSpacing(source) {
|
|
|
38
41
|
// - Double => 232%
|
|
39
42
|
// The following `if` block will calibrate the value if applicable.
|
|
40
43
|
|
|
41
|
-
|
|
42
44
|
if (strValue === '100%') {
|
|
43
45
|
return LINE_SPACING_100;
|
|
44
46
|
}
|
|
45
|
-
|
|
46
47
|
if (strValue === '115%') {
|
|
47
48
|
return LINE_SPACING_115;
|
|
48
49
|
}
|
|
49
|
-
|
|
50
50
|
if (strValue === '150%') {
|
|
51
51
|
return LINE_SPACING_150;
|
|
52
52
|
}
|
|
53
|
-
|
|
54
53
|
if (strValue === '200%') {
|
|
55
54
|
return LINE_SPACING_200;
|
|
56
|
-
}
|
|
57
|
-
|
|
55
|
+
}
|
|
58
56
|
|
|
57
|
+
// e.g. line-height: 15px;
|
|
59
58
|
return strValue;
|
|
60
59
|
}
|
package/dist/ui/toHexColor.js
CHANGED
|
@@ -4,27 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = toHexColor;
|
|
7
|
-
|
|
8
7
|
var _color = _interopRequireDefault(require("color"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const ColorMaping = {
|
|
13
10
|
transparent: '',
|
|
14
11
|
inherit: ''
|
|
15
12
|
};
|
|
16
|
-
|
|
17
13
|
function toHexColor(source) {
|
|
18
14
|
if (!source) {
|
|
19
15
|
return '';
|
|
20
16
|
}
|
|
21
|
-
|
|
22
17
|
if (source in ColorMaping) {
|
|
23
18
|
return ColorMaping[source];
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
let hex = '';
|
|
27
|
-
|
|
28
21
|
try {
|
|
29
22
|
hex = (0, _color.default)(source).hex().toLowerCase();
|
|
30
23
|
ColorMaping[source] = hex;
|
|
@@ -32,6 +25,5 @@ function toHexColor(source) {
|
|
|
32
25
|
console.warn('unable to convert to hex', source);
|
|
33
26
|
ColorMaping[source] = '';
|
|
34
27
|
}
|
|
35
|
-
|
|
36
28
|
return hex;
|
|
37
29
|
}
|
package/dist/ui/uuid.js
CHANGED