occam-dom 3.1.130 → 4.0.2
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/README.md +1 -53
- package/package.json +9 -11
- package/bin/main.js +0 -15
- package/example.js +0 -35580
- package/index.html +0 -47
- package/lib/constants.js +0 -13
- package/lib/example/utilities/token.js +0 -28
- package/lib/example/view/div/sizeable.js +0 -39
- package/lib/example/view/input/expression.js +0 -156
- package/lib/example/view/input/maximumDepth.js +0 -156
- package/lib/example/view/input.js +0 -39
- package/lib/example/view/subHeading.js +0 -39
- package/lib/example/view/textarea/content.js +0 -155
- package/lib/example/view/textarea/nodes.js +0 -176
- package/lib/example/view/textarea/parseTree.js +0 -183
- package/lib/example/view/textarea.js +0 -39
- package/lib/example/view.js +0 -250
- package/lib/example.js +0 -19
- package/lib/index.js +0 -27
- package/lib/query.js +0 -168
- package/lib/spread.js +0 -86
- package/lib/utilities/array.js +0 -61
- package/lib/utilities/query.js +0 -79
- package/src/constants.js +0 -3
- package/src/example/utilities/token.js +0 -21
- package/src/example/view/div/sizeable.js +0 -12
- package/src/example/view/input/expression.js +0 -35
- package/src/example/view/input/maximumDepth.js +0 -35
- package/src/example/view/input.js +0 -14
- package/src/example/view/subHeading.js +0 -16
- package/src/example/view/textarea/content.js +0 -33
- package/src/example/view/textarea/nodes.js +0 -64
- package/src/example/view/textarea/parseTree.js +0 -50
- package/src/example/view/textarea.js +0 -18
- package/src/example/view.js +0 -120
- package/src/example.js +0 -21
- package/src/index.js +0 -4
- package/src/query.js +0 -170
- package/src/spread.js +0 -65
- package/src/utilities/array.js +0 -30
- package/src/utilities/query.js +0 -52
package/lib/utilities/query.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
default: function() {
|
|
13
|
-
return _default;
|
|
14
|
-
},
|
|
15
|
-
queryByClass: function() {
|
|
16
|
-
return queryByClass;
|
|
17
|
-
},
|
|
18
|
-
queryByClasses: function() {
|
|
19
|
-
return queryByClasses;
|
|
20
|
-
},
|
|
21
|
-
queryByExpression: function() {
|
|
22
|
-
return queryByExpression;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var _query = /*#__PURE__*/ _interop_require_default(require("../query"));
|
|
26
|
-
function _instanceof(left, right) {
|
|
27
|
-
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
28
|
-
return !!right[Symbol.hasInstance](left);
|
|
29
|
-
} else {
|
|
30
|
-
return left instanceof right;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function _interop_require_default(obj) {
|
|
34
|
-
return obj && obj.__esModule ? obj : {
|
|
35
|
-
default: obj
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function queryByClass(node, Class) {
|
|
39
|
-
var nodes = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
|
|
40
|
-
if (_instanceof(node, Class)) {
|
|
41
|
-
nodes.push(node);
|
|
42
|
-
}
|
|
43
|
-
var nodeNonTerminalNode = node.isNonTerminalNode();
|
|
44
|
-
if (nodeNonTerminalNode) {
|
|
45
|
-
var childNodes = node.getChildNodes();
|
|
46
|
-
childNodes.forEach(function(childNode) {
|
|
47
|
-
return queryByClass(childNode, Class, nodes);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return nodes;
|
|
51
|
-
}
|
|
52
|
-
function queryByClasses(node, Classes) {
|
|
53
|
-
var nodes = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
|
|
54
|
-
Classes.some(function(Class) {
|
|
55
|
-
if (_instanceof(node, Class)) {
|
|
56
|
-
nodes.push(node);
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
var nodeNonTerminalNode = node.isNonTerminalNode();
|
|
61
|
-
if (nodeNonTerminalNode) {
|
|
62
|
-
var childNodes = node.getChildNodes();
|
|
63
|
-
childNodes.forEach(function(childNode) {
|
|
64
|
-
return queryByClasses(childNode, Classes, nodes);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return nodes;
|
|
68
|
-
}
|
|
69
|
-
function queryByExpression(node, expression, maximumDepth) {
|
|
70
|
-
var query = _query.default.fromExpression(expression, maximumDepth), nodes = query.execute(node);
|
|
71
|
-
return nodes;
|
|
72
|
-
}
|
|
73
|
-
var _default = {
|
|
74
|
-
queryByClass: queryByClass,
|
|
75
|
-
queryByClasses: queryByClasses,
|
|
76
|
-
queryByExpression: queryByExpression
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBRdWVyeSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5QnlDbGFzcyhub2RlLCBDbGFzcywgbm9kZXMgPSBbXSkge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIENsYXNzKSB7XG4gICAgbm9kZXMucHVzaChub2RlKTtcbiAgfVxuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4gcXVlcnlCeUNsYXNzKGNoaWxkTm9kZSwgQ2xhc3MsIG5vZGVzKSk7XG4gIH1cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUJ5Q2xhc3Nlcyhub2RlLCBDbGFzc2VzLCBub2RlcyA9IFtdKSB7XG4gIENsYXNzZXMuc29tZSgoQ2xhc3MpID0+IHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENsYXNzKSB7XG4gICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4gcXVlcnlCeUNsYXNzZXMoY2hpbGROb2RlLCBDbGFzc2VzLCBub2RlcykpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlCeUV4cHJlc3Npb24obm9kZSwgZXhwcmVzc2lvbiwgbWF4aW11bURlcHRoKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgbWF4aW11bURlcHRoKSxcbiAgICAgICAgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gIHJldHVybiBub2Rlcztcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBxdWVyeUJ5Q2xhc3MsXG4gIHF1ZXJ5QnlDbGFzc2VzLFxuICBxdWVyeUJ5RXhwcmVzc2lvblxufTtcbiJdLCJuYW1lcyI6WyJxdWVyeUJ5Q2xhc3MiLCJxdWVyeUJ5Q2xhc3NlcyIsInF1ZXJ5QnlFeHByZXNzaW9uIiwibm9kZSIsIkNsYXNzIiwibm9kZXMiLCJwdXNoIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2hpbGROb2RlIiwiQ2xhc3NlcyIsInNvbWUiLCJleHByZXNzaW9uIiwibWF4aW11bURlcHRoIiwicXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uIiwiZXhlY3V0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBK0NBLE9BSUU7ZUFKRjs7SUEzQ2dCQSxZQUFZO2VBQVpBOztJQWdCQUMsY0FBYztlQUFkQTs7SUFvQkFDLGlCQUFpQjtlQUFqQkE7Ozs0REF0Q0U7Ozs7Ozs7Ozs7Ozs7QUFFWCxTQUFTRixhQUFhRyxJQUFJLEVBQUVDLEtBQUs7UUFBRUMsUUFBQUEsaUVBQVEsRUFBRTtJQUNsRCxJQUFJRixBQUFJLFlBQUpBLE1BQWdCQyxRQUFPO1FBQ3pCQyxNQUFNQyxJQUFJLENBQUNIO0lBQ2I7SUFFQSxJQUFNSSxzQkFBc0JKLEtBQUtLLGlCQUFpQjtJQUVsRCxJQUFJRCxxQkFBcUI7UUFDdkIsSUFBTUUsYUFBYU4sS0FBS08sYUFBYTtRQUVyQ0QsV0FBV0UsT0FBTyxDQUFDLFNBQUNDO21CQUFjWixhQUFhWSxXQUFXUixPQUFPQzs7SUFDbkU7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU0osZUFBZUUsSUFBSSxFQUFFVSxPQUFPO1FBQUVSLFFBQUFBLGlFQUFRLEVBQUU7SUFDdERRLFFBQVFDLElBQUksQ0FBQyxTQUFDVjtRQUNaLElBQUlELEFBQUksWUFBSkEsTUFBZ0JDLFFBQU87WUFDekJDLE1BQU1DLElBQUksQ0FBQ0g7WUFFWCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLElBQU1JLHNCQUFzQkosS0FBS0ssaUJBQWlCO0lBRWxELElBQUlELHFCQUFxQjtRQUN2QixJQUFNRSxhQUFhTixLQUFLTyxhQUFhO1FBRXJDRCxXQUFXRSxPQUFPLENBQUMsU0FBQ0M7bUJBQWNYLGVBQWVXLFdBQVdDLFNBQVNSOztJQUN2RTtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTSCxrQkFBa0JDLElBQUksRUFBRVksVUFBVSxFQUFFQyxZQUFZO0lBQzlELElBQU1DLFFBQVFDLGNBQUssQ0FBQ0MsY0FBYyxDQUFDSixZQUFZQyxlQUN6Q1gsUUFBUVksTUFBTUcsT0FBTyxDQUFDakI7SUFFNUIsT0FBT0U7QUFDVDtJQUVBLFdBQWU7SUFDYkwsY0FBQUE7SUFDQUMsZ0JBQUFBO0lBQ0FDLG1CQUFBQTtBQUNGIn0=
|
package/src/constants.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
export function tokenIndexFromTerminalNodeAndTokens(terminalNode, tokens) {
|
|
4
|
-
const significantToken = terminalNode.getSignificantToken(),
|
|
5
|
-
significantTokenIndex = tokens.indexOf(significantToken),
|
|
6
|
-
tokenIndex = `(${significantTokenIndex})`;
|
|
7
|
-
|
|
8
|
-
return tokenIndex;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export function tokenIndexesFromNonTerminalNodeAndTokens(nonTerminalNode, tokens) {
|
|
12
|
-
const firstSignificantToken = nonTerminalNode.getFirstSignificantToken(),
|
|
13
|
-
lastSignificantToken = nonTerminalNode.getLastSignificantToken(),
|
|
14
|
-
firstSignificantTokenIndex = tokens.indexOf(firstSignificantToken),
|
|
15
|
-
lastSignificantTokenIndex = tokens.indexOf(lastSignificantToken),
|
|
16
|
-
tokenIndexes = (firstSignificantTokenIndex !== lastSignificantTokenIndex) ?
|
|
17
|
-
`(${firstSignificantTokenIndex}-${lastSignificantTokenIndex})` :
|
|
18
|
-
`(${firstSignificantTokenIndex})`;
|
|
19
|
-
|
|
20
|
-
return tokenIndexes;
|
|
21
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Input from "../input";
|
|
4
|
-
|
|
5
|
-
export default class ExpressionInput extends Input {
|
|
6
|
-
getExpression() {
|
|
7
|
-
const value = this.getValue(),
|
|
8
|
-
expression = value; ///
|
|
9
|
-
|
|
10
|
-
return expression;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
setExpression(expression) {
|
|
14
|
-
const value = expression; ///
|
|
15
|
-
|
|
16
|
-
this.setValue(value);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
parentContext() {
|
|
20
|
-
const getExpression = this.getExpression.bind(this),
|
|
21
|
-
setExpression = this.setExpression.bind(this),
|
|
22
|
-
setExpressionReadOnly = this.setReadOnly.bind(this); ///;
|
|
23
|
-
|
|
24
|
-
return ({
|
|
25
|
-
getExpression,
|
|
26
|
-
setExpression,
|
|
27
|
-
setExpressionReadOnly
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
static defaultProperties = {
|
|
32
|
-
className: "expression",
|
|
33
|
-
spellCheck: "false"
|
|
34
|
-
};
|
|
35
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Input from "../input";
|
|
4
|
-
|
|
5
|
-
export default class MaximumDepthInput extends Input {
|
|
6
|
-
getMaximumDepth() {
|
|
7
|
-
const value = this.getValue(),
|
|
8
|
-
maximumDepth = Number(value);
|
|
9
|
-
|
|
10
|
-
return maximumDepth;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
setMaximumDepth(maximumDepth) {
|
|
14
|
-
const value = maximumDepth; ///
|
|
15
|
-
|
|
16
|
-
this.setValue(value);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
parentContext() {
|
|
20
|
-
const getMaximumDepth = this.getMaximumDepth.bind(this),
|
|
21
|
-
setMaximumDepth = this.setMaximumDepth.bind(this),
|
|
22
|
-
setMaximumDepthReadOnly = this.setReadOnly.bind(this); ///;
|
|
23
|
-
|
|
24
|
-
return ({
|
|
25
|
-
getMaximumDepth,
|
|
26
|
-
setMaximumDepth,
|
|
27
|
-
setMaximumDepthReadOnly
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
static defaultProperties = {
|
|
32
|
-
className: "maximum-depth",
|
|
33
|
-
spellCheck: "false"
|
|
34
|
-
};
|
|
35
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Textarea from "../textarea";
|
|
4
|
-
|
|
5
|
-
export default class ContentTextarea extends Textarea {
|
|
6
|
-
getContent() {
|
|
7
|
-
const value = this.getValue(),
|
|
8
|
-
content = value; ///
|
|
9
|
-
|
|
10
|
-
return content;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
setContent(content) {
|
|
14
|
-
const value = content;
|
|
15
|
-
|
|
16
|
-
this.setValue(value);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
parentContext() {
|
|
20
|
-
const getContent = this.getContent.bind(this),
|
|
21
|
-
setContent = this.setContent.bind(this);
|
|
22
|
-
|
|
23
|
-
return ({
|
|
24
|
-
getContent,
|
|
25
|
-
setContent
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static defaultProperties = {
|
|
30
|
-
className: "content",
|
|
31
|
-
spellCheck: "false"
|
|
32
|
-
};
|
|
33
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Textarea from "../textarea";
|
|
4
|
-
|
|
5
|
-
import { EMPTY_STRING } from "../../../constants";
|
|
6
|
-
import { tokenIndexFromTerminalNodeAndTokens, tokenIndexesFromNonTerminalNodeAndTokens } from "../../utilities/token"
|
|
7
|
-
|
|
8
|
-
export default class NodesTextarea extends Textarea {
|
|
9
|
-
getNodes() {
|
|
10
|
-
const value = this.getValue(),
|
|
11
|
-
nodes = value; ///
|
|
12
|
-
|
|
13
|
-
return nodes;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
setNodes(nodes, tokens) { ///
|
|
17
|
-
const value = nodes.reduce((value, node) => {
|
|
18
|
-
const nodeTerminalNode = node.isTerminalNode();
|
|
19
|
-
|
|
20
|
-
if (nodeTerminalNode) {
|
|
21
|
-
const terminalNode = node, ///
|
|
22
|
-
significantToken = terminalNode.getSignificantToken(),
|
|
23
|
-
significantTokenType = significantToken.getType(),
|
|
24
|
-
tokenIndex = tokenIndexFromTerminalNodeAndTokens(terminalNode, tokens);
|
|
25
|
-
|
|
26
|
-
value = `${value}[${significantTokenType}]${tokenIndex}\n`;
|
|
27
|
-
} else {
|
|
28
|
-
const nonTerminalNode = node, ///
|
|
29
|
-
ruleName = nonTerminalNode.getRuleName(),
|
|
30
|
-
tokenIndexes = tokenIndexesFromNonTerminalNodeAndTokens(nonTerminalNode, tokens);
|
|
31
|
-
|
|
32
|
-
value = `${value}${ruleName}${tokenIndexes}\n`;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return value;
|
|
36
|
-
}, EMPTY_STRING);
|
|
37
|
-
|
|
38
|
-
this.setValue(value);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
clearNodes() {
|
|
42
|
-
const value = EMPTY_STRING;
|
|
43
|
-
|
|
44
|
-
this.setValue(value);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
parentContext() {
|
|
48
|
-
const getNodes = this.getNodes.bind(this),
|
|
49
|
-
setNodes = this.setNodes.bind(this),
|
|
50
|
-
clearNodes = this.clearNodes.bind(this);
|
|
51
|
-
|
|
52
|
-
return ({
|
|
53
|
-
getNodes,
|
|
54
|
-
setNodes,
|
|
55
|
-
clearNodes
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static defaultProperties = {
|
|
60
|
-
className: "nodes",
|
|
61
|
-
spellCheck: "false",
|
|
62
|
-
readOnly: true
|
|
63
|
-
};
|
|
64
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import withStyle from "easy-with-style"; ///
|
|
4
|
-
|
|
5
|
-
import Textarea from "../textarea";
|
|
6
|
-
|
|
7
|
-
import { EMPTY_STRING } from "../../../constants";
|
|
8
|
-
|
|
9
|
-
class ParseTreeTextarea extends Textarea {
|
|
10
|
-
setParseTree(parseTree) {
|
|
11
|
-
if (parseTree !== null) {
|
|
12
|
-
parseTree.shiftLine(); //
|
|
13
|
-
|
|
14
|
-
const parseTreeString = parseTree.asString(),
|
|
15
|
-
value = parseTreeString; ///
|
|
16
|
-
|
|
17
|
-
this.setValue(value);
|
|
18
|
-
} else {
|
|
19
|
-
this.clearParseTree();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
clearParseTree() {
|
|
24
|
-
const value = EMPTY_STRING;
|
|
25
|
-
|
|
26
|
-
this.setValue(value);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
parentContext() {
|
|
30
|
-
const setParseTree = this.setParseTree.bind(this),
|
|
31
|
-
clearParseTree = this.clearParseTree.bind(this);
|
|
32
|
-
|
|
33
|
-
return ({
|
|
34
|
-
setParseTree,
|
|
35
|
-
clearParseTree
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static defaultProperties = {
|
|
40
|
-
className: "tokens",
|
|
41
|
-
spellCheck: "false",
|
|
42
|
-
readOnly: true
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export default withStyle(ParseTreeTextarea)`
|
|
47
|
-
|
|
48
|
-
height: 32rem;
|
|
49
|
-
|
|
50
|
-
`;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import withStyle from "easy-with-style"; ///
|
|
4
|
-
|
|
5
|
-
import { Textarea } from "easy";
|
|
6
|
-
|
|
7
|
-
export default withStyle(Textarea)`
|
|
8
|
-
|
|
9
|
-
border: 1px solid darkgrey;
|
|
10
|
-
height: 12rem;
|
|
11
|
-
resize: vertical;
|
|
12
|
-
padding: 0.25rem;
|
|
13
|
-
font-size: 1.2rem;
|
|
14
|
-
line-height: 1.5rem;
|
|
15
|
-
white-space: pre;
|
|
16
|
-
font-family: monospace;
|
|
17
|
-
|
|
18
|
-
`;
|
package/src/example/view.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import withStyle from "easy-with-style"; ///
|
|
4
|
-
|
|
5
|
-
import { Element } from "easy";
|
|
6
|
-
import { queryUtilities } from "../index"; ///
|
|
7
|
-
import { CSSLexer, CSSParser } from "with-style";
|
|
8
|
-
import { RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv } from "easy-layout";
|
|
9
|
-
|
|
10
|
-
import SubHeading from "./view/subHeading";
|
|
11
|
-
import SizeableDiv from "./view/div/sizeable";
|
|
12
|
-
import NodesTextarea from "./view/textarea/nodes";
|
|
13
|
-
import ExpressionInput from "./view/input/expression";
|
|
14
|
-
import ContentTextarea from "./view/textarea/content";
|
|
15
|
-
import MaximumDepthInput from "./view/input/maximumDepth";
|
|
16
|
-
import ParseTreeTextarea from "./view/textarea/parseTree";
|
|
17
|
-
|
|
18
|
-
const cssLexer = CSSLexer.fromNothing(),
|
|
19
|
-
cssParser = CSSParser.fromNothing();
|
|
20
|
-
|
|
21
|
-
const { queryByExpression } = queryUtilities;
|
|
22
|
-
|
|
23
|
-
class View extends Element {
|
|
24
|
-
keyUpHandler = (event, element) => {
|
|
25
|
-
try {
|
|
26
|
-
const content = this.getContent(),
|
|
27
|
-
tokens = cssLexer.tokenise(content),
|
|
28
|
-
node = cssParser.parse(tokens),
|
|
29
|
-
abridged = true,
|
|
30
|
-
parseTree = node.asParseTree(tokens, abridged),
|
|
31
|
-
expression = this.getExpression(),
|
|
32
|
-
maximumDepth = this.getMaximumDepth(),
|
|
33
|
-
nodes = queryByExpression(node, expression, maximumDepth);
|
|
34
|
-
|
|
35
|
-
this.setNodes(nodes, tokens); ///
|
|
36
|
-
|
|
37
|
-
this.setParseTree(parseTree);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.log(error);
|
|
40
|
-
|
|
41
|
-
this.clearNodes();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
childElements() {
|
|
46
|
-
return ([
|
|
47
|
-
|
|
48
|
-
<ColumnsDiv>
|
|
49
|
-
<SizeableDiv>
|
|
50
|
-
<RowsDiv>
|
|
51
|
-
<SubHeading>
|
|
52
|
-
Expression
|
|
53
|
-
</SubHeading>
|
|
54
|
-
<ExpressionInput onKeyUp={this.keyUpHandler} />
|
|
55
|
-
<SubHeading>
|
|
56
|
-
Maximum depth
|
|
57
|
-
</SubHeading>
|
|
58
|
-
<MaximumDepthInput onKeyUp={this.keyUpHandler} />
|
|
59
|
-
<SubHeading>
|
|
60
|
-
Nodes
|
|
61
|
-
</SubHeading>
|
|
62
|
-
<NodesTextarea />
|
|
63
|
-
</RowsDiv>
|
|
64
|
-
</SizeableDiv>
|
|
65
|
-
<VerticalSplitterDiv />
|
|
66
|
-
<ColumnDiv>
|
|
67
|
-
<RowsDiv>
|
|
68
|
-
<SubHeading>
|
|
69
|
-
Content
|
|
70
|
-
</SubHeading>
|
|
71
|
-
<ContentTextarea onKeyUp={this.keyUpHandler} />
|
|
72
|
-
<SubHeading>
|
|
73
|
-
Parse tree
|
|
74
|
-
</SubHeading>
|
|
75
|
-
<ParseTreeTextarea />
|
|
76
|
-
</RowsDiv>
|
|
77
|
-
</ColumnDiv>
|
|
78
|
-
</ColumnsDiv>
|
|
79
|
-
|
|
80
|
-
]);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
initialise() {
|
|
84
|
-
this.assignContext();
|
|
85
|
-
|
|
86
|
-
const { initialContent, initialExpression, initialMaximumDepth } = this.constructor,
|
|
87
|
-
content = initialContent, ///
|
|
88
|
-
expression = initialExpression, ///
|
|
89
|
-
maximumDepth = initialMaximumDepth; ///
|
|
90
|
-
|
|
91
|
-
this.setContent(content);
|
|
92
|
-
|
|
93
|
-
this.setExpression(expression);
|
|
94
|
-
|
|
95
|
-
this.setMaximumDepth(maximumDepth);
|
|
96
|
-
|
|
97
|
-
this.keyUpHandler(); ///
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
static initialContent = `.view {
|
|
101
|
-
background: red;
|
|
102
|
-
}
|
|
103
|
-
`;
|
|
104
|
-
|
|
105
|
-
static initialExpression = "//@special[2...4]";
|
|
106
|
-
|
|
107
|
-
static initialMaximumDepth = 5;
|
|
108
|
-
|
|
109
|
-
static tagName = "div";
|
|
110
|
-
|
|
111
|
-
static defaultProperties = {
|
|
112
|
-
className: "view"
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export default withStyle(View)`
|
|
117
|
-
|
|
118
|
-
padding: 1rem;
|
|
119
|
-
|
|
120
|
-
`;
|
package/src/example.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import "juxtapose";
|
|
4
|
-
|
|
5
|
-
import withStyle from "easy-with-style"; ///
|
|
6
|
-
|
|
7
|
-
import { Body } from "easy";
|
|
8
|
-
|
|
9
|
-
import View from "./example/view";
|
|
10
|
-
|
|
11
|
-
const { renderStyles } = withStyle;
|
|
12
|
-
|
|
13
|
-
const body = new Body();
|
|
14
|
-
|
|
15
|
-
renderStyles();
|
|
16
|
-
|
|
17
|
-
body.mount(
|
|
18
|
-
|
|
19
|
-
<View/>
|
|
20
|
-
|
|
21
|
-
);
|
package/src/index.js
DELETED