retold-content-system 1.0.12 → 1.0.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/README.md +130 -68
- package/html/codemirror-bundle.js +73 -41
- package/package.json +13 -12
- package/source/Pict-Application-ContentEditor.js +34 -0
- package/source/cli/ContentSystem-Server-Setup.js +77 -3
- package/web-application/codemirror-bundle.js +73 -41
- package/web-application/js/pict.min.js +2 -2
- package/web-application/js/pict.min.js.map +1 -1
- package/web-application/retold-content-system.compatible.js +553 -295
- package/web-application/retold-content-system.compatible.js.map +1 -1
- package/web-application/retold-content-system.compatible.min.js +42 -5
- package/web-application/retold-content-system.compatible.min.js.map +1 -1
- package/web-application/retold-content-system.js +419 -162
- package/web-application/retold-content-system.js.map +1 -1
- package/web-application/retold-content-system.min.js +42 -5
- package/web-application/retold-content-system.min.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,107 +1,169 @@
|
|
|
1
1
|
# Retold Content System
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
A full-stack markdown content editor and documentation reader. Point it at any folder of markdown files and you get a live documentation site (reader), an in-browser editor with a file browser, syntax-highlighted code editing, live markdown preview with Mermaid and KaTeX, and a drop-in CLI server. Every persistence boundary -- markdown read, markdown save, image upload, file listing -- is a named hook that developers can replace to plug the system into any backend.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Drop-In CLI** -- `npx rcs serve ./my-docs` starts a complete reader + editor server in seconds
|
|
12
|
+
- **Dual Applications** -- Reader (`/`) renders documentation via `pict-docuserve`; Editor (`/edit.html`) provides in-browser authoring
|
|
13
|
+
- **File Browser Sidebar** -- Tree + list views over your content folder with breadcrumbs, create-file / create-folder, hidden-file toggle, and keyboard-driven navigation
|
|
14
|
+
- **Markdown Editor** -- CodeMirror-based editor with formatting toolbar, line numbers, word wrap, and live preview side-by-side
|
|
15
|
+
- **Code Editor** -- CodeJar + highlight.js editor with syntax highlighting for 190+ languages (JS, TS, Python, Java, Go, SQL, HTML, CSS, JSON, YAML, ...)
|
|
16
|
+
- **Live Preview** -- Renders markdown with GitHub-flavored styling, Mermaid diagrams, and KaTeX equations in real time
|
|
17
|
+
- **Image Upload** -- F3 / toolbar upload places images next to the file being edited with smart filename deduping
|
|
18
|
+
- **Binary Previews** -- Images, audio, video, and document files get automatic preview cards with download and open-in-new-tab actions
|
|
19
|
+
- **Topics Manifest** -- `.pict_documentation_topics.json` links named topics to line ranges in your markdown for API-doc-style cross-references
|
|
20
|
+
- **Pluggable Persistence** -- Override `loadFile`, `saveFile`, and `uploadImage` on the client provider or replace the REST endpoints on the server to move content into a database, object store, or any other backend
|
|
21
|
+
- **Ultravisor Beacon Support** -- Optional `--beacon` mode exposes the same read / save / list / mkdir operations as workflow capabilities
|
|
22
|
+
- **Pict Native** -- Built on `pict-application`, `pict-provider`, `pict-view`, `pict-docuserve`, `pict-section-markdowneditor`, `pict-section-code`, `pict-section-filebrowser`
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
6
25
|
|
|
7
26
|
```bash
|
|
8
27
|
npm install -g retold-content-system
|
|
28
|
+
# or as a project dep
|
|
29
|
+
npm install retold-content-system
|
|
9
30
|
```
|
|
10
31
|
|
|
11
32
|
## Quick Start
|
|
12
33
|
|
|
13
34
|
```bash
|
|
14
|
-
|
|
15
|
-
echo "# Hello" > README.md
|
|
35
|
+
# Serve the current directory on a random port
|
|
16
36
|
rcs serve
|
|
17
|
-
```
|
|
18
37
|
|
|
19
|
-
|
|
38
|
+
# Serve a specific folder on a specific port
|
|
39
|
+
rcs serve ~/Documents/handbook -p 8080
|
|
20
40
|
|
|
21
|
-
|
|
41
|
+
# With Ultravisor beacon mode
|
|
42
|
+
rcs serve ./docs -b http://localhost:54321
|
|
43
|
+
```
|
|
22
44
|
|
|
23
|
-
The
|
|
45
|
+
The CLI prints the URL once it's ready:
|
|
24
46
|
|
|
25
|
-
|
|
47
|
+
```
|
|
48
|
+
==========================================================
|
|
49
|
+
Retold Content System running on http://localhost:7234
|
|
50
|
+
==========================================================
|
|
51
|
+
Content: /Users/steven/Documents/handbook
|
|
52
|
+
==========================================================
|
|
53
|
+
```
|
|
26
54
|
|
|
27
|
-
|
|
55
|
+
Open `/` for the reader or `/edit.html` for the editor.
|
|
56
|
+
|
|
57
|
+
## CLI Reference
|
|
58
|
+
|
|
59
|
+
| Command | Description |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `rcs serve [path]` | Start the server. `path` defaults to the current directory (or `./content/` if that exists). |
|
|
62
|
+
| `-p, --port <port>` | TCP port. Defaults to a random port in 7000-7999. |
|
|
63
|
+
| `-b, --beacon <url>` | Connect to an Ultravisor server at `<url>` and register content capabilities. |
|
|
64
|
+
| `--beacon-name <name>` | Beacon worker identity (default `content-system-1`). |
|
|
65
|
+
| `--beacon-password <password>` | Beacon authentication password. |
|
|
66
|
+
|
|
67
|
+
See [docs/cli-reference.md](docs/cli-reference.md) for the full reference.
|
|
68
|
+
|
|
69
|
+
## Pluggable Persistence
|
|
70
|
+
|
|
71
|
+
Every place the system touches storage is a named, overridable boundary. On the client, `ContentEditorProvider` exposes three methods -- `loadFile`, `saveFile`, `uploadImage` -- that you can replace by registering a subclass. On the server, each REST endpoint (`/api/content/read/*`, `/api/content/save/*`, `/api/content/upload-image`, `/api/content/mkdir`) is a standard Orator route you can swap out for a database, S3, or any HTTP backend.
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
const libPictProvider = require('pict-provider');
|
|
75
|
+
|
|
76
|
+
class S3ContentProvider extends libPictProvider
|
|
77
|
+
{
|
|
78
|
+
loadFile(pFilePath, fCallback)
|
|
79
|
+
{
|
|
80
|
+
this.s3.getObject({ Bucket: 'docs', Key: pFilePath }, (err, data) =>
|
|
81
|
+
{
|
|
82
|
+
if (err) return fCallback(err.message, '');
|
|
83
|
+
return fCallback(null, data.Body.toString('utf8'));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
saveFile(pFilePath, pContent, fCallback)
|
|
88
|
+
{
|
|
89
|
+
this.s3.putObject({ Bucket: 'docs', Key: pFilePath, Body: pContent }, (err) =>
|
|
90
|
+
fCallback(err ? err.message : null));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
uploadImage(pFile, fCallback)
|
|
94
|
+
{
|
|
95
|
+
this.s3.putObject({ Bucket: 'images', Key: pFile.name, Body: pFile }, (err) =>
|
|
96
|
+
{
|
|
97
|
+
if (err) return fCallback(err.message);
|
|
98
|
+
return fCallback(null, `https://cdn.example.com/images/${ pFile.name }`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
28
103
|
|
|
29
|
-
|
|
30
|
-
|-------------------|-------------|
|
|
31
|
-
| `[content-path]` | Path to the content folder (default: current directory) |
|
|
32
|
-
| `-p, --port` | Port number (default: random 7000-7999) |
|
|
104
|
+
See [docs/persistence-hooks.md](docs/persistence-hooks.md) for every extension point, including image storage strategies, database-backed examples, and server-side middleware patterns.
|
|
33
105
|
|
|
34
|
-
|
|
35
|
-
# Serve current directory on a random port
|
|
36
|
-
rcs serve
|
|
106
|
+
## Content Folder Conventions
|
|
37
107
|
|
|
38
|
-
|
|
39
|
-
|
|
108
|
+
```
|
|
109
|
+
my-docs/
|
|
110
|
+
├── README.md # reader home page
|
|
111
|
+
├── cover.md # reader splash (optional)
|
|
112
|
+
├── _sidebar.md # reader navigation (optional)
|
|
113
|
+
├── _topbar.md # reader top bar (optional)
|
|
114
|
+
├── .pict_documentation_topics.json # topic manifest (optional)
|
|
115
|
+
├── guides/
|
|
116
|
+
│ ├── getting-started.md
|
|
117
|
+
│ └── images/
|
|
118
|
+
│ └── screenshot.png
|
|
119
|
+
└── api/
|
|
120
|
+
└── reference.md
|
|
40
121
|
```
|
|
41
122
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
## Editor Features
|
|
123
|
+
## Documentation
|
|
45
124
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
125
|
+
- [Overview](docs/README.md)
|
|
126
|
+
- [Quick Start](docs/quickstart.md)
|
|
127
|
+
- [Architecture](docs/architecture.md)
|
|
128
|
+
- [Configuration](docs/configuration.md)
|
|
129
|
+
- [API Reference](docs/api-reference.md)
|
|
130
|
+
- [Code Snippets](docs/code-snippets.md)
|
|
131
|
+
- [Persistence Hooks](docs/persistence-hooks.md) -- how to plug in custom markdown and image storage
|
|
132
|
+
- [CLI Reference](docs/cli-reference.md)
|
|
52
133
|
|
|
53
|
-
|
|
134
|
+
## Keyboard Shortcuts
|
|
54
135
|
|
|
55
136
|
| Shortcut | Action |
|
|
56
|
-
|
|
57
|
-
| `
|
|
58
|
-
| `Escape` | Close file (
|
|
59
|
-
| `F1` | Toggle
|
|
137
|
+
|---|---|
|
|
138
|
+
| `Ctrl+S` / `Cmd+S` | Save the current file |
|
|
139
|
+
| `Escape` | Close the current file (prompts if dirty) |
|
|
140
|
+
| `F1` | Toggle live preview |
|
|
60
141
|
| `F2` | Toggle sidebar |
|
|
61
|
-
| `F3`
|
|
62
|
-
| `F4`
|
|
142
|
+
| `F3` | Upload image at cursor |
|
|
143
|
+
| `F4` | Toggle settings panel |
|
|
63
144
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
The root URL (`/`) serves a pict-docuserve documentation viewer. If your content folder includes `cover.md`, `_sidebar.md`, and `_topbar.md`, the reader uses them for navigation. Otherwise it renders markdown files directly.
|
|
67
|
-
|
|
68
|
-
## Architecture
|
|
69
|
-
|
|
70
|
-
Built on these Retold modules:
|
|
71
|
-
|
|
72
|
-
- **[Orator](https://github.com/stevenvelozo/orator)** -- HTTP server with Restify
|
|
73
|
-
- **[Pict](https://github.com/stevenvelozo/pict)** -- MVC framework for the browser applications
|
|
74
|
-
- **[pict-docuserve](https://github.com/stevenvelozo/pict-docuserve)** -- Documentation reader/viewer
|
|
75
|
-
- **[pict-section-markdowneditor](https://github.com/stevenvelozo/pict-section-markdowneditor)** -- CodeMirror markdown editor component
|
|
76
|
-
- **[pict-section-code](https://github.com/stevenvelozo/pict-section-code)** -- CodeJar code editor component
|
|
77
|
-
- **[pict-section-filebrowser](https://github.com/stevenvelozo/pict-section-filebrowser)** -- File browser component
|
|
78
|
-
- **[pict-service-commandlineutility](https://github.com/stevenvelozo/pict-service-commandlineutility)** -- CLI framework
|
|
79
|
-
|
|
80
|
-
## Development
|
|
145
|
+
## Building
|
|
81
146
|
|
|
82
147
|
```bash
|
|
83
|
-
# Clone and install
|
|
84
|
-
git clone https://github.com/stevenvelozo/retold.git
|
|
85
|
-
cd retold/app/retold-content-system
|
|
86
|
-
npm install
|
|
87
|
-
|
|
88
|
-
# Build everything (CodeMirror bundle, CodeJar bundle, application bundle)
|
|
89
148
|
npm run build-all
|
|
90
|
-
|
|
91
|
-
# Start the dev server
|
|
92
|
-
npm start
|
|
93
149
|
```
|
|
94
150
|
|
|
95
|
-
|
|
151
|
+
Produces a browser bundle at `web-application/retold-content-system.min.js` plus the CodeMirror and CodeJar bundles.
|
|
96
152
|
|
|
97
|
-
##
|
|
98
|
-
|
|
99
|
-
Full documentation is in the `docs/` folder and can be viewed with the content system itself:
|
|
153
|
+
## Related Packages
|
|
100
154
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
155
|
+
- [pict](https://github.com/stevenvelozo/pict) -- MVC framework
|
|
156
|
+
- [pict-application](https://github.com/stevenvelozo/pict-application) -- application host and lifecycle
|
|
157
|
+
- [pict-docuserve](https://github.com/stevenvelozo/pict-docuserve) -- documentation reader used for the `/` route
|
|
158
|
+
- [pict-section-markdowneditor](https://github.com/stevenvelozo/pict-section-markdowneditor) -- CodeMirror-based markdown editor
|
|
159
|
+
- [pict-section-code](https://github.com/stevenvelozo/pict-section-code) -- CodeJar-based code editor
|
|
160
|
+
- [pict-section-filebrowser](https://github.com/stevenvelozo/pict-section-filebrowser) -- file browser sidebar
|
|
161
|
+
- [orator](https://github.com/stevenvelozo/orator) -- REST server framework
|
|
104
162
|
|
|
105
163
|
## License
|
|
106
164
|
|
|
107
165
|
MIT
|
|
166
|
+
|
|
167
|
+
## Contributing
|
|
168
|
+
|
|
169
|
+
Pull requests welcome. See the [Retold Contributing Guide](https://github.com/stevenvelozo/retold/blob/main/docs/contributing.md) for the code of conduct, contribution process, and testing requirements.
|
|
@@ -4214,11 +4214,11 @@ var CodeMirrorModules = (() => {
|
|
|
4214
4214
|
}
|
|
4215
4215
|
let moveX = 0, moveY = 0;
|
|
4216
4216
|
if (y == "nearest") {
|
|
4217
|
-
if (rect.top < bounding.top) {
|
|
4217
|
+
if (rect.top < bounding.top + yMargin) {
|
|
4218
4218
|
moveY = rect.top - (bounding.top + yMargin);
|
|
4219
4219
|
if (side > 0 && rect.bottom > bounding.bottom + moveY)
|
|
4220
4220
|
moveY = rect.bottom - bounding.bottom + yMargin;
|
|
4221
|
-
} else if (rect.bottom > bounding.bottom) {
|
|
4221
|
+
} else if (rect.bottom > bounding.bottom - yMargin) {
|
|
4222
4222
|
moveY = rect.bottom - bounding.bottom + yMargin;
|
|
4223
4223
|
if (side < 0 && rect.top - moveY < bounding.top)
|
|
4224
4224
|
moveY = rect.top - (bounding.top + yMargin);
|
|
@@ -4229,11 +4229,11 @@ var CodeMirrorModules = (() => {
|
|
|
4229
4229
|
moveY = targetTop - bounding.top;
|
|
4230
4230
|
}
|
|
4231
4231
|
if (x == "nearest") {
|
|
4232
|
-
if (rect.left < bounding.left) {
|
|
4232
|
+
if (rect.left < bounding.left + xMargin) {
|
|
4233
4233
|
moveX = rect.left - (bounding.left + xMargin);
|
|
4234
4234
|
if (side > 0 && rect.right > bounding.right + moveX)
|
|
4235
4235
|
moveX = rect.right - bounding.right + xMargin;
|
|
4236
|
-
} else if (rect.right > bounding.right) {
|
|
4236
|
+
} else if (rect.right > bounding.right - xMargin) {
|
|
4237
4237
|
moveX = rect.right - bounding.right + xMargin;
|
|
4238
4238
|
if (side < 0 && rect.left < bounding.left + moveX)
|
|
4239
4239
|
moveX = rect.left - (bounding.left + xMargin);
|
|
@@ -4841,7 +4841,7 @@ var CodeMirrorModules = (() => {
|
|
|
4841
4841
|
});
|
|
4842
4842
|
var scrollHandler = /* @__PURE__ */ Facet.define();
|
|
4843
4843
|
var ScrollTarget = class _ScrollTarget {
|
|
4844
|
-
constructor(range, y
|
|
4844
|
+
constructor(range, y, x, yMargin, xMargin, isSnapshot = false) {
|
|
4845
4845
|
this.range = range;
|
|
4846
4846
|
this.y = y;
|
|
4847
4847
|
this.x = x;
|
|
@@ -7339,6 +7339,16 @@ var CodeMirrorModules = (() => {
|
|
|
7339
7339
|
this.y = (side.top + side.bottom) / 2;
|
|
7340
7340
|
return this.scan(positions, getRects);
|
|
7341
7341
|
}
|
|
7342
|
+
if (closestDx) {
|
|
7343
|
+
if (above && above.bottom > closestRect.top) {
|
|
7344
|
+
this.y = above.bottom - 1;
|
|
7345
|
+
return this.scan(positions, getRects);
|
|
7346
|
+
}
|
|
7347
|
+
if (below && below.top < closestRect.bottom) {
|
|
7348
|
+
this.y = below.top + 1;
|
|
7349
|
+
return this.scan(positions, getRects);
|
|
7350
|
+
}
|
|
7351
|
+
}
|
|
7342
7352
|
let ltr = (bidi ? this.dirAt(positions[closestI], 1) : this.baseDir) == Direction.LTR;
|
|
7343
7353
|
return {
|
|
7344
7354
|
i: closestI,
|
|
@@ -11012,7 +11022,8 @@ var CodeMirrorModules = (() => {
|
|
|
11012
11022
|
scrollTarget = scrollTarget.map(tr.changes);
|
|
11013
11023
|
if (tr.scrollIntoView) {
|
|
11014
11024
|
let { main } = tr.state.selection;
|
|
11015
|
-
|
|
11025
|
+
let { x, y } = this.state.facet(_EditorView.cursorScrollMargin);
|
|
11026
|
+
scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1), "nearest", "nearest", y, x);
|
|
11016
11027
|
}
|
|
11017
11028
|
for (let e of tr.effects)
|
|
11018
11029
|
if (e.is(scrollIntoView))
|
|
@@ -11656,7 +11667,8 @@ var CodeMirrorModules = (() => {
|
|
|
11656
11667
|
cause it to scroll the given position or range into view.
|
|
11657
11668
|
*/
|
|
11658
11669
|
static scrollIntoView(pos, options = {}) {
|
|
11659
|
-
|
|
11670
|
+
var _a2, _b, _c, _d;
|
|
11671
|
+
return scrollIntoView.of(new ScrollTarget(typeof pos == "number" ? EditorSelection.cursor(pos) : pos, (_a2 = options.y) !== null && _a2 !== void 0 ? _a2 : "nearest", (_b = options.x) !== null && _b !== void 0 ? _b : "nearest", (_c = options.yMargin) !== null && _c !== void 0 ? _c : 5, (_d = options.xMargin) !== null && _d !== void 0 ? _d : 5));
|
|
11660
11672
|
}
|
|
11661
11673
|
/**
|
|
11662
11674
|
Return an effect that resets the editor to its current (at the
|
|
@@ -11784,6 +11796,18 @@ var CodeMirrorModules = (() => {
|
|
|
11784
11796
|
EditorView.outerDecorations = outerDecorations;
|
|
11785
11797
|
EditorView.atomicRanges = atomicRanges;
|
|
11786
11798
|
EditorView.bidiIsolatedRanges = bidiIsolatedRanges;
|
|
11799
|
+
EditorView.cursorScrollMargin = /* @__PURE__ */ Facet.define({
|
|
11800
|
+
combine: (inputs) => {
|
|
11801
|
+
let x = 5, y = 5;
|
|
11802
|
+
for (let i of inputs) {
|
|
11803
|
+
if (typeof i == "number")
|
|
11804
|
+
x = y = i;
|
|
11805
|
+
else
|
|
11806
|
+
({ x, y } = i);
|
|
11807
|
+
}
|
|
11808
|
+
return { x, y };
|
|
11809
|
+
}
|
|
11810
|
+
});
|
|
11787
11811
|
EditorView.scrollMargins = scrollMargins;
|
|
11788
11812
|
EditorView.darkTheme = darkTheme;
|
|
11789
11813
|
EditorView.cspNonce = /* @__PURE__ */ Facet.define({ combine: (values2) => values2.length ? values2[0] : "" });
|
|
@@ -12229,7 +12253,7 @@ var CodeMirrorModules = (() => {
|
|
|
12229
12253
|
old = next;
|
|
12230
12254
|
}
|
|
12231
12255
|
this.drawn = markers;
|
|
12232
|
-
if (browser.
|
|
12256
|
+
if (browser.webkit)
|
|
12233
12257
|
this.dom.style.display = this.dom.firstChild ? "" : "none";
|
|
12234
12258
|
}
|
|
12235
12259
|
}
|
|
@@ -16104,8 +16128,12 @@ var CodeMirrorModules = (() => {
|
|
|
16104
16128
|
let { cursor } = this, p = pos - this.offset;
|
|
16105
16129
|
while (!this.done && cursor.from < p) {
|
|
16106
16130
|
if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;
|
|
16107
|
-
else if (
|
|
16108
|
-
|
|
16131
|
+
else if (cursor.to <= pos) {
|
|
16132
|
+
if (!cursor.next(false))
|
|
16133
|
+
this.done = true;
|
|
16134
|
+
} else {
|
|
16135
|
+
break;
|
|
16136
|
+
}
|
|
16109
16137
|
}
|
|
16110
16138
|
}
|
|
16111
16139
|
hasNode(cursor) {
|
|
@@ -18521,6 +18549,8 @@ var CodeMirrorModules = (() => {
|
|
|
18521
18549
|
return { start: firstToken, matched: false };
|
|
18522
18550
|
}
|
|
18523
18551
|
function matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {
|
|
18552
|
+
if (dir < 0 ? !pos : pos == state.doc.length)
|
|
18553
|
+
return null;
|
|
18524
18554
|
let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);
|
|
18525
18555
|
let bracket2 = brackets.indexOf(startCh);
|
|
18526
18556
|
if (bracket2 < 0 || bracket2 % 2 == 0 != dir > 0)
|
|
@@ -27388,12 +27418,12 @@ var CodeMirrorModules = (() => {
|
|
|
27388
27418
|
}
|
|
27389
27419
|
|
|
27390
27420
|
// node_modules/@lezer/css/dist/index.js
|
|
27391
|
-
var descendantOp =
|
|
27421
|
+
var descendantOp = 135;
|
|
27392
27422
|
var Unit = 1;
|
|
27393
|
-
var identifier =
|
|
27394
|
-
var callee =
|
|
27423
|
+
var identifier = 136;
|
|
27424
|
+
var callee = 137;
|
|
27395
27425
|
var VariableName = 2;
|
|
27396
|
-
var queryIdentifier =
|
|
27426
|
+
var queryIdentifier = 138;
|
|
27397
27427
|
var queryVariableName = 3;
|
|
27398
27428
|
var QueryCallee = 4;
|
|
27399
27429
|
var space2 = [
|
|
@@ -27471,10 +27501,12 @@ var CodeMirrorModules = (() => {
|
|
|
27471
27501
|
}
|
|
27472
27502
|
};
|
|
27473
27503
|
var identifiers = new ExternalTokenizer(
|
|
27474
|
-
identifierTokens(identifier, VariableName, callee)
|
|
27504
|
+
identifierTokens(identifier, VariableName, callee),
|
|
27505
|
+
{ contextual: true }
|
|
27475
27506
|
);
|
|
27476
27507
|
var queryIdentifiers = new ExternalTokenizer(
|
|
27477
|
-
identifierTokens(queryIdentifier, queryVariableName, QueryCallee)
|
|
27508
|
+
identifierTokens(queryIdentifier, queryVariableName, QueryCallee),
|
|
27509
|
+
{ contextual: true }
|
|
27478
27510
|
);
|
|
27479
27511
|
var descendant = new ExternalTokenizer((input) => {
|
|
27480
27512
|
if (space2.includes(input.peek(-1))) {
|
|
@@ -27499,8 +27531,8 @@ var CodeMirrorModules = (() => {
|
|
|
27499
27531
|
}
|
|
27500
27532
|
});
|
|
27501
27533
|
var cssHighlighting = styleTags({
|
|
27502
|
-
"AtKeyword import charset namespace keyframes media supports": tags.definitionKeyword,
|
|
27503
|
-
"from to selector": tags.keyword,
|
|
27534
|
+
"AtKeyword import charset namespace keyframes media supports font-feature-values": tags.definitionKeyword,
|
|
27535
|
+
"from to selector scope MatchFlag": tags.keyword,
|
|
27504
27536
|
NamespaceName: tags.namespace,
|
|
27505
27537
|
KeyframeName: tags.labelName,
|
|
27506
27538
|
KeyframeRangeName: tags.operatorKeyword,
|
|
@@ -27513,7 +27545,7 @@ var CodeMirrorModules = (() => {
|
|
|
27513
27545
|
NumberLiteral: tags.number,
|
|
27514
27546
|
KeywordQuery: tags.keyword,
|
|
27515
27547
|
UnaryQueryOp: tags.operatorKeyword,
|
|
27516
|
-
"CallTag ValueName": tags.atom,
|
|
27548
|
+
"CallTag ValueName FontName": tags.atom,
|
|
27517
27549
|
VariableName: tags.variableName,
|
|
27518
27550
|
Callee: tags.operatorKeyword,
|
|
27519
27551
|
Unit: tags.unit,
|
|
@@ -27527,37 +27559,37 @@ var CodeMirrorModules = (() => {
|
|
|
27527
27559
|
"ParenthesizedContent StringLiteral": tags.string,
|
|
27528
27560
|
":": tags.punctuation,
|
|
27529
27561
|
"PseudoOp #": tags.derefOperator,
|
|
27530
|
-
"; ,": tags.separator,
|
|
27562
|
+
"; , |": tags.separator,
|
|
27531
27563
|
"( )": tags.paren,
|
|
27532
27564
|
"[ ]": tags.squareBracket,
|
|
27533
27565
|
"{ }": tags.brace
|
|
27534
27566
|
});
|
|
27535
|
-
var spec_callee = { __proto__: null, lang:
|
|
27536
|
-
var spec_queryIdentifier = { __proto__: null, or:
|
|
27537
|
-
var spec_QueryCallee = { __proto__: null, selector:
|
|
27538
|
-
var spec_AtKeyword = { __proto__: null, "@import":
|
|
27539
|
-
var spec_identifier = { __proto__: null, to:
|
|
27567
|
+
var spec_callee = { __proto__: null, lang: 44, "nth-child": 44, "nth-last-child": 44, "nth-of-type": 44, "nth-last-of-type": 44, dir: 44, "host-context": 44, if: 90, url: 132, "url-prefix": 132, domain: 132, regexp: 132 };
|
|
27568
|
+
var spec_queryIdentifier = { __proto__: null, or: 104, and: 104, not: 112, only: 112, layer: 186 };
|
|
27569
|
+
var spec_QueryCallee = { __proto__: null, selector: 118, layer: 182 };
|
|
27570
|
+
var spec_AtKeyword = { __proto__: null, "@import": 178, "@media": 190, "@charset": 194, "@namespace": 198, "@keyframes": 204, "@supports": 216, "@scope": 220, "@font-feature-values": 226 };
|
|
27571
|
+
var spec_identifier = { __proto__: null, to: 223 };
|
|
27540
27572
|
var parser3 = LRParser.deserialize({
|
|
27541
27573
|
version: 14,
|
|
27542
|
-
states: "
|
|
27543
|
-
stateData: "
|
|
27544
|
-
goto: "
|
|
27545
|
-
nodeNames: "\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles",
|
|
27546
|
-
maxTerm:
|
|
27574
|
+
states: "IpQYQdOOO#}QdOOP$UO`OOO%OQaO'#CfOOQP'#Ce'#CeO%VQdO'#CgO%[Q`O'#CgO%aQaO'#FdO&XQdO'#CkO&xQaO'#CcO'SQdO'#CnO'_QdO'#DtO'dQdO'#DvO'oQdO'#D}O'oQdO'#EQOOQP'#Fd'#FdO)OQhO'#EsOOQS'#Fc'#FcOOQS'#Ev'#EvQYQdOOO)VQdO'#EWO*cQhO'#E^O)VQdO'#E`O*jQdO'#EbO*uQdO'#EeO)zQhO'#EkO*}QdO'#EmO+YQdO'#EpO+_QaO'#CfO+fQ`O'#ETO+kQ`O'#FnO+vQdO'#FnQOQ`OOP,QO&jO'#CaPOOO)CAR)CAROOQP'#Ci'#CiOOQP,59R,59RO%VQdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&XQdO,59VO,]QdO,59YO'_QdO,5:`O'dQdO,5:bO'oQdO,5:iO'oQdO,5:kO'oQdO,5:lO'oQdO'#E}O,hQ`O,58}O,pQdO'#ESOOQS,58},58}OOQP'#Cq'#CqOOQO'#Dr'#DrOOQP,59Y,59YO,wQ`O,59YO,|Q`O,59YOOQP'#Du'#DuOOQP,5:`,5:`O-RQpO'#DwO-^QdO'#DxO-cQ`O'#DxO-hQpO,5:bO.RQaO,5:iO.iQaO,5:lOOQW'#D^'#D^O/eQhO'#DgO/xQhO,5;_O)zQhO'#DeO0VQ`O'#DkO0[QhO'#DnOOQW'#Fj'#FjOOQS,5;_,5;_O0aQ`O'#DhOOQS-E8t-E8tOOQ['#Cv'#CvO0fQdO'#CwO0|QdO'#C}O1dQdO'#DQO1zQ!pO'#DSO4TQ!jO,5:rOOQO'#DX'#DXO,|Q`O'#DWO4eQ!nO'#FgO6hQ`O'#DYO6mQ`O'#DoOOQ['#Fg'#FgO6rQhO'#FqO7QQ`O,5:xO7VQ!bO,5:zOOQS'#Ed'#EdO7_Q`O,5:|O7dQdO,5:|OOQO'#Eg'#EgO7lQ`O,5;PO7qQhO,5;VO'oQdO'#DjOOQS,5;X,5;XO0aQ`O,5;XO7yQdO,5;XOOQS'#FU'#FUO8RQdO'#ErO7QQ`O,5;[O8ZQdO,5:oO8kQdO'#FPO8xQ`O,5<YO8xQ`O,5<YPOOO'#Eu'#EuP9TO&jO,58{POOO,58{,58{OOQP1G.m1G.mOOQP1G.q1G.qOOQP1G.t1G.tO,wQ`O1G.tO,|Q`O1G.tOOQP1G/z1G/zO9`QpO1G/|O9hQaO1G0TO:OQaO1G0VO:fQaO1G0WO:|QaO,5;iOOQO-E8{-E8{OOQS1G.i1G.iO;WQ`O,5:nO;]QdO'#DsO;dQdO'#CuOOQO'#Dz'#DzOOQO,5:d,5:dO-^QdO,5:dOOQP1G/|1G/|O)VQdO1G/|O;kQ!jO'#D^O;yQ!bO,59yO<RQhO,5:ROOQO'#Fk'#FkO;|Q!bO,59}O<ZQhO'#FVO)zQhO,59{O)zQhO'#FVO=OQhO1G0yOOQS1G0y1G0yO=YQhO,5:PO>QQhO'#DlOOQW,5:V,5:VOOQW,5:Y,5:YOOQW,5:S,5:SO>[Q!fO'#FhOOQS'#Fh'#FhOOQS'#Ex'#ExO?lQdO,59cOOQ[,59c,59cO@SQdO,59iOOQ[,59i,59iO@jQdO,59lOOQ[,59l,59lOOQ[,59n,59nO)VQdO,59pOAQQhO'#EYOOQW'#EY'#EYOAlQ`O1G0^O4^QhO1G0^OOQ[,59r,59rO)zQhO'#D[OOQ[,59t,59tOAqQ#tO,5:ZOA|QhO'#FROBZQ`O,5<]OOQS1G0d1G0dOOQS1G0f1G0fOOQS1G0h1G0hOBfQ`O1G0hOBkQdO'#EhOOQS1G0k1G0kOOQS1G0q1G0qOBvQaO,5:UO7QQ`O1G0sOOQS1G0s1G0sO0aQ`O1G0sOOQS-E9S-E9SOOQS1G0v1G0vOB}Q!fO1G0ZOCeQ`O'#EVOOQO1G0Z1G0ZOOQO,5;k,5;kOCjQdO,5;kOOQO-E8}-E8}OCwQ`O1G1tPOOO-E8s-E8sPOOO1G.g1G.gOOQP7+$`7+$`OOQP7+%h7+%hO)VQdO7+%hOOQS1G0Y1G0YODSQaO'#FmOD^Q`O,5:_ODcQ!fO'#EwOEaQdO'#FfOEkQ`O,59aOOQO1G0O1G0OOEpQ!bO7+%hO)VQdO1G/eOE{QhO1G/iOOQW1G/m1G/mOOQW1G/g1G/gOF^QhO,5;qOOQW-E9T-E9TOOQS7+&e7+&eOGRQhO'#D^OGaQhO'#FlOGlQ`O'#FlOGqQ`O,5:WOOQS-E8v-E8vOOQ[1G.}1G.}OOQ[1G/T1G/TOOQ[1G/W1G/WOOQ[1G/[1G/[OGvQdO,5:tOOQS7+%x7+%xOG{Q`O7+%xOHQQhO'#D]OHYQ`O,59vO)zQhO,59vOOQ[1G/u1G/uOHbQ`O1G/uOHgQhO,5;mOOQO-E9P-E9POOQS7+&S7+&SOHuQbO'#DSOOQO'#Ej'#EjOITQ`O'#EiOOQO'#Ei'#EiOI`Q`O'#FSOIhQdO,5;SOOQS,5;S,5;SOOQ[1G/p1G/pOOQS7+&_7+&_O7QQ`O7+&_OIsQ!fO'#FOO)VQdO'#FOOJzQdO7+%uOOQO7+%u7+%uOOQO,5:q,5:qOOQO1G1V1G1VOK_Q!bO<<ISOKjQdO'#E|OKtQ`O,5<XOOQP1G/y1G/yOOQS-E8u-E8uOK|QdO'#E{OLWQ`O,5<QOOQ]1G.{1G.{OOQP<<IS<<ISOL`Q`O<<ISOLeQdO7+%POOQO'#D`'#D`OLlQ!bO7+%TOLtQhO'#EzOMRQ`O,5<WO)VQdO,5<WOOQW1G/r1G/rOOQO'#E['#E[OMZQ`O1G0`OOQS<<Id<<IdO)VQdO,59wOMzQhO1G/bOOQ[1G/b1G/bONRQ`O1G/bOOQW-E8w-E8wOOQ[7+%a7+%aOOQO,5;T,5;TOBnQdO'#FTOI`Q`O,5;nOOQS,5;n,5;nOOQS-E9Q-E9QOOQS1G0n1G0nOOQS<<Iy<<IyONZQ!fO,5;jOOQS-E8|-E8|OOQO<<Ia<<IaOOQPAN>nAN>nO! bQ`OAN>nO! gQaO,5;hOOQO-E8z-E8zO! qQdO,5;gOOQO-E8y-E8yOOQW<<Hk<<HkOOQW<<Ho<<HoO! {QhO<<HoO!!^QhO,5;fO!!iQ`O,5;fOOQO-E8x-E8xO!!nQdO1G1rOGvQdO'#FQO!!xQ`O7+%zOOQW7+%z7+%zO!#QQ!bO1G/cOOQ[7+$|7+$|O!#]QhO7+$|P!#dQ`O'#EyOOQO,5;o,5;oOOQO-E9R-E9ROOQS1G1Y1G1YOOQPG24YG24YO!#iQ`OAN>ZO)VQdO1G1QO!#nQ`O7+'^OOQO,5;l,5;lOOQO-E9O-E9OOOQW<<If<<IfOOQ[<<Hh<<HhPOQW,5;e,5;eOOQWG23uG23uO!#vQdO7+&l",
|
|
27575
|
+
stateData: "!$Z~O$QOS$RQQ~OWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|RO$XTO~OQmOWVO^_O`WOcYOdYOl`OmZOp[O!r]O!u^O!{dO#ReO#TfO#VgO#YhO#`iO#bjO#ekO#|lO$XTO~O#z$bP~P!jO$RqO~O`YXcYXdYXmYXpYXsYX!aYX!rYX!uYX#{YX$X[X~OgYX~P$ZO#|sO~O$XuO~O$XuO`$WXc$WXd$WXm$WXp$WXs$WX!a$WX!r$WX!u$WX#{$WXg$WX~O#|vO~O`xOcyOdyOmzOp{O!r|O!u!OO#{}O~Os!RO!a!PO~P&^Of!XO#|!TO#}!UO~O#|!YO~OW!^O#|![O$X!]O~OWVO^_O`WOcYOdYOmZOp[O!r]O!u^O#|RO$XTO~OS!fOc!gOd!gOh!cOs!RO!Y!eO!]!jO$O!bO~On!iO~P(dOQ!tOh!mOp!nOs!oOu!wOw!wO}!uO!d!vO#|!lO#}!rO$]!pO~OS!fOc!gOd!gOh!cO!Y!eO!]!jO$O!bO~Os$eP~P)zOw!|O!d!vO#|!{O~Ow#OO#|#OO~Oh#ROs!RO#c#TO~O#|#VO~Oc!xX~P$ZOc#YO~On#ZO#z$bXr$bX~O#z$bXr$bX~P!jO$S#^O$T#^O$U#`O~Of#eO#|!TO#}!UO~Os!RO!a!PO~Or$bP~P!jOh#oO~Oh#pO~Oo!kX!o!kX$X!mX~O#|#qO~O$X#sO~Oo#tO!o#uO~O`xOcyOdyOmzOp{O~Os!qa!a!qa!r!qa!u!qa#{!qag!qa~P-pOs!ta!a!ta!r!ta!u!ta#{!tag!ta~P-pOS!fOc!gOd!gOh!cO!Y!eO!]!jO~OR#yOu#yOw#yO$O#vO$]!pO~P/POn$PO!U#|O!a#}O~P(dOh$RO~O$O$TO~Oh#RO~O`$WOc$WOg$ZOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo$]O~P)VO`$WOc$WOl$WOm$WOn$WOr$_O~P)VOP$`OSvXcvXdvXhvXnvXyvX!YvX!]vX!}vX#PvX$OvX!WvXQvX`vXgvXlvXmvXpvXsvXuvXwvX}vX!dvX#|vX#}vX$]vXovXrvX!avX#zvX$dvX!pvX~Oy$aO!}$bO#P$cOn$eP~P)zOh#pOS$ZXc$ZXd$ZXn$ZXy$ZX!Y$ZX!]$ZX!}$ZX#P$ZX$O$ZXQ$ZX`$ZXg$ZXl$ZXm$ZXp$ZXs$ZXu$ZXw$ZX}$ZX!d$ZX#|$ZX#}$ZX$]$ZXo$ZXr$ZX!a$ZX#z$ZX$d$ZX!p$ZX~Oh$gO~Oh$iO~O!U#|O!a$jOs$eXn$eX~Os!RO~On$mOy$aO~On$nO~Ow$oO!d!vO~Os$pO~Os!RO!U#|O~Os!RO#c$vO~O#|#VOs#fX~O$d$zOn!wa#z!war!wa~P)VOn#sX#z#sXr#sX~P!jOn#ZO#z$bar$ba~O$S#^O$T#^O$U%RO~Oo%TO!o%UO~Os!qi!a!qi!r!qi!u!qi#{!qig!qi~P-pOs!si!a!si!r!si!u!si#{!sig!si~P-pOs!ti!a!ti!r!ti!u!ti#{!tig!ti~P-pOs#qa!a#qa~P&^Or%VO~Og$aP~P'oOg$YP~P)VOc!SXg!QX!U!QX!W!SX~Oc%_O!W%`O~Og%aO!U#|O~O!U#|OS#yXc#yXd#yXh#yXn#yXs#yX!Y#yX!]#yX!a#yX$O#yX~On%eO!a#}O~P(dO!U#|OS!Xac!Xad!Xah!Xan!Xas!Xa!Y!Xa!]!Xa!a!Xa$O!Xag!Xa~O$O%fOg$`P~P/POy$aOQ$[X`$[Xc$[Xg$[Xh$[Xl$[Xm$[Xn$[Xp$[Xs$[Xu$[Xw$[X}$[X!d$[X#|$[X#}$[X$]$[Xo$[Xr$[X~O`$WOc$WOg%kOl$WOm$WOn$WO~P)VO`$WOc$WOl$WOm$WOn$WOo%lO~P)VO`$WOc$WOl$WOm$WOn$WOr%mO~P)VOh%oOS!|Xc!|Xd!|Xn!|X!Y!|X!]!|X$O!|X~On%pO~Og%uOw%vO!e%vO~Os#uX!a#uXn#uX~P)zO!a$jOs$ean$ea~On%yO~Or&QO#|%{O$]%zO~Og&RO~P&^Oy$aO!a&VO$d$zOn!wi#z!wir!wi~P)VO$c&YO~On#sa#z#sar#sa~P!jOn#ZO#z$bir$bi~O!a&]Og$aX~P&^Og&_O~Oy$aOQ#kXg#kXh#kXp#kXs#kXu#kXw#kX}#kX!a#kX!d#kX#|#kX#}#kX$]#kX~O!a&aOg$YX~P)VOg&cO~Oo&dOy$aO!p&eO~OR#yOu#yOw#yO$O&gO$]!pO~O!U#|OS#yac#yad#yah#yan#yas#ya!Y#ya!]#ya!a#ya$O#ya~Oc!SXg!QX!U!QX!a!QX~O!U#|O!a&iOg$`X~Oc&kO~Og&lO~O#|&mO~On&oO~Oc&pO!U#|O~Og&rOn&qO~Og&uO~O!U#|Os#ua!a#uan#ua~OP$`OsvX!avXgvX~O$]%zOs#]X!a#]X~Os!RO!a&wO~Or&{O#|%{O$]%zO~Oy$aOQ#rXh#rXn#rXp#rXs#rXu#rXw#rX}#rX!a#rX!d#rX#z#rX#|#rX#}#rX$]#rX$d#rXr#rX~O!a&VO$d$zOn!wq#z!wqr!wq~P)VOo'QOy$aO!p'RO~Og#pX!a#pX~P'oO!a&]Og$aa~Og#oX!a#oX~P)VO!a&aOg$Ya~Oo'QO~Og'WO~P)VOg'XO!W'YO~O$O%fOg#nX!a#nX~P/PO!a&iOg$`a~O`'_Og'aO~OS#mac#mad#mah#ma!Y#ma!]#ma$O#ma~Og'cO~PMcOg'cOn'dO~Oy$aOQ#rah#ran#rap#ras#rau#raw#ra}#ra!a#ra!d#ra#z#ra#|#ra#}#ra$]#ra$d#rar#ra~Oo'iO~Og#pa!a#pa~P&^Og#oa!a#oa~P)VOR#yOu#yOw#yO$O&gO$]%zO~O!U#|Og#na!a#na~Oc'kO~O!a&iOg$`i~P)VO`'_Og'oO~Oy$aOg!Pin!Pi~Og'pO~PMcOn'qO~Og'rO~O!a&iOg$`q~Og#nq!a#nq~P)VO$Q!e$R$]`$]y!u~",
|
|
27576
|
+
goto: "4h$fPPPPP$gP$jP$s%V$s%i%{P$sP&R$sPP&XPPP&_&i&iPPPPP&iPP&iP'VP&iP&i(Q&iP(n(q(w(w)Z(wP(wP(wP(w(wP)j(w)vP(w)yPP*m*s$s*y$s+P+P+V+ZPP$sP$s$sP+a,],j,q$jP,zP,}P$jP$jP$jP-T$jP-W-Z-^-e$jP$jPP$jP-j$jP-m-s.S.j.x/O/Y/`/f/l/r/|0S0Y0`0f0lPPPPPPPPPPP0r0{P1q1t2vP3O3x4R4U4XPP4_RrQ_aOPco!R#Z$}q_OP]^co|}!O!P!R#R#Z#o$}&]qSOP]^co|}!O!P!R#R#Z#o$}&]qUOP]^co|}!O!P!R#R#Z#o$}&]QtTR#auQwWR#bxQ!VYR#cyQ#c!XS$f!s!tR%S#e!V!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k's!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sU#y!c%`'YU%}$p&P&wR&v%|!V!sdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sR$h!uQ%s$gR&s%tq!h`ei!c!d!e!q#|#}$O$R$e$g$j%t&iQ#w!cQ%h$RQ&h%`Q'[&iR'j'YQ#UjQ$U!jQ$t#TR&T$vR$S!f!U!wdf!m!n!o#Y#p#u$Y$[$^$a$y%U%Z%_&V&W&a&f&k&p'U'^'k'sQ!|gR$o!}Q!WYR#dyQ#c!WR%S#dQ!ZZR#fzQ!_[R#g{T!^[{Q#r!]R%]#sQ!SXQ!i`Q#SjQ#m!QQ$P!dQ$l!yQ$r#QQ$u#UQ$x#XQ%e$OQ&S$tQ&y&OQ&|&TR'h&xSnP!RQ#]oQ$|#ZR&Z$}ZmPo!R#Z$}Q${#YQ&X$yR'P&WR$e!qQ&n%oR'm'_R!}gR#PhR$q#PS&O$p&PR'f&wV%|$p&P&wR#XkQ#_qR%Q#_QcOSoP!RU!kco$}R$}#ZQ%Z#pY&`%Z&f'U'^'sQ&f%_Q'U&aQ'^&kR's'kQ$Y!mQ$[!nQ$^!oV%j$Y$[$^Q%t$gR&t%tQ&j%gS']&j'lR'l'^Q&b%ZR'V&bQ&^%WR'T&^Q!QXR#l!QQ&W$yR'O&WQ#[nS%O#[%PR%P#]Q'`&nR'n'`Q$k!xR%x$kQ&P$pR&z&PQ&x&OR'g&xQ#WkR$w#WQ$O!dR%d$O_bOPco!R#Z$}^XOPco!R#Z$}Q!`]Q!a^Q#h|Q#i}Q#j!OQ#k!PQ$s#RQ%W#oR'S&]R%[#pQ!qdQ!zf[$V!m!n!o$Y$[$^Q$y#Yd%Y#p%Z%_&a&f&k'U'^'k'sQ%^#uQ%n$aS&U$y&WQ&[%UQ&}&VR'b&p]$X!m!n!o$Y$[$^Q!d`U!xe!q$eQ#QiQ#x!cS#{!d$OQ$Q!eQ%b#|Q%c#}Q%g$RS%r$g%tQ%w$jR'Z&iQ#z!cQ&h%`R'j'YR%i$RR%X#oQpPR#n!RQ!yeQ$d!qR%q$e",
|
|
27577
|
+
nodeNames: "\u26A0 Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NamespacedTagSelector NamespaceName TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , PseudoQuery CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName NamespacedAttribute NamespaceName AttributeName MatchOp MatchFlag ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to FontFeatureStatement font-feature-values FontName AtRule Styles",
|
|
27578
|
+
maxTerm: 159,
|
|
27547
27579
|
nodeProps: [
|
|
27548
|
-
["isolate", -2, 5,
|
|
27549
|
-
["openedBy",
|
|
27550
|
-
["closedBy",
|
|
27580
|
+
["isolate", -2, 5, 39, ""],
|
|
27581
|
+
["openedBy", 23, "(", 31, "[", 34, "{"],
|
|
27582
|
+
["closedBy", 24, ")", 32, "]", 35, "}"]
|
|
27551
27583
|
],
|
|
27552
27584
|
propSources: [cssHighlighting],
|
|
27553
|
-
skippedNodes: [0, 5,
|
|
27554
|
-
repeatNodeCount:
|
|
27555
|
-
tokenData: "
|
|
27556
|
-
tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup("m~RRYZ[z{a~~g~aO
|
|
27557
|
-
topRules: { "StyleSheet": [0, 6], "Styles": [1,
|
|
27558
|
-
dynamicPrecedences: { "
|
|
27559
|
-
specialized: [{ term:
|
|
27560
|
-
tokenPrec:
|
|
27585
|
+
skippedNodes: [0, 5, 117],
|
|
27586
|
+
repeatNodeCount: 17,
|
|
27587
|
+
tokenData: "K`~R!bOX%ZX^&R^p%Zpq&Rqr)ers)vst+jtu2Xuv%Zvw3Rwx3dxy5Ryz5dz{5i{|6S|}:u}!O;W!O!P;u!P!Q<^!Q![=V![!]>Q!]!^>|!^!_?_!_!`@Z!`!a@n!a!b%Z!b!cAo!c!k%Z!k!lC|!l!u%Z!u!vC|!v!}%Z!}#OD_#O#P%Z#P#QDp#Q#R2X#R#]%Z#]#^ER#^#g%Z#g#hC|#h#o%Z#o#pIf#p#qIw#q#rJ`#r#sJq#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`KY<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!e`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$Q~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$Q~!e`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$dYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOw~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+oYmYOy%jz!Q%j!Q![,_![!c%j!c!i,_!i#T%j#T#Z,_#Z;'S%j;'S;=`%{<%lO%jj,dY!e`Oy%jz!Q%j!Q![-S![!c%j!c!i-S!i#T%j#T#Z-S#Z;'S%j;'S;=`%{<%lO%jj-XY!e`Oy%jz!Q%j!Q![-w![!c%j!c!i-w!i#T%j#T#Z-w#Z;'S%j;'S;=`%{<%lO%jj.OYuY!e`Oy%jz!Q%j!Q![.n![!c%j!c!i.n!i#T%j#T#Z.n#Z;'S%j;'S;=`%{<%lO%jj.uYuY!e`Oy%jz!Q%j!Q![/e![!c%j!c!i/e!i#T%j#T#Z/e#Z;'S%j;'S;=`%{<%lO%jj/jY!e`Oy%jz!Q%j!Q![0Y![!c%j!c!i0Y!i#T%j#T#Z0Y#Z;'S%j;'S;=`%{<%lO%jj0aYuY!e`Oy%jz!Q%j!Q![1P![!c%j!c!i1P!i#T%j#T#Z1P#Z;'S%j;'S;=`%{<%lO%jj1UY!e`Oy%jz!Q%j!Q![1t![!c%j!c!i1t!i#T%j#T#Z1t#Z;'S%j;'S;=`%{<%lO%jj1{SuY!e`Oy%jz;'S%j;'S;=`%{<%lO%jd2[UOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jd2uS!oS!e`Oy%jz;'S%j;'S;=`%{<%lO%jb3WS^QOy%jz;'S%j;'S;=`%{<%lO%j~3gWOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{<%lO3d~4SRO;'S3d;'S;=`4];=`O3d~4`XOY3dZw3dwx*cx#O3d#O#P4P#P;'S3d;'S;=`4{;=`<%l3d<%lO3d~5OP;=`<%l3dj5WShYOy%jz;'S%j;'S;=`%{<%lO%j~5iOg~n5pUWQyWOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jj6ZWyW!uQOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj6xU!e`Oy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%jj7cY!e`$]YOy%jz!Q%j!Q![7[![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj8WY!e`Oy%jz{%j{|8v|}%j}!O8v!O!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj8{U!e`Oy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj9fU!e`$]YOy%jz!Q%j!Q![9_![;'S%j;'S;=`%{<%lO%jj:P[!e`$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj:zS!aYOy%jz;'S%j;'S;=`%{<%lO%jj;]WyWOy%jz!O%j!O!P6s!P!Q%j!Q![9x![;'S%j;'S;=`%{<%lO%jj;zU`YOy%jz!Q%j!Q![7[![;'S%j;'S;=`%{<%lO%j~<cTyWOy%jz{<r{;'S%j;'S;=`%{<%lO%j~<yS!e`$R~Oy%jz;'S%j;'S;=`%{<%lO%jj=[[$]YOy%jz!O%j!O!P7[!P!Q%j!Q![9x![!g%j!g!h8R!h#X%j#X#Y8R#Y;'S%j;'S;=`%{<%lO%jj>VUcYOy%jz![%j![!]>i!];'S%j;'S;=`%{<%lO%jj>pSdY!e`Oy%jz;'S%j;'S;=`%{<%lO%jj?RSnYOy%jz;'S%j;'S;=`%{<%lO%jh?dU!WWOy%jz!_%j!_!`?v!`;'S%j;'S;=`%{<%lO%jh?}S!WW!e`Oy%jz;'S%j;'S;=`%{<%lO%jl@bS!WW!oSOy%jz;'S%j;'S;=`%{<%lO%jj@uV!rQ!WWOy%jz!_%j!_!`?v!`!aA[!a;'S%j;'S;=`%{<%lO%jbAcS!rQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjArYOy%jz}%j}!OBb!O!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjBgW!e`Oy%jz!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jjCW[lY!e`Oy%jz}%j}!OCP!O!Q%j!Q![CP![!c%j!c!}CP!}#T%j#T#oCP#o;'S%j;'S;=`%{<%lO%jhDRS!pWOy%jz;'S%j;'S;=`%{<%lO%jjDdSpYOy%jz;'S%j;'S;=`%{<%lO%jnDuSo^Oy%jz;'S%j;'S;=`%{<%lO%jjEWU!pWOy%jz#a%j#a#bEj#b;'S%j;'S;=`%{<%lO%jbEoU!e`Oy%jz#d%j#d#eFR#e;'S%j;'S;=`%{<%lO%jbFWU!e`Oy%jz#c%j#c#dFj#d;'S%j;'S;=`%{<%lO%jbFoU!e`Oy%jz#f%j#f#gGR#g;'S%j;'S;=`%{<%lO%jbGWU!e`Oy%jz#h%j#h#iGj#i;'S%j;'S;=`%{<%lO%jbGoU!e`Oy%jz#T%j#T#UHR#U;'S%j;'S;=`%{<%lO%jbHWU!e`Oy%jz#b%j#b#cHj#c;'S%j;'S;=`%{<%lO%jbHoU!e`Oy%jz#h%j#h#iIR#i;'S%j;'S;=`%{<%lO%jbIYS$cQ!e`Oy%jz;'S%j;'S;=`%{<%lO%jjIkSsYOy%jz;'S%j;'S;=`%{<%lO%jfI|U$XUOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%jjJeSrYOy%jz;'S%j;'S;=`%{<%lO%jfJvU!uQOy%jz!_%j!_!`2n!`;'S%j;'S;=`%{<%lO%j`K]P;=`<%l%Z",
|
|
27588
|
+
tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup("m~RRYZ[z{a~~g~aO$T~~dP!P!Qg~lO$U~~", 28, 142)],
|
|
27589
|
+
topRules: { "StyleSheet": [0, 6], "Styles": [1, 116] },
|
|
27590
|
+
dynamicPrecedences: { "84": 1 },
|
|
27591
|
+
specialized: [{ term: 137, get: (value) => spec_callee[value] || -1 }, { term: 138, get: (value) => spec_queryIdentifier[value] || -1 }, { term: 4, get: (value) => spec_QueryCallee[value] || -1 }, { term: 28, get: (value) => spec_AtKeyword[value] || -1 }, { term: 136, get: (value) => spec_identifier[value] || -1 }],
|
|
27592
|
+
tokenPrec: 2256
|
|
27561
27593
|
});
|
|
27562
27594
|
|
|
27563
27595
|
// node_modules/@codemirror/lang-css/dist/index.js
|