From 3e45229e6510cb487500a990a557df2e9ae15943 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 08:52:18 +0000 Subject: [PATCH 01/40] feat(gnoweb): add integrated playground, eval, and fork views --- gno.land/pkg/gnoweb/app.go | 4 + gno.land/pkg/gnoweb/client.go | 10 + gno.land/pkg/gnoweb/client_mock.go | 5 + .../pkg/gnoweb/components/layout_header.go | 28 +- .../pkg/gnoweb/components/layout_index.go | 2 +- gno.land/pkg/gnoweb/components/layout_test.go | 11 +- gno.land/pkg/gnoweb/components/view_eval.go | 89 ++++++ .../pkg/gnoweb/components/view_playground.go | 34 +++ .../pkg/gnoweb/components/views/eval.html | 81 ++++++ .../gnoweb/components/views/playground.html | 78 +++++ .../pkg/gnoweb/frontend/css/06-blocks.css | 271 ++++++++++++++++++ .../pkg/gnoweb/frontend/js/controller-eval.ts | 157 ++++++++++ .../frontend/js/controller-playground.ts | 201 +++++++++++++ gno.land/pkg/gnoweb/handler_http.go | 125 ++++++++ gno.land/pkg/gnoweb/handler_http_test.go | 4 + gno.land/pkg/gnoweb/handler_playground.go | 168 +++++++++++ .../pkg/gnoweb/public/js/controller-eval.js | 1 + .../gnoweb/public/js/controller-playground.js | 25 ++ gno.land/pkg/gnoweb/public/main.css | 4 +- 19 files changed, 1287 insertions(+), 11 deletions(-) create mode 100644 gno.land/pkg/gnoweb/components/view_eval.go create mode 100644 gno.land/pkg/gnoweb/components/view_playground.go create mode 100644 gno.land/pkg/gnoweb/components/views/eval.html create mode 100644 gno.land/pkg/gnoweb/components/views/playground.html create mode 100644 gno.land/pkg/gnoweb/frontend/js/controller-eval.ts create mode 100644 gno.land/pkg/gnoweb/frontend/js/controller-playground.ts create mode 100644 gno.land/pkg/gnoweb/handler_playground.go create mode 100644 gno.land/pkg/gnoweb/public/js/controller-eval.js create mode 100644 gno.land/pkg/gnoweb/public/js/controller-playground.js diff --git a/gno.land/pkg/gnoweb/app.go b/gno.land/pkg/gnoweb/app.go index 174af39138f..8dae3ef87df 100644 --- a/gno.land/pkg/gnoweb/app.go +++ b/gno.land/pkg/gnoweb/app.go @@ -177,6 +177,10 @@ func NewRouter(logger *slog.Logger, cfg *AppConfig) (http.Handler, error) { assetsHandler := cacheAssetHandler(AssetHandler()) mux.Handle(assetsBase, http.StripPrefix(assetsBase, assetsHandler)) + // Handle playground API endpoints + mux.Handle("/_/api/eval", handlerPlaygroundEval(logger, adpcli, cfg.Domain, cfg.NodeRemote)) + mux.Handle("/_/api/funcs", handlerPlaygroundFuncs(logger, adpcli)) + // Handle status page mux.Handle("/status.json", handlerStatusJSON(logger, rpcclient)) diff --git a/gno.land/pkg/gnoweb/client.go b/gno.land/pkg/gnoweb/client.go index 21dbf79b344..6fab887ad77 100644 --- a/gno.land/pkg/gnoweb/client.go +++ b/gno.land/pkg/gnoweb/client.go @@ -48,6 +48,10 @@ type ClientAdapter interface { // Doc retrieves the JSON doc suitable for printing from a // specified package path. Doc(ctx context.Context, path string) (*doc.JSONDocumentation, error) + + // Eval evaluates a Gno expression via vm/qeval query. + // The data string should be in the format "gno.land/r/pkg.Expression(args)". + Eval(ctx context.Context, data string) ([]byte, error) } type rpcClient struct { @@ -171,6 +175,12 @@ func (c *rpcClient) Doc(ctx context.Context, pkgPath string) (*doc.JSONDocumenta return jdoc, nil } +// Eval evaluates a Gno expression via the vm/qeval ABCI query. +func (c *rpcClient) Eval(ctx context.Context, data string) ([]byte, error) { + const qpath = "vm/qeval" + return c.query(ctx, qpath, []byte(data)) +} + // query sends a query to the RPC client and returns the response // data. func (c *rpcClient) query(ctx context.Context, qpath string, data []byte) ([]byte, error) { diff --git a/gno.land/pkg/gnoweb/client_mock.go b/gno.land/pkg/gnoweb/client_mock.go index 9d0d20f2402..2849282bfbf 100644 --- a/gno.land/pkg/gnoweb/client_mock.go +++ b/gno.land/pkg/gnoweb/client_mock.go @@ -138,6 +138,11 @@ func (m *MockClient) Doc(ctx context.Context, path string) (*doc.JSONDocumentati return &doc.JSONDocumentation{Funcs: pkg.Functions}, nil } +// Eval evaluates a Gno expression (mock implementation). +func (m *MockClient) Eval(_ context.Context, data string) ([]byte, error) { + return []byte("(mock eval: " + data + ")"), nil +} + // Helper: check if package has a Render(string) string function. func pkgHasRender(pkg *MockPackage) bool { if len(pkg.Functions) == 0 { diff --git a/gno.land/pkg/gnoweb/components/layout_header.go b/gno.land/pkg/gnoweb/components/layout_header.go index 10916ad7c56..617bf6199b2 100644 --- a/gno.land/pkg/gnoweb/components/layout_header.go +++ b/gno.land/pkg/gnoweb/components/layout_header.go @@ -38,10 +38,12 @@ func StaticHeaderGeneralLinks() []HeaderLink { } func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderLink { - contentURL, sourceURL, helpURL := u, u, u + contentURL, sourceURL, helpURL, evalURL, forkURL := u, u, u, u, u contentURL.WebQuery = url.Values{} sourceURL.WebQuery = url.Values{"source": {""}} helpURL.WebQuery = url.Values{"help": {""}} + evalURL.WebQuery = url.Values{"eval": {""}} + forkURL.WebQuery = url.Values{"fork": {""}} contentLink := HeaderLink{ Label: "Content", @@ -64,6 +66,20 @@ func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderL IsActive: isActive(u.WebQuery, "Actions"), } + evalLink := HeaderLink{ + Label: "Eval", + URL: evalURL.EncodeWebURL(), + Icon: "ico-tx-link", + IsActive: isActive(u.WebQuery, "Eval"), + } + + forkLink := HeaderLink{ + Label: "Fork", + URL: forkURL.EncodeWebURL(), + Icon: "ico-link", + IsActive: isActive(u.WebQuery, "Fork"), + } + switch { case static: return []HeaderLink{contentLink} @@ -72,9 +88,9 @@ func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderL case mode == ViewModeUser: return []HeaderLink{contentLink} case mode == ViewModePackage: - return []HeaderLink{contentLink, sourceLink} + return []HeaderLink{contentLink, sourceLink, forkLink} default: - return []HeaderLink{contentLink, sourceLink, actionsLink} + return []HeaderLink{contentLink, sourceLink, actionsLink, evalLink, forkLink} } } @@ -93,11 +109,15 @@ func EnrichHeaderData(data HeaderData, mode ViewMode) HeaderData { func isActive(webQuery url.Values, label string) bool { switch label { case "Content": - return !webQuery.Has("source") && !webQuery.Has("help") + return !webQuery.Has("source") && !webQuery.Has("help") && !webQuery.Has("eval") && !webQuery.Has("fork") case "Source": return webQuery.Has("source") case "Actions": return webQuery.Has("help") + case "Eval": + return webQuery.Has("eval") + case "Fork": + return webQuery.Has("fork") default: return false } diff --git a/gno.land/pkg/gnoweb/components/layout_index.go b/gno.land/pkg/gnoweb/components/layout_index.go index 245143c52b4..f1de4f98a6b 100644 --- a/gno.land/pkg/gnoweb/components/layout_index.go +++ b/gno.land/pkg/gnoweb/components/layout_index.go @@ -89,7 +89,7 @@ func IndexLayout(data IndexData) Component { // Set dev mode based on view type and mode switch data.BodyView.Type { - case HelpViewType, SourceViewType, DirectoryViewType, StatusViewType: + case HelpViewType, SourceViewType, DirectoryViewType, StatusViewType, EvalViewType, PlaygroundViewType: dataLayout.IsDevmodView = true } diff --git a/gno.land/pkg/gnoweb/components/layout_test.go b/gno.land/pkg/gnoweb/components/layout_test.go index b387a44cd6e..84f9a33777f 100644 --- a/gno.land/pkg/gnoweb/components/layout_test.go +++ b/gno.land/pkg/gnoweb/components/layout_test.go @@ -112,7 +112,7 @@ func TestEnrichHeaderData(t *testing.T) { enrichedData := EnrichHeaderData(data, ViewModeHome) assert.NotEmpty(t, enrichedData.Links.General, "expected general links to be populated") - assert.Len(t, enrichedData.Links.Dev, 3, "expected dev links with Actions for home mode") + assert.Len(t, enrichedData.Links.Dev, 5, "expected dev links with Actions, Eval, Fork for home mode") } func TestIsActive(t *testing.T) { @@ -186,10 +186,12 @@ func TestStaticHeaderDevLinks_WithRealmMode(t *testing.T) { // Test realm mode (default case) links := StaticHeaderDevLinks(u, ViewModeRealm, false) - assert.Len(t, links, 3, "expected Content, Source, and Actions links") + assert.Len(t, links, 5, "expected Content, Source, Actions, Eval, Fork links") assert.Equal(t, "Content", links[0].Label) assert.Equal(t, "Source", links[1].Label) assert.Equal(t, "Actions", links[2].Label) + assert.Equal(t, "Eval", links[3].Label) + assert.Equal(t, "Fork", links[4].Label) } func TestStaticHeaderDevLinks_WithPackageMode(t *testing.T) { @@ -201,9 +203,10 @@ func TestStaticHeaderDevLinks_WithPackageMode(t *testing.T) { // Test package mode links := StaticHeaderDevLinks(u, ViewModePackage, false) - assert.Len(t, links, 2, "expected Content and Source links only") + assert.Len(t, links, 3, "expected Content, Source, Fork links") assert.Equal(t, "Content", links[0].Label) assert.Equal(t, "Source", links[1].Label) + assert.Equal(t, "Fork", links[2].Label) } func TestStaticHeaderDevLinks_StaticContent(t *testing.T) { @@ -243,7 +246,7 @@ func TestEnrichHeaderData_WithRealmMode(t *testing.T) { enriched := EnrichHeaderData(data, ViewModeRealm) assert.Equal(t, "/r/test/pkg", enriched.RealmPath) assert.Empty(t, enriched.Links.General) - assert.Len(t, enriched.Links.Dev, 3, "expected Content, Source, and Actions links") + assert.Len(t, enriched.Links.Dev, 5, "expected Content, Source, Actions, Eval, Fork links") } func TestEnrichHeaderData_WithExplorerMode(t *testing.T) { diff --git a/gno.land/pkg/gnoweb/components/view_eval.go b/gno.land/pkg/gnoweb/components/view_eval.go new file mode 100644 index 00000000000..34acf93c1a2 --- /dev/null +++ b/gno.land/pkg/gnoweb/components/view_eval.go @@ -0,0 +1,89 @@ +package components + +import ( + "go/token" + + "github.com/gnolang/gno/gnovm/pkg/doc" +) + +const EvalViewType ViewType = "eval-view" + +type EvalFuncInfo struct { + Name string + Signature string + Doc string + Params []*doc.JSONField +} + +type EvalData struct { + Remote string + PkgPath string + Domain string + Functions []EvalFuncInfo +} + +type EvalTocData struct { + Icon string + Items []HelpTocItem +} + +type evalViewParams struct { + EvalData + Article ArticleData + ComponentTOC Component +} + +func EvalView(data EvalData) *View { + tocData := EvalTocData{ + Icon: "code", + Items: make([]HelpTocItem, len(data.Functions)), + } + + for i, fn := range data.Functions { + tocData.Items[i] = HelpTocItem{ + Link: "#func-" + fn.Name, + Text: fn.Name, + } + } + + toc := NewTemplateComponent("ui/toc_generic", tocData) + content := NewTemplateComponent("renderEvalContent", data) + + viewData := evalViewParams{ + EvalData: data, + Article: ArticleData{ + ComponentContent: content, + Classes: "c-eval-view", + }, + ComponentTOC: toc, + } + + return NewTemplateView(EvalViewType, "renderEval", viewData) +} + +// BuildEvalFuncs extracts public non-method functions suitable for eval. +func BuildEvalFuncs(jdoc *doc.JSONDocumentation) []EvalFuncInfo { + var funcs []EvalFuncInfo + for _, fn := range jdoc.Funcs { + if fn.Type != "" || !token.IsExported(fn.Name) { + continue + } + // Skip crossing functions (they mutate state) + if fn.Crossing { + continue + } + + params := fn.Params + if len(params) >= 1 && params[0].Type == "realm" { + params = params[1:] + } + + funcs = append(funcs, EvalFuncInfo{ + Name: fn.Name, + Signature: fn.Signature, + Doc: fn.Doc, + Params: params, + }) + } + return funcs +} diff --git a/gno.land/pkg/gnoweb/components/view_playground.go b/gno.land/pkg/gnoweb/components/view_playground.go new file mode 100644 index 00000000000..74ae1adf1e9 --- /dev/null +++ b/gno.land/pkg/gnoweb/components/view_playground.go @@ -0,0 +1,34 @@ +package components + +const PlaygroundViewType ViewType = "playground-view" + +type PlaygroundData struct { + // InitialCode is pre-filled code (e.g. from fork) + InitialCode string + // ForkFrom is the package path this was forked from + ForkFrom string + // Remote is the RPC endpoint + Remote string + // ChainId is the current chain ID + ChainId string + // Domain is the node domain + Domain string +} + +type playgroundViewParams struct { + PlaygroundData + Article ArticleData +} + +func PlaygroundView(data PlaygroundData) *View { + content := NewTemplateComponent("ui/playground_editor", data) + viewData := playgroundViewParams{ + PlaygroundData: data, + Article: ArticleData{ + ComponentContent: content, + Classes: "c-playground-view", + }, + } + + return NewTemplateView(PlaygroundViewType, "renderPlayground", viewData) +} diff --git a/gno.land/pkg/gnoweb/components/views/eval.html b/gno.land/pkg/gnoweb/components/views/eval.html new file mode 100644 index 00000000000..85b2a8f20d4 --- /dev/null +++ b/gno.land/pkg/gnoweb/components/views/eval.html @@ -0,0 +1,81 @@ +{{/* =================================================================================== +LAYOUT - Eval view wrapper +=================================================================================== */}} +{{ define "renderEval" }} + +{{ with render .ComponentTOC }} +{{ template "layout/aside" . }} +{{ end }} + + +{{ template "layout/article" .Article }} +{{ end }} + + +{{/* =================================================================================== +UI - Inline Eval content +=================================================================================== */}} +{{ define "renderEvalContent" }} +{{ $data := . }} +
+ +
+

Expression Evaluator

+

Evaluate read-only expressions against {{ .PkgPath }}

+
+ + +
+
+
+ + +
+ +
+
+ + +
+
+ Result + +
+
// Enter an expression above
+
+ + + {{ if .Functions }} +
+

Quick Call

+
+ {{ range .Functions }} +
+ + {{ if .Doc }}{{ .Doc }}{{ end }} +
+ {{ end }} +
+
+ {{ end }} + + +
+

History

+
+
+
+
+{{ end }} diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html new file mode 100644 index 00000000000..4aa419df07d --- /dev/null +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -0,0 +1,78 @@ +{{/* =================================================================================== +LAYOUT - Playground view +=================================================================================== */}} +{{ define "renderPlayground" }} + +
+ + +
+
+

+ {{ if .ForkFrom }} + Fork of {{ .ForkFrom }} + {{ else }} + Playground + {{ end }} +

+
+
+ + + + +
+
+ + +
+ +
+ + +
+ + +
+ +
+
+ + +
+
+ Output + +
+
// Run code to see output here
+
+
+{{ end }} + + +{{/* =================================================================================== +UI - Playground editor component (inner content) +=================================================================================== */}} +{{ define "ui/playground_editor" }} +
+ +
+{{ end }} diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index b18936cba52..0e2a3c1183d 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2518,3 +2518,274 @@ main.dev-mode .b-toc a { } } } + +/* ========================================================================== + PLAYGROUND - Scratch pad editor + ========================================================================== */ +.b-playground { + display: flex; + flex-direction: column; + gap: var(--g-space-2); + min-height: 70vh; +} + +.b-playground-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + gap: var(--g-space-2); + flex-wrap: wrap; +} + +.b-playground-toolbar-left { + display: flex; + align-items: center; + gap: var(--g-space-2); +} + +.b-playground-toolbar-right { + display: flex; + align-items: center; + gap: var(--g-space-1); +} + +.b-playground-title { + font-size: var(--g-font-size-200); + font-weight: var(--g-font-semibold); +} + +.b-playground-editor-area { + display: flex; + flex-direction: column; + flex: 1; + border: 1px solid var(--s-color-border-default); + border-radius: var(--g-radius-2); + overflow: hidden; + min-height: 40vh; +} + +.b-playground-tabs { + display: flex; + align-items: center; + gap: 0; + background-color: var(--s-color-bg-muted); + border-bottom: 1px solid var(--s-color-border-default); + overflow-x: auto; +} + +.b-playground-tab { + padding: var(--g-space-1) var(--g-space-2); + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-50); + font-family: var(--g-font-mono); + color: var(--s-color-text-muted); + border-bottom: 2px solid transparent; + white-space: nowrap; + + &:hover { + color: var(--s-color-text-base); + background-color: var(--s-color-bg-default); + } + + &--active { + color: var(--s-color-text-base); + border-bottom-color: var(--s-color-border-brand); + font-weight: var(--g-font-semibold); + } +} + +.b-playground-tab-add { + padding: var(--g-space-1) var(--g-space-2); + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-100); + color: var(--s-color-text-muted); + + &:hover { + color: var(--s-color-text-base); + } +} + +.b-playground-editor { + flex: 1; + display: flex; +} + +.b-playground-code { + flex: 1; + width: 100%; + min-height: 300px; + padding: var(--g-space-2); + border: none; + background-color: var(--s-color-bg-default); + color: var(--s-color-text-base); + font-family: var(--g-font-mono); + font-size: var(--g-font-size-75); + line-height: 1.6; + resize: none; + tab-size: 4; + outline: none; +} + +.b-playground-output { + border: 1px solid var(--s-color-border-default); + border-radius: var(--g-radius-2); + overflow: hidden; +} + +.b-playground-output-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--g-space-1) var(--g-space-2); + background-color: var(--s-color-bg-muted); + border-bottom: 1px solid var(--s-color-border-default); +} + +.b-playground-output-title { + font-size: var(--g-font-size-50); + font-weight: var(--g-font-semibold); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.b-playground-output-clear { + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-50); + color: var(--s-color-text-muted); + + &:hover { + color: var(--s-color-text-base); + } +} + +.b-playground-output-content { + padding: var(--g-space-2); + margin: 0; + font-family: var(--g-font-mono); + font-size: var(--g-font-size-75); + line-height: 1.6; + white-space: pre-wrap; + word-break: break-word; + min-height: 80px; + max-height: 300px; + overflow-y: auto; +} + +/* ========================================================================== + EVAL - Expression evaluator + ========================================================================== */ +.b-eval { + display: flex; + flex-direction: column; + gap: var(--g-space-3); +} + +.b-eval-header { + margin-bottom: var(--g-space-1); +} + +.b-eval-form { + display: flex; + gap: var(--g-space-2); + align-items: flex-end; +} + +.b-eval-form .b-input--full { + flex: 1; +} + +.b-eval-result { + border: 1px solid var(--s-color-border-default); + border-radius: var(--g-radius-2); + overflow: hidden; +} + +.b-eval-result-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--g-space-1) var(--g-space-2); + background-color: var(--s-color-bg-muted); + border-bottom: 1px solid var(--s-color-border-default); + font-size: var(--g-font-size-50); + font-weight: var(--g-font-semibold); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.b-eval-result-clear { + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-50); + color: var(--s-color-text-muted); + + &:hover { + color: var(--s-color-text-base); + } +} + +.b-eval-result-content { + padding: var(--g-space-2); + margin: 0; + font-family: var(--g-font-mono); + font-size: var(--g-font-size-75); + line-height: 1.6; + white-space: pre-wrap; + word-break: break-word; + min-height: 60px; + max-height: 400px; + overflow-y: auto; +} + +.b-eval-func { + display: flex; + align-items: center; + gap: var(--g-space-2); +} + +.b-eval-history-entry { + padding: var(--g-space-1-5); + border: 1px solid var(--s-color-border-default); + border-radius: var(--g-radius-1); + + & + & { + margin-top: var(--g-space-1); + } +} + +.b-eval-history-expr { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--g-space-1); +} + +.b-eval-history-rerun { + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-100); + color: var(--s-color-text-muted); + + &:hover { + color: var(--s-color-text-base); + } +} + +.b-eval-history-result { + margin: 0; + padding: var(--g-space-1); + font-family: var(--g-font-mono); + font-size: var(--g-font-size-50); + background-color: var(--s-color-bg-muted); + border-radius: var(--g-radius-1); + white-space: pre-wrap; + word-break: break-word; +} diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts new file mode 100644 index 00000000000..b9d9d86e806 --- /dev/null +++ b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts @@ -0,0 +1,157 @@ +import { BaseController } from "./controller.js"; + +interface HistoryEntry { + expression: string; + result: string; + isError: boolean; +} + +export class EvalController extends BaseController { + private _inputEl!: HTMLInputElement; + private _resultEl!: HTMLElement; + private _historyListEl!: HTMLElement; + private _history: HistoryEntry[] = []; + + protected connect(): void { + this._inputEl = this.getTarget("input") as HTMLInputElement; + this._resultEl = this.getTarget("result") as HTMLElement; + this._historyListEl = this.getTarget("history-list") as HTMLElement; + + this._inputEl?.focus(); + + this._inputEl?.addEventListener("keydown", (e: KeyboardEvent) => { + if (e.key === "ArrowUp" && this._history.length > 0) { + e.preventDefault(); + this._inputEl.value = + this._history[this._history.length - 1].expression; + } + }); + } + + public evalExpression(event: Event): void { + event.preventDefault(); + const expr = this._inputEl.value.trim(); + if (!expr) return; + this._doEval(expr); + } + + public quickCall(event: Event & { params?: Record }): void { + const funcName = event.params?.funcName as string; + const funcSig = event.params?.funcSig as string; + + if (funcName) { + const paramMatch = funcSig?.match(/\(([^)]*)\)/); + const params = paramMatch ? paramMatch[1] : ""; + + if (params) { + this._inputEl.value = `${funcName}(${params + .split(",") + .map((p: string) => { + const parts = p.trim().split(/\s+/); + const type = parts[parts.length - 1]; + return type === "string" ? '""' : "0"; + }) + .join(", ")})`; + this._inputEl.focus(); + this._inputEl.setSelectionRange( + funcName.length + 1, + this._inputEl.value.length - 1, + ); + } else { + this._inputEl.value = `${funcName}()`; + this._doEval(`${funcName}()`); + } + } + } + + public clearResult(): void { + this._resultEl.textContent = "// Enter an expression above"; + this._resultEl.classList.remove("u-color-danger"); + } + + private async _doEval(expression: string): Promise { + const remote = this.getValue("remote"); + const pkgPath = this.getValue("pkg-path"); + + this._resultEl.textContent = "Evaluating..."; + this._resultEl.classList.remove("u-color-danger"); + + try { + const data = `${pkgPath}.${expression}`; + const url = `${remote}/abci_query?path=vm%2fqeval&data=${btoa(data)}`; + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`HTTP ${response.status}`); + } + + const json = await response.json(); + const responseBase = json.result.response.ResponseBase; + + let result: string; + let isError: boolean; + + if (responseBase.Data) { + result = atob(responseBase.Data); + isError = false; + } else if (responseBase.Error) { + const errorValue = responseBase.Error.value || responseBase.Error; + result = `Error: ${typeof errorValue === "string" ? errorValue : JSON.stringify(errorValue)}`; + isError = true; + } else { + result = "(empty result)"; + isError = false; + } + + this._resultEl.textContent = result; + this._resultEl.classList.toggle("u-color-danger", isError); + + this._addToHistory(expression, result, isError); + } catch (err) { + const errMsg = `Error: ${err instanceof Error ? err.message : String(err)}`; + this._resultEl.textContent = errMsg; + this._resultEl.classList.add("u-color-danger"); + this._addToHistory(expression, errMsg, true); + } + } + + private _addToHistory( + expression: string, + result: string, + isError: boolean, + ): void { + this._history.push({ expression, result, isError }); + + if (this._historyListEl) { + const entry = document.createElement("div"); + entry.className = "b-eval-history-entry"; + + const exprDiv = document.createElement("div"); + exprDiv.className = "b-eval-history-expr"; + + const codeEl = document.createElement("code"); + codeEl.className = "u-font-mono"; + codeEl.textContent = expression; + exprDiv.appendChild(codeEl); + + const rerunBtn = document.createElement("button"); + rerunBtn.className = "b-eval-history-rerun"; + rerunBtn.textContent = "\u21A9"; // ↩ + rerunBtn.title = "Re-run"; + rerunBtn.addEventListener("click", () => { + this._inputEl.value = expression; + this._doEval(expression); + }); + exprDiv.appendChild(rerunBtn); + + const resultPre = document.createElement("pre"); + resultPre.className = `b-eval-history-result${isError ? " u-color-danger" : ""}`; + resultPre.textContent = + result.length > 200 ? result.substring(0, 200) + "..." : result; + + entry.appendChild(exprDiv); + entry.appendChild(resultPre); + this._historyListEl.prepend(entry); + } + } +} diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts new file mode 100644 index 00000000000..b186620ba14 --- /dev/null +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -0,0 +1,201 @@ +import { BaseController } from "./controller.js"; + +interface PlaygroundFile { + name: string; + content: string; +} + +export class PlaygroundController extends BaseController { + private files: PlaygroundFile[] = []; + private activeFile = 0; + private _codeEl!: HTMLTextAreaElement; + private _outputEl!: HTMLElement; + private _tabsEl!: HTMLElement; + + protected connect(): void { + this._codeEl = this.getTarget("code") as HTMLTextAreaElement; + this._outputEl = this.getTarget("output") as HTMLElement; + this._tabsEl = this.getTarget("tabs") as HTMLElement; + + // Initialize files from the editor content + const initialCode = this._codeEl.value; + if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { + this._parseForkedFiles(initialCode); + } else { + this.files = [{ name: "main.gno", content: initialCode }]; + } + + this._renderTabs(); + this._setupKeyboard(); + } + + private _parseForkedFiles(code: string): void { + const parts = code.split(/^\/\/ --- (.+?) ---$/m); + this.files = []; + for (let i = 1; i < parts.length; i += 2) { + const name = parts[i].trim(); + const content = (parts[i + 1] || "").trim(); + if (name) { + this.files.push({ name, content }); + } + } + if (this.files.length === 0) { + this.files = [{ name: "main.gno", content: code }]; + } + this._codeEl.value = this.files[0].content; + } + + private _setupKeyboard(): void { + this._codeEl.addEventListener("keydown", (e: KeyboardEvent) => { + if (e.ctrlKey && e.key === "Enter") { + e.preventDefault(); + this.runCode(); + return; + } + if (e.key === "Tab" && !e.shiftKey) { + e.preventDefault(); + const start = this._codeEl.selectionStart; + const end = this._codeEl.selectionEnd; + this._codeEl.value = + this._codeEl.value.substring(0, start) + + "\t" + + this._codeEl.value.substring(end); + this._codeEl.selectionStart = this._codeEl.selectionEnd = start + 1; + } + }); + } + + private _renderTabs(): void { + // Clear existing tabs using safe DOM methods + while (this._tabsEl.firstChild) { + this._tabsEl.removeChild(this._tabsEl.firstChild); + } + + this.files.forEach((f, i) => { + const btn = document.createElement("button"); + btn.className = `b-playground-tab${i === this.activeFile ? " b-playground-tab--active" : ""}`; + btn.textContent = f.name; + btn.addEventListener("click", () => this._switchToFile(f.name)); + this._tabsEl.appendChild(btn); + }); + + const addBtn = document.createElement("button"); + addBtn.className = "b-playground-tab-add"; + addBtn.textContent = "+"; + addBtn.title = "Add file"; + addBtn.addEventListener("click", () => this.addFile()); + this._tabsEl.appendChild(addBtn); + } + + private _switchToFile(fileName: string): void { + this.files[this.activeFile].content = this._codeEl.value; + const idx = this.files.findIndex((f) => f.name === fileName); + if (idx >= 0) { + this.activeFile = idx; + this._codeEl.value = this.files[idx].content; + this._renderTabs(); + } + } + + public switchTab(event: Event): void { + const target = event.currentTarget as HTMLElement; + const fileName = target.dataset.playgroundFileParam || ""; + this._switchToFile(fileName); + } + + public addFile(): void { + const name = prompt("File name (e.g. helper.gno):"); + if (!name) return; + if (!name.endsWith(".gno")) { + alert("File name must end with .gno"); + return; + } + if (this.files.some((f) => f.name === name)) { + alert("File already exists"); + return; + } + + this.files[this.activeFile].content = this._codeEl.value; + this.files.push({ name, content: `package main\n` }); + this.activeFile = this.files.length - 1; + this._codeEl.value = this.files[this.activeFile].content; + this._renderTabs(); + } + + public async runCode(): Promise { + this.files[this.activeFile].content = this._codeEl.value; + this._outputEl.textContent = "Running..."; + + const remote = this.getValue("remote"); + const domain = this.getValue("domain"); + const code = this._codeEl.value; + const pkgMatch = code.match(/^package\s+(\w+)/m); + const pkgName = pkgMatch ? pkgMatch[1] : "main"; + + if (code.includes("func Render(")) { + try { + const resp = await fetch("/_/api/eval", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + pkg_path: `${domain}/r/playground_preview`, + expression: `Render("")`, + }), + }); + const result = await resp.json(); + if (result.error) { + this._outputEl.textContent = `Error: ${result.error}`; + this._outputEl.classList.add("u-color-danger"); + } else { + this._outputEl.textContent = result.result; + this._outputEl.classList.remove("u-color-danger"); + } + } catch { + this._outputEl.textContent = `Note: Server-side execution requires a running gno node.\n\nPackage: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo deploy and test, use:\n gnokey maketx addpkg -pkgpath "${domain}/r/yourname/pkg" ...`; + this._outputEl.classList.remove("u-color-danger"); + } + } else { + this._outputEl.textContent = `Package: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo run locally:\n gno run ${this.files.map((f) => f.name).join(" ")}\n\nTo test:\n gno test .`; + this._outputEl.classList.remove("u-color-danger"); + } + } + + public runTests(): void { + this._outputEl.textContent = + "Testing requires a running gno node.\n\nTo test locally:\n gno test ."; + } + + public formatCode(): void { + this._outputEl.textContent = + "Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:\n gno fmt -w " + + this.files[this.activeFile].name; + } + + public shareCode(): void { + this.files[this.activeFile].content = this._codeEl.value; + + const code = + this.files.length === 1 + ? this.files[0].content + : this.files + .map((f) => `// --- ${f.name} ---\n${f.content}`) + .join("\n\n"); + + const encoded = encodeURIComponent(code); + const url = `${window.location.origin}/_/play?code=${encoded}`; + + navigator.clipboard + .writeText(url) + .then(() => { + this._outputEl.textContent = "Share URL copied to clipboard!"; + }) + .catch(() => { + this._outputEl.textContent = `Share URL:\n${url}`; + }); + } + + public clearOutput(): void { + this._outputEl.textContent = "// Run code to see output here"; + this._outputEl.classList.remove("u-color-danger"); + } +} diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index dc8499c806d..d4f8812cc71 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -157,6 +157,12 @@ func (h *HTTPHandler) Get(w http.ResponseWriter, r *http.Request) { return } + // Handle playground page + if r.URL.Path == "/_/play" { + h.servePlayground(w, r) + return + } + // Handle download request outside of component rendering flow. if gnourl.WebQuery.Has("download") { h.ServeSourceDownload(r.Context(), gnourl, w, r) @@ -303,6 +309,16 @@ func (h *HTTPHandler) GetPackageView(ctx context.Context, gnourl *weburl.GnoURL, return h.GetHelpView(ctx, gnourl) } + // Handle Eval page (expression evaluator) + if gnourl.WebQuery.Has("eval") { + return h.GetEvalView(ctx, gnourl) + } + + // Handle Fork page (fork source to playground) + if gnourl.WebQuery.Has("fork") { + return h.GetForkView(ctx, gnourl) + } + // Handle Source page if gnourl.WebQuery.Has("source") || gnourl.IsFile() { return h.GetSourceView(ctx, gnourl) @@ -719,6 +735,115 @@ func (h *HTTPHandler) ServeSourceDownload(ctx context.Context, gnourl *weburl.Gn w.Write(source) // write raw file } +// servePlayground renders the standalone playground page. +func (h *HTTPHandler) servePlayground(w http.ResponseWriter, r *http.Request) { + var theme string + if c, err := r.Cookie("theme"); err == nil { + if c.Value == "light" || c.Value == "dark" { + theme = c.Value + } + } + + // Check if we have initial code from query (e.g. shared snippet) + initialCode := r.URL.Query().Get("code") + forkFrom := r.URL.Query().Get("from") + if initialCode == "" { + initialCode = `package main + +func Render(path string) string { + return "Hello, Playground!" +} +` + } + + indexData := components.IndexData{ + HeadData: components.HeadData{ + Title: "Playground — " + h.Static.Domain, + AssetsPath: h.Static.AssetsPath, + ChromaPath: h.Static.ChromaPath, + ChainId: h.Static.ChainId, + Remote: h.Static.RemoteHelp, + BuildTime: h.Static.BuildTime, + }, + FooterData: components.FooterData{ + Analytics: h.Static.Analytics, + AssetsPath: h.Static.AssetsPath, + BuildTime: h.Static.BuildTime, + }, + Theme: theme, + Banner: h.Static.Banner, + Mode: components.ViewModeRealm, + } + + indexData.BodyView = components.PlaygroundView(components.PlaygroundData{ + InitialCode: initialCode, + ForkFrom: forkFrom, + Remote: h.Static.RemoteHelp, + ChainId: h.Static.ChainId, + Domain: h.Static.Domain, + }) + + w.WriteHeader(http.StatusOK) + if err := components.IndexLayout(indexData).Render(w); err != nil { + h.Logger.Error("failed to render playground", "error", err) + } +} + +// GetEvalView renders the expression evaluator page for a package/realm. +func (h *HTTPHandler) GetEvalView(ctx context.Context, gnourl *weburl.GnoURL) (int, *components.View) { + jdoc, err := h.Client.Doc(ctx, gnourl.Path) + if err != nil { + h.Logger.Error("unable to fetch qdoc for eval", "error", err) + return GetClientErrorStatusPage(gnourl, err) + } + + funcs := components.BuildEvalFuncs(jdoc) + + return http.StatusOK, components.EvalView(components.EvalData{ + Remote: h.Static.RemoteHelp, + PkgPath: path.Join(h.Static.Domain, gnourl.Path), + Domain: h.Static.Domain, + Functions: funcs, + }) +} + +// GetForkView loads all source files from a package and redirects to playground with the code. +func (h *HTTPHandler) GetForkView(ctx context.Context, gnourl *weburl.GnoURL) (int, *components.View) { + pkgPath := gnourl.Path + + files, err := h.Client.ListFiles(ctx, pkgPath) + if err != nil { + h.Logger.Warn("unable to list files for fork", "path", pkgPath, "error", err) + return GetClientErrorStatusPage(gnourl, err) + } + + // Collect all .gno files + var allCode strings.Builder + for _, fileName := range files { + if !strings.HasSuffix(fileName, ".gno") { + continue + } + file, _, err := h.Client.File(ctx, pkgPath, fileName) + if err != nil { + continue + } + if allCode.Len() > 0 { + allCode.WriteString("\n// --- " + fileName + " ---\n\n") + } else { + allCode.WriteString("// --- " + fileName + " ---\n\n") + } + allCode.Write(file) + } + + return http.StatusOK, components.PlaygroundView(components.PlaygroundData{ + InitialCode: allCode.String(), + ForkFrom: path.Join(h.Static.Domain, pkgPath), + Remote: h.Static.RemoteHelp, + ChainId: h.Static.ChainId, + Domain: h.Static.Domain, + }) +} + func GetClientErrorStatusPage(_ *weburl.GnoURL, err error) (int, *components.View) { if err == nil { return http.StatusOK, nil diff --git a/gno.land/pkg/gnoweb/handler_http_test.go b/gno.land/pkg/gnoweb/handler_http_test.go index d48f0b7b217..9975984e2ca 100644 --- a/gno.land/pkg/gnoweb/handler_http_test.go +++ b/gno.land/pkg/gnoweb/handler_http_test.go @@ -76,6 +76,10 @@ func (s *stubClient) ListPaths(ctx context.Context, prefix string, limit int) ([ return nil, errors.New("stubClient: ListPaths not implemented") } +func (s *stubClient) Eval(_ context.Context, data string) ([]byte, error) { + return []byte("(stub eval: " + data + ")"), nil +} + type rawRenderer struct{} func (rawRenderer) RenderRealm(w io.Writer, u *weburl.GnoURL, src []byte, ctx gnoweb.RealmRenderContext) (md.Toc, error) { diff --git a/gno.land/pkg/gnoweb/handler_playground.go b/gno.land/pkg/gnoweb/handler_playground.go new file mode 100644 index 00000000000..b6c172d18b6 --- /dev/null +++ b/gno.land/pkg/gnoweb/handler_playground.go @@ -0,0 +1,168 @@ +package gnoweb + +import ( + "encoding/json" + "fmt" + "log/slog" + "net/http" + "strings" + "time" +) + +// PlaygroundConfig holds playground-specific configuration. +type PlaygroundConfig struct { + Enabled bool // Whether playground features are enabled +} + +// playgroundAPIHandler handles playground JSON API endpoints. +type playgroundAPIHandler struct { + logger *slog.Logger + client ClientAdapter + domain string + remote string +} + +// evalRequest is the JSON request body for the eval endpoint. +type evalRequest struct { + PkgPath string `json:"pkg_path"` + Expression string `json:"expression"` +} + +// evalResponse is the JSON response for the eval endpoint. +type evalResponse struct { + Result string `json:"result,omitempty"` + Error string `json:"error,omitempty"` +} + +// funcsResponse represents function info returned by the funcs endpoint. +type funcsResponse struct { + Functions []funcInfo `json:"functions"` + PkgDoc string `json:"pkg_doc,omitempty"` +} + +type funcInfo struct { + Name string `json:"name"` + Doc string `json:"doc,omitempty"` + Signature string `json:"signature"` + Params []paramInfo `json:"params,omitempty"` + Crossing bool `json:"crossing"` +} + +type paramInfo struct { + Name string `json:"name"` + Type string `json:"type"` +} + +// handlerPlaygroundEval creates an HTTP handler for expression evaluation. +func handlerPlaygroundEval(logger *slog.Logger, cli ClientAdapter, domain, remote string) http.Handler { + h := &playgroundAPIHandler{ + logger: logger, + client: cli, + domain: domain, + remote: remote, + } + return http.HandlerFunc(h.serveEval) +} + +// handlerPlaygroundFuncs creates an HTTP handler for listing functions. +func handlerPlaygroundFuncs(logger *slog.Logger, cli ClientAdapter) http.Handler { + h := &playgroundAPIHandler{ + logger: logger, + client: cli, + } + return http.HandlerFunc(h.serveFuncs) +} + +func (h *playgroundAPIHandler) serveEval(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + http.Error(w, "method not allowed", http.StatusMethodNotAllowed) + return + } + + var req evalRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + writeJSON(w, http.StatusBadRequest, evalResponse{Error: "invalid request body"}) + return + } + + if req.PkgPath == "" || req.Expression == "" { + writeJSON(w, http.StatusBadRequest, evalResponse{Error: "pkg_path and expression are required"}) + return + } + + // Clean the pkg path + pkgPath := strings.TrimPrefix(req.PkgPath, h.domain+"/") + pkgPath = strings.TrimPrefix(pkgPath, h.domain) + pkgPath = strings.TrimPrefix(pkgPath, "/") + + // Build the qeval data string: "gno.land/r/demo/boards.Render("")" + data := fmt.Sprintf("%s/%s.%s", h.domain, pkgPath, req.Expression) + + h.logger.Debug("playground eval", "data", data) + + start := time.Now() + result, err := h.client.Eval(r.Context(), data) + took := time.Since(start) + + h.logger.Debug("playground eval result", "took", took, "error", err) + + if err != nil { + writeJSON(w, http.StatusOK, evalResponse{Error: err.Error()}) + return + } + + writeJSON(w, http.StatusOK, evalResponse{Result: string(result)}) +} + +func (h *playgroundAPIHandler) serveFuncs(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + http.Error(w, "method not allowed", http.StatusMethodNotAllowed) + return + } + + pkgPath := r.URL.Query().Get("path") + if pkgPath == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "path parameter required"}) + return + } + + jdoc, err := h.client.Doc(r.Context(), pkgPath) + if err != nil { + writeJSON(w, http.StatusOK, map[string]string{"error": err.Error()}) + return + } + + resp := funcsResponse{ + PkgDoc: jdoc.PackageDoc, + } + + for _, fn := range jdoc.Funcs { + if fn.Type != "" { // Skip methods + continue + } + + fi := funcInfo{ + Name: fn.Name, + Doc: fn.Doc, + Signature: fn.Signature, + Crossing: fn.Crossing, + } + + for _, p := range fn.Params { + fi.Params = append(fi.Params, paramInfo{ + Name: p.Name, + Type: p.Type, + }) + } + + resp.Functions = append(resp.Functions, fi) + } + + writeJSON(w, http.StatusOK, resp) +} + +func writeJSON(w http.ResponseWriter, status int, v any) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + json.NewEncoder(w).Encode(v) //nolint:errcheck +} diff --git a/gno.land/pkg/gnoweb/public/js/controller-eval.js b/gno.land/pkg/gnoweb/public/js/controller-eval.js new file mode 100644 index 00000000000..a088b64e35d --- /dev/null +++ b/gno.land/pkg/gnoweb/public/js/controller-eval.js @@ -0,0 +1 @@ +import{BaseController as p}from"./controller.js";var h=class extends p{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",t=>{t.key==="ArrowUp"&&this._history.length>0&&(t.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression)})}evalExpression(t){t.preventDefault();let e=this._inputEl.value.trim();e&&this._doEval(e)}quickCall(t){let e=t.params?.funcName,a=t.params?.funcSig;if(e){let s=a?.match(/\(([^)]*)\)/),r=s?s[1]:"";r?(this._inputEl.value=`${e}(${r.split(",").map(i=>{let o=i.trim().split(/\s+/);return o[o.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(e.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${e}()`,this._doEval(`${e}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(t){let e=this.getValue("remote"),a=this.getValue("pkg-path");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let s=`${a}.${t}`,r=`${e}/abci_query?path=vm%2fqeval&data=${btoa(s)}`,i=await fetch(r);if(!i.ok)throw new Error(`HTTP ${i.status}`);let n=(await i.json()).result.response.ResponseBase,l,u;if(n.Data)l=atob(n.Data),u=!1;else if(n.Error){let c=n.Error.value||n.Error;l=`Error: ${typeof c=="string"?c:JSON.stringify(c)}`,u=!0}else l="(empty result)",u=!1;this._resultEl.textContent=l,this._resultEl.classList.toggle("u-color-danger",u),this._addToHistory(t,l,u)}catch(s){let r=`Error: ${s instanceof Error?s.message:String(s)}`;this._resultEl.textContent=r,this._resultEl.classList.add("u-color-danger"),this._addToHistory(t,r,!0)}}_addToHistory(t,e,a){if(this._history.push({expression:t,result:e,isError:a}),this._historyListEl){let s=document.createElement("div");s.className="b-eval-history-entry";let r=document.createElement("div");r.className="b-eval-history-expr";let i=document.createElement("code");i.className="u-font-mono",i.textContent=t,r.appendChild(i);let o=document.createElement("button");o.className="b-eval-history-rerun",o.textContent="\u21A9",o.title="Re-run",o.addEventListener("click",()=>{this._inputEl.value=t,this._doEval(t)}),r.appendChild(o);let n=document.createElement("pre");n.className=`b-eval-history-result${a?" u-color-danger":""}`,n.textContent=e.length>200?e.substring(0,200)+"...":e,s.appendChild(r),s.appendChild(n),this._historyListEl.prepend(s)}}};export{h as EvalController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js new file mode 100644 index 00000000000..00a3c2005e0 --- /dev/null +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -0,0 +1,25 @@ +import{BaseController as r}from"./controller.js";var a=class extends r{files=[];activeFile=0;_codeEl;_outputEl;_tabsEl;connect(){this._codeEl=this.getTarget("code"),this._outputEl=this.getTarget("output"),this._tabsEl=this.getTarget("tabs");let t=this._codeEl.value;t.includes("// --- ")&&t.includes(" ---")?this._parseForkedFiles(t):this.files=[{name:"main.gno",content:t}],this._renderTabs(),this._setupKeyboard()}_parseForkedFiles(t){let e=t.split(/^\/\/ --- (.+?) ---$/m);this.files=[];for(let i=1;i{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.runCode();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let e=this._codeEl.selectionStart,i=this._codeEl.selectionEnd;this._codeEl.value=this._codeEl.value.substring(0,e)+" "+this._codeEl.value.substring(i),this._codeEl.selectionStart=this._codeEl.selectionEnd=e+1}})}_renderTabs(){for(;this._tabsEl.firstChild;)this._tabsEl.removeChild(this._tabsEl.firstChild);this.files.forEach((e,i)=>{let n=document.createElement("button");n.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,n.textContent=e.name,n.addEventListener("click",()=>this._switchToFile(e.name)),this._tabsEl.appendChild(n)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this._tabsEl.appendChild(t)}_switchToFile(t){this.files[this.activeFile].content=this._codeEl.value;let e=this.files.findIndex(i=>i.name===t);e>=0&&(this.activeFile=e,this._codeEl.value=this.files[e].content,this._renderTabs())}switchTab(t){let i=t.currentTarget.dataset.playgroundFileParam||"";this._switchToFile(i)}addFile(){let t=prompt("File name (e.g. helper.gno):");if(t){if(!t.endsWith(".gno")){alert("File name must end with .gno");return}if(this.files.some(e=>e.name===t)){alert("File already exists");return}this.files[this.activeFile].content=this._codeEl.value,this.files.push({name:t,content:`package main +`}),this.activeFile=this.files.length-1,this._codeEl.value=this.files[this.activeFile].content,this._renderTabs()}}async runCode(){this.files[this.activeFile].content=this._codeEl.value,this._outputEl.textContent="Running...";let t=this.getValue("remote"),e=this.getValue("domain"),i=this._codeEl.value,n=i.match(/^package\s+(\w+)/m),o=n?n[1]:"main";if(i.includes("func Render("))try{let l=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${e}/r/playground_preview`,expression:'Render("")'})})).json();l.error?(this._outputEl.textContent=`Error: ${l.error}`,this._outputEl.classList.add("u-color-danger")):(this._outputEl.textContent=l.result,this._outputEl.classList.remove("u-color-danger"))}catch{this._outputEl.textContent=`Note: Server-side execution requires a running gno node. + +Package: ${o} +Files: ${this.files.map(s=>s.name).join(", ")} + +To deploy and test, use: + gnokey maketx addpkg -pkgpath "${e}/r/yourname/pkg" ...`,this._outputEl.classList.remove("u-color-danger")}else this._outputEl.textContent=`Package: ${o} +Files: ${this.files.map(s=>s.name).join(", ")} + +To run locally: + gno run ${this.files.map(s=>s.name).join(" ")} + +To test: + gno test .`,this._outputEl.classList.remove("u-color-danger")}runTests(){this._outputEl.textContent=`Testing requires a running gno node. + +To test locally: + gno test .`}formatCode(){this._outputEl.textContent=`Formatting requires server-side gno fmt (coming soon). + +To format locally: + gno fmt -w `+this.files[this.activeFile].name}shareCode(){this.files[this.activeFile].content=this._codeEl.value;let t=this.files.length===1?this.files[0].content:this.files.map(n=>`// --- ${n.name} --- +${n.content}`).join(` + +`),e=encodeURIComponent(t),i=`${window.location.origin}/_/play?code=${e}`;navigator.clipboard.writeText(i).then(()=>{this._outputEl.textContent="Share URL copied to clipboard!"}).catch(()=>{this._outputEl.textContent=`Share URL: +${i}`})}clearOutput(){this._outputEl.textContent="// Run code to see output here",this._outputEl.classList.remove("u-color-danger")}};export{a as PlaygroundController}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index ece537a6e51..693ac8d5d18 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -1,6 +1,6 @@ -:root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:grey}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}a.b-banner:hover{opacity:.9;-webkit-text-decoration:underline;text-decoration:underline}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1020 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1020 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);max-width:10ch;order:3;outline:none;field-sizing:content}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) +:root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-muted:var(--g-color-gray-300,#999);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-muted:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:grey}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}a.b-banner:hover{opacity:.9;-webkit-text-decoration:underline;text-decoration:underline}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1020 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1020 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);max-width:10ch;order:3;outline:none;field-sizing:content}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) .nav-theme-label:before{content:"System"}.b-footer .legal{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);margin-top:var(--g-space-3);padding-top:var(--g-space-3)}.b-footer .legal>nav{color:var(--s-color-text-secondary);display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3);margin-top:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .legal>nav{flex-direction:row}.b-footer .legal>nav>a+a:before{color:var(--s-color-text-quaternary);content:"|";margin-right:var(--g-space-3)}}.b-footer .legal>nav:nth-child(3){grid-column:span 2/span 2}.b-footer .legal>:last-child:not(ul),.b-footer .legal>nav li{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.b-footer .legal>:last-child:not(ul){flex-basis:100%}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .legal>:last-child:not(ul){flex-basis:auto;grid-column:span 1/span 1}}.b-footer a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-content-header{display:flex;flex-direction:column;gap:var(--g-space-3);grid-row:span 1/span 1;margin-bottom:var(--g-space-6);margin-top:var(--g-space-10)}@media (min-width:calc(820 / 16 * 1rem)){.b-content-header{grid-column:span 7/span 7;grid-row-start:1;justify-content:space-between;margin-top:var(--g-space-10)}}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header{align-items:center;flex-direction:row}}.b-content-header .title{align-items:center;display:flex;gap:var(--g-space-3)}.b-content-header .header-info{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-12);justify-content:space-between}.b-content-header .b-inline-btn>span{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header .b-inline-btn>span{display:inline}}.b-content-h1{font-size:var(--g-font-size-600);text-align:center}.b-content-h1,.b-content-h2{color:var(--s-color-text-primary);font-weight:var(--g-font-bold)}.b-content-h2{font-size:var(--g-font-size-400);margin-bottom:var(--g-space-4)}.b-btns{align-items:center;display:flex;gap:var(--g-space-1)}@media (min-width:calc(1020 / 16 * 1rem)){.b-btns{gap:var(--g-space-2)}}.b-btn{border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:inline-flex;gap:var(--g-space-1-5);min-width:-moz-max-content;min-width:max-content;padding:var(--g-space-1) var(--g-space-2)}.b-btn:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-btn .c-icon{margin-left:0;margin-right:0}.b-btn--secondary:hover{background-color:var(--s-color-bg-surface-primary)}.b-inline-btn{color:var(--s-color-text-tertiary);cursor:pointer}.b-inline-btn:hover{color:var(--s-color-text-tertiary-hover)}.b-switch input,.b-switch label:last-child{display:none}.b-switch input+label,.b-switch input:checked~label:last-child{display:block}.b-switch input:checked+label{display:none}.b-block-form,.b-inline-form{color:var(--s-color-text-tertiary);display:flex;flex-direction:column;gap:var(--g-space-2) var(--g-space-3)}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form,.b-inline-form{flex-direction:row}}.b-block-form{align-items:stretch}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form{flex-direction:column}}.b-input{border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:flex;font-size:var(--g-font-size-100);min-width:var(--g-space-48);overflow:hidden;position:relative}.b-input>svg{height:var(--g-space-4);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:var(--g-space-4)}.b-input>svg:first-child{left:var(--g-space-2)}.b-input>svg:last-child{right:var(--g-space-2)}.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:has(input:focus),.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input:has(input:focus)>label,.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input>label{align-items:center;background-color:var(--s-color-bg-surface-secondary);gap:var(--g-space-3);white-space:nowrap}.b-input>input,.b-input>label,.b-input>select{display:flex;padding:var(--g-space-1-5) var(--g-space-3)}.b-input>input,.b-input>select{color:inherit;outline:none;width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-input>input,.b-input>select{padding:var(--g-space-1-5) var(--g-space-2)}}.b-input>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-surface-secondary);cursor:pointer}.b-input>select:hover{background-color:var(--s-color-bg-surface-primary)}.b-input>input{background-color:var(--s-color-bg-base);border-left:none}.b-input>label+input{border-left:var(--s-border)}.b-list{margin-bottom:var(--g-space-10)}.b-list>li{border-bottom:var(--s-border);color:var(--s-color-text-tertiary)}.b-list>li:first-child{border-top:var(--s-border)}.b-list>li>a{align-items:center;display:flex;justify-content:space-between;padding:var(--g-space-2)}.b-list>li>a:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-list>li>a .c-icon{margin-left:0}.b-list .name{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:var(--s-color-text-secondary);margin-left:var(--g-space-1);max-width:100%;overflow:hidden;text-overflow:ellipsis}.b-user-sidebar{margin-top:var(--g-space-4)}.b-user-sidebar>*+*{margin-top:var(--g-space-8)}.b-user-sidebar .user-avatar{border:var(--s-border);border-radius:var(--s-rounded);height:var(--g-space-24);width:var(--g-space-24)}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .user-avatar{height:var(--g-space-36);width:var(--g-space-36)}}.b-user-sidebar .user-avatar img,.b-user-sidebar .user-avatar svg{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.b-user-sidebar .user-info{align-items:flex-start;display:flex;gap:var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info{flex-direction:column}}.b-user-sidebar .user-info>div:last-child{align-self:flex-end}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info>div:last-child{align-self:flex-start}}.b-user-sidebar .title{color:var(--s-color-text-primary);display:bock;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);line-height:var(--g-line-height-tight);text-transform:capitalize;word-break:break-all}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .title{font-size:var(--g-font-size-800)}}.b-user-sidebar .subtitle{color:var(--s-color-text-secondary);display:block;font-size:var(--g-font-size-100);line-height:var(--g-line-height-tight);margin-top:var(--g-space-2)}.b-user-sidebar>a{align-items:center;display:flex;justify-content:center}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar>a{display:inline-flex}}.b-sidebar{border-bottom:var(--s-border);grid-column:span 1/span 1;padding-bottom:var(--g-space-10);position:relative}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar{border-bottom:none;grid-column:span 3/span 3;grid-row:span 2/span 2;grid-row-start:1;height:100%;margin-bottom:0;order:2;padding-bottom:0}.b-sidebar+md-renderer:empty+*{grid-row-start:1;padding-top:var(--g-space-6)}.b-sidebar+md-renderer:empty+*,.b-sidebar+md-renderer:has(.b-btn:only-child)+*{grid-row-start:1;padding-top:var(--g-space-6)}}.b-sidebar:first-child{margin-top:var(--g-space-8)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar:first-child{margin-top:0}}.b-sidebar>div{padding-top:var(--g-space-2);position:sticky;top:var(--g-space-14)}.b-sidebar>div:has(.inner):not(:has(nav li)){display:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar>div{padding-bottom:var(--g-space-2)}}.b-sidebar .inner{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded-sm);max-height:100vh;overflow:scroll;scrollbar-width:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner{background-color:var(--g-color-transparent)}}.b-sidebar .inner>nav{display:none;font-size:var(--g-font-size-100);margin-top:var(--g-space-2);padding:var(--g-space-2) var(--g-space-4) var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner>nav{display:block;margin-top:0;padding-bottom:var(--g-space-28);padding-left:0;padding-right:0}.b-sidebar .inner>nav>*{padding-left:0}}.b-sidebar .b-expend-btn{align-items:center;background-color:var(--s-color-bg-base);border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;padding:var(--g-space-2) var(--g-space-4)}.b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .b-expend-btn{border:none;cursor:default;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-top:var(--g-space-10);padding:0}.b-sidebar .b-expend-btn,.b-sidebar .b-expend-btn:hover{background-color:var(--g-color-transparent)}}.b-sidebar .b-expend-btn:has(#toc-expend:checked)+nav{display:block}.b-sidebar .b-expend-btn>input{display:none}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon:before{content:"close"}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon>svg{transform:rotate(180deg)}.b-sidebar .wrapper-icon{align-items:center;display:flex;gap:var(--g-space-1-5)}.b-sidebar .wrapper-icon:before{content:"open"}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .wrapper-icon{display:none}}.dev-mode .b-sidebar .b-expend-btn{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.dev-mode .b-sidebar .b-expend-btn{background-color:var(--g-color-transparent)}}.dev-mode .b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-primary)}.b-source-code{font-family:var(--g-font-mono)}.b-source-code>pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);overflow:scroll;padding:var(--g-space-4) var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-source-code>pre{font-size:var(--g-font-size-200);padding:var(--g-space-8) var(--g-space-3)}}.b-source-code>pre a:hover{-webkit-text-decoration:none;text-decoration:none}[data-theme=dark] .b-source-code>pre{background-color:var(--s-color-bg-base)}.b-toc{list-style:none;margin-top:var(--g-space-2)}.b-toc>*+*{margin-bottom:var(--g-space-1-5);margin-top:var(--g-space-1-5)}.b-toc .b-toc{border-left:1px solid var(--s-color-border-secondary);margin-bottom:var(--g-space-4);padding-left:var(--g-space-4)}.b-toc a>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b-toc a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}main.dev-mode .b-toc a{word-break:break-all}.b-source-toc>.b-toc{margin-bottom:var(--g-space-4)}.b-source-toc>*+*{margin-top:var(--g-space-1-5)}.b-source-toc .accordion summary>svg{transform:rotate(-90deg)}.b-source-toc .accordion summary:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-source-toc .accordion[open] summary>svg{transform:rotate(0deg)}.b-source-toc .accordion>.b-toc{padding-left:var(--g-space-5)}.b-source-toc .accordion h3{font-size:var(--g-font-size-100);font-weight:var(--g-font-medium);margin-top:0}.b-action-overview{margin-bottom:var(--g-space-12)}.b-action-overview>p{font-size:var(--g-font-size-200)}.b-action-function{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);margin-bottom:var(--g-space-3);padding:var(--g-space-4)}.b-action-function .title{align-items:baseline;display:flex;flex-wrap:wrap;font-size:var(--g-font-size-50);gap:var(--g-space-1) var(--g-space-4);margin-bottom:var(--g-space-1)}.b-action-function>header{align-items:flex-start;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;margin-bottom:var(--g-space-4)}.b-action-function>header .signature>code{color:var(--s--text-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-action-function>header .signature{font-size:var(--g-font-size-50)}}.b-action-function>header h2{color:var(--s-color-text-primary);font-size:var(--g-font-size-300);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight)}.b-action-function .description{color:var(--s-color-text-secondary);font-size:var(--g-font-size-200)}.b-action-function .params{align-items:stretch;color:var(--s-color-text-tertiary);display:flex;flex-direction:column;font-size:var(--g-font-size-100);gap:var(--g-space-1);margin-bottom:var(--g-space-1);margin-top:var(--g-space-6);width:100%}.b-action-function .params label{background-color:var(--s-color-bg-surface-primary)}.b-action-function .params .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .params .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .b-alert{background-color:var(--s-color-bg-warning-weak);border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-left-color:var(--s-color-border-warning);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);color:var(--s-color-text-warning);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.b-action-function .b-alert>h1:first-child,.b-action-function .b-alert>h2:first-child,.b-action-function .b-alert>h3:first-child{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2)}.b-action-function .b-alert .b-btn,.b-action-function .b-alert label{background-color:var(--s-color-bg-warning-action);border:none;color:var(--s-color-bg-warning-weak);cursor:pointer}.b-action-function .b-alert .b-btn{margin-top:var(--g-space-4)}.b-code{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);position:relative}.b-code pre{color:var(--s-color-text-secondary);padding:var(--g-space-4);padding-right:var(--g-space-10);white-space:pre-wrap}.b-code .btn-copy{background-color:var(--g-color-transparent);color:var(--s-color-text-tertiary);cursor:pointer;padding:0;position:absolute;right:var(--g-space-2);top:var(--g-space-2)}.b-code .btn-copy:hover{color:var(--s-color-text-primary)}.b-packages{min-height:var(--g-space-96);padding-bottom:var(--g-space-24);scroll-margin-block-start:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages{grid-column:span 7/span 7}}.b-packages .title{color:var(--s-color-text-primary);display:block;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .title{font-size:var(--g-font-size-800)}}.b-packages nav{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--g-space-3);gap:var(--g-space-3);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages nav{border-bottom:var(--s-border);padding-bottom:var(--g-space-2)}}.b-packages .packages-tabs{border-bottom:var(--s-border);color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);gap:var(--g-space-4);grid-column:span 4/span 4;padding-bottom:var(--g-space-2);width:auto}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-tabs{border-bottom:none;font-size:var(--g-font-size-100);grid-column:span 2/span 2;padding-bottom:0;width:100%}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs{gap:var(--g-space-6);margin-left:0;width:100%}}.b-packages .packages-tabs label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-1);position:relative}.b-packages .packages-tabs label:hover{color:var(--s-color-text-tertiary-hover)}.b-packages .packages-tabs label .b-tag--secondary{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs label .b-tag--secondary{display:inline}}.b-packages .packages-filters{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);grid-column:span 2/span 2}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-filters{grid-column:span 1/span 1}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters{justify-content:flex-end}}.b-packages .packages-filters>div{display:grid}.b-packages .packages-filters label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-0-5);grid-column:1/1;grid-row:1/1;justify-content:space-between}.b-packages .packages-filters label:hover>*{color:var(--s-color-text-tertiary-hover)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters label span{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-packages .packages-filters label span{display:inline}}.b-packages .packages-search{display:flex;font-size:var(--g-font-size-100);grid-column:span 2/span 2;position:relative}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 3/span 3}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 1/span 1}}.b-packages .range{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-gap:var(--g-space-2);color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);gap:var(--g-space-2)}.b-packages .range:before{color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-200);font-weight:var(--g-font-weight-bold);grid-column:1/-1;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);text-align:center;width:100%}.b-packages .range:after{content:"Add a package to your namespace to get started";display:none;font-size:var(--g-font-size-100);grid-column:1/-1;text-align:center}.b-packages .range:empty:before{content:"No packages found";display:block}.b-packages .range:empty:after{content:"Add a package to your namespace to get started";display:block}.b-packages article{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded);display:flex;flex-direction:column;gap:var(--g-space-6);padding:var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages article{gap:var(--g-space-2)}}.b-packages article .article-content{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded-sm);display:flex;flex-direction:column;height:100%;padding:var(--g-space-2);width:100%}.b-packages article .article-content .title{align-items:center;display:flex;gap:var(--g-space-2);margin-bottom:var(--g-space-1);overflow:hidden;width:100%}.b-packages article .article-content h3{font-size:var(--g-font-size-200);font-weight:var(--g-font-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article .article-content h3>a{color:var(--s-color-text-link-hover)}.b-packages article .article-content h3>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article .article-content>p{overflow:hidden;text-overflow:ellipsis;width:100%}.b-packages article .article-content>p>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article footer{display:flex;font-size:var(--g-font-size-50);gap:var(--g-space-1);justify-content:space-between;padding-bottom:var(--g-space-1);padding-left:var(--g-space-2);padding-right:var(--g-space-2)}.b-packages article footer time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article footer .size{text-align:right}.b-packages article,.b-packages li{display:none}.b-packages:has(input[value=packages]:checked) li{display:flex}.b-packages:has(input[value=packages]:checked) article{display:flex}.b-packages:has(input[value=realms]:checked) li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;gap:var(--g-space-2);min-height:70vh}.b-playground-toolbar{flex-wrap:wrap;justify-content:space-between}.b-playground-toolbar,.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex:1;flex-direction:column;min-height:40vh;overflow:hidden}.b-playground-tabs{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto}.b-playground-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--s-color-text-muted);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-50);padding:var(--g-space-1) var(--g-space-2);white-space:nowrap}.b-playground-tab:hover{background-color:var(--s-color-bg-default);color:var(--s-color-text-base)}--active.b-playground-tab{border-bottom-color:var(--s-color-border-brand);color:var(--s-color-text-base);font-weight:var(--g-font-semibold)}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-base)}.b-playground-editor{display:flex;flex:1}.b-playground-code{background-color:var(--s-color-bg-default);border:none;color:var(--s-color-text-base);flex:1;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;min-height:300px;outline:none;padding:var(--g-space-2);resize:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;width:100%}.b-playground-output{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) var(--g-space-2)}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-playground-output-clear:hover{color:var(--s-color-text-base)}.b-playground-output-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-eval-header{margin-bottom:var(--g-space-1)}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:space-between;letter-spacing:.05em;padding:var(--g-space-1) var(--g-space-2);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-eval-result-clear:hover{color:var(--s-color-text-base)}.b-eval-result-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:60px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-func{align-items:center;display:flex;gap:var(--g-space-2)}.b-eval-history-entry{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-1);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-muted);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From 6f327fbcdd8aa06cf4235947870fd4046ed2da54 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:32:50 +0000 Subject: [PATCH 02/40] fix(gnoweb): eval uses server-side API, fix playground layout --- .../pkg/gnoweb/frontend/css/06-blocks.css | 2 ++ .../pkg/gnoweb/frontend/js/controller-eval.ts | 29 +++++++++++-------- .../pkg/gnoweb/public/js/controller-eval.js | 2 +- gno.land/pkg/gnoweb/public/main.css | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 0e2a3c1183d..005a346a31c 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2527,6 +2527,7 @@ main.dev-mode .b-toc a { flex-direction: column; gap: var(--g-space-2); min-height: 70vh; + grid-column: 1 / -1; } .b-playground-toolbar { @@ -2684,6 +2685,7 @@ main.dev-mode .b-toc a { display: flex; flex-direction: column; gap: var(--g-space-3); + grid-column: 1 / -1; } .b-eval-header { diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts index b9d9d86e806..b5ec39139c0 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts @@ -70,36 +70,41 @@ export class EvalController extends BaseController { } private async _doEval(expression: string): Promise { - const remote = this.getValue("remote"); const pkgPath = this.getValue("pkg-path"); + const domain = this.getValue("domain"); this._resultEl.textContent = "Evaluating..."; this._resultEl.classList.remove("u-color-danger"); try { - const data = `${pkgPath}.${expression}`; - const url = `${remote}/abci_query?path=vm%2fqeval&data=${btoa(data)}`; - const response = await fetch(url); + // Strip domain prefix from pkgPath for the API (it expects relative path) + const relPath = pkgPath.startsWith(domain + "/") + ? pkgPath.slice(domain.length + 1) + : pkgPath; + + const response = await fetch("/_/api/eval", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + pkg_path: relPath, + expression: expression, + }), + }); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const json = await response.json(); - const responseBase = json.result.response.ResponseBase; let result: string; let isError: boolean; - if (responseBase.Data) { - result = atob(responseBase.Data); - isError = false; - } else if (responseBase.Error) { - const errorValue = responseBase.Error.value || responseBase.Error; - result = `Error: ${typeof errorValue === "string" ? errorValue : JSON.stringify(errorValue)}`; + if (json.error) { + result = `Error: ${json.error}`; isError = true; } else { - result = "(empty result)"; + result = json.result || "(empty result)"; isError = false; } diff --git a/gno.land/pkg/gnoweb/public/js/controller-eval.js b/gno.land/pkg/gnoweb/public/js/controller-eval.js index a088b64e35d..2c7e3e78dce 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-eval.js +++ b/gno.land/pkg/gnoweb/public/js/controller-eval.js @@ -1 +1 @@ -import{BaseController as p}from"./controller.js";var h=class extends p{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",t=>{t.key==="ArrowUp"&&this._history.length>0&&(t.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression)})}evalExpression(t){t.preventDefault();let e=this._inputEl.value.trim();e&&this._doEval(e)}quickCall(t){let e=t.params?.funcName,a=t.params?.funcSig;if(e){let s=a?.match(/\(([^)]*)\)/),r=s?s[1]:"";r?(this._inputEl.value=`${e}(${r.split(",").map(i=>{let o=i.trim().split(/\s+/);return o[o.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(e.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${e}()`,this._doEval(`${e}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(t){let e=this.getValue("remote"),a=this.getValue("pkg-path");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let s=`${a}.${t}`,r=`${e}/abci_query?path=vm%2fqeval&data=${btoa(s)}`,i=await fetch(r);if(!i.ok)throw new Error(`HTTP ${i.status}`);let n=(await i.json()).result.response.ResponseBase,l,u;if(n.Data)l=atob(n.Data),u=!1;else if(n.Error){let c=n.Error.value||n.Error;l=`Error: ${typeof c=="string"?c:JSON.stringify(c)}`,u=!0}else l="(empty result)",u=!1;this._resultEl.textContent=l,this._resultEl.classList.toggle("u-color-danger",u),this._addToHistory(t,l,u)}catch(s){let r=`Error: ${s instanceof Error?s.message:String(s)}`;this._resultEl.textContent=r,this._resultEl.classList.add("u-color-danger"),this._addToHistory(t,r,!0)}}_addToHistory(t,e,a){if(this._history.push({expression:t,result:e,isError:a}),this._historyListEl){let s=document.createElement("div");s.className="b-eval-history-entry";let r=document.createElement("div");r.className="b-eval-history-expr";let i=document.createElement("code");i.className="u-font-mono",i.textContent=t,r.appendChild(i);let o=document.createElement("button");o.className="b-eval-history-rerun",o.textContent="\u21A9",o.title="Re-run",o.addEventListener("click",()=>{this._inputEl.value=t,this._doEval(t)}),r.appendChild(o);let n=document.createElement("pre");n.className=`b-eval-history-result${a?" u-color-danger":""}`,n.textContent=e.length>200?e.substring(0,200)+"...":e,s.appendChild(r),s.appendChild(n),this._historyListEl.prepend(s)}}};export{h as EvalController}; +import{BaseController as h}from"./controller.js";var a=class extends h{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",e=>{e.key==="ArrowUp"&&this._history.length>0&&(e.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression)})}evalExpression(e){e.preventDefault();let t=this._inputEl.value.trim();t&&this._doEval(t)}quickCall(e){let t=e.params?.funcName,o=e.params?.funcSig;if(t){let i=o?.match(/\(([^)]*)\)/),s=i?i[1]:"";s?(this._inputEl.value=`${t}(${s.split(",").map(r=>{let n=r.trim().split(/\s+/);return n[n.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(t.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${t}()`,this._doEval(`${t}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(e){let t=this.getValue("pkg-path"),o=this.getValue("domain");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let i=t.startsWith(o+"/")?t.slice(o.length+1):t,s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:i,expression:e})});if(!s.ok)throw new Error(`HTTP ${s.status}`);let r=await s.json(),n,l;r.error?(n=`Error: ${r.error}`,l=!0):(n=r.result||"(empty result)",l=!1),this._resultEl.textContent=n,this._resultEl.classList.toggle("u-color-danger",l),this._addToHistory(e,n,l)}catch(i){let s=`Error: ${i instanceof Error?i.message:String(i)}`;this._resultEl.textContent=s,this._resultEl.classList.add("u-color-danger"),this._addToHistory(e,s,!0)}}_addToHistory(e,t,o){if(this._history.push({expression:e,result:t,isError:o}),this._historyListEl){let i=document.createElement("div");i.className="b-eval-history-entry";let s=document.createElement("div");s.className="b-eval-history-expr";let r=document.createElement("code");r.className="u-font-mono",r.textContent=e,s.appendChild(r);let n=document.createElement("button");n.className="b-eval-history-rerun",n.textContent="\u21A9",n.title="Re-run",n.addEventListener("click",()=>{this._inputEl.value=e,this._doEval(e)}),s.appendChild(n);let l=document.createElement("pre");l.className=`b-eval-history-result${o?" u-color-danger":""}`,l.textContent=t.length>200?t.substring(0,200)+"...":t,i.appendChild(s),i.appendChild(l),this._historyListEl.prepend(i)}}};export{a as EvalController}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index 693ac8d5d18..4afa0710d2c 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -3,4 +3,4 @@ li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;gap:var(--g-space-2);min-height:70vh}.b-playground-toolbar{flex-wrap:wrap;justify-content:space-between}.b-playground-toolbar,.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex:1;flex-direction:column;min-height:40vh;overflow:hidden}.b-playground-tabs{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto}.b-playground-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--s-color-text-muted);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-50);padding:var(--g-space-1) var(--g-space-2);white-space:nowrap}.b-playground-tab:hover{background-color:var(--s-color-bg-default);color:var(--s-color-text-base)}--active.b-playground-tab{border-bottom-color:var(--s-color-border-brand);color:var(--s-color-text-base);font-weight:var(--g-font-semibold)}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-base)}.b-playground-editor{display:flex;flex:1}.b-playground-code{background-color:var(--s-color-bg-default);border:none;color:var(--s-color-text-base);flex:1;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;min-height:300px;outline:none;padding:var(--g-space-2);resize:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;width:100%}.b-playground-output{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) var(--g-space-2)}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-playground-output-clear:hover{color:var(--s-color-text-base)}.b-playground-output-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-eval-header{margin-bottom:var(--g-space-1)}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:space-between;letter-spacing:.05em;padding:var(--g-space-1) var(--g-space-2);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-eval-result-clear:hover{color:var(--s-color-text-base)}.b-eval-result-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:60px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-func{align-items:center;display:flex;gap:var(--g-space-2)}.b-eval-history-entry{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-1);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-muted);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;gap:var(--g-space-2);grid-column:1/-1;min-height:70vh}.b-playground-toolbar{flex-wrap:wrap;justify-content:space-between}.b-playground-toolbar,.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex:1;flex-direction:column;min-height:40vh;overflow:hidden}.b-playground-tabs{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto}.b-playground-tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--s-color-text-muted);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-50);padding:var(--g-space-1) var(--g-space-2);white-space:nowrap}.b-playground-tab:hover{background-color:var(--s-color-bg-default);color:var(--s-color-text-base)}--active.b-playground-tab{border-bottom-color:var(--s-color-border-brand);color:var(--s-color-text-base);font-weight:var(--g-font-semibold)}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-base)}.b-playground-editor{display:flex;flex:1}.b-playground-code{background-color:var(--s-color-bg-default);border:none;color:var(--s-color-text-base);flex:1;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;min-height:300px;outline:none;padding:var(--g-space-2);resize:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;width:100%}.b-playground-output{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) var(--g-space-2)}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-playground-output-clear:hover{color:var(--s-color-text-base)}.b-playground-output-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-3);grid-column:1/-1}.b-eval-header{margin-bottom:var(--g-space-1)}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:space-between;letter-spacing:.05em;padding:var(--g-space-1) var(--g-space-2);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-50)}.b-eval-result-clear:hover{color:var(--s-color-text-base)}.b-eval-result-content{font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:60px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-func{align-items:center;display:flex;gap:var(--g-space-2)}.b-eval-history-entry{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-1);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-muted);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From a7abadf26c421857e16c2a301c98bbde557507d6 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:35:06 +0000 Subject: [PATCH 03/40] fix(gnoweb): add cache busting to dynamic JS controller imports --- gno.land/pkg/gnoweb/frontend/js/index.ts | 13 ++++++++++++- gno.land/pkg/gnoweb/public/js/index.js | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/index.ts b/gno.land/pkg/gnoweb/frontend/js/index.ts index f58505ff099..701c1096c39 100644 --- a/gno.land/pkg/gnoweb/frontend/js/index.ts +++ b/gno.land/pkg/gnoweb/frontend/js/index.ts @@ -7,6 +7,16 @@ declare const process: { env: { NODE_ENV: string } }; const CONTROLLER_PATH = "/public/js/controller-"; const modulePromises = new Map>>(); + // Extract build version from this script's own URL for cache busting + const buildVersion = (() => { + const scripts = document.querySelectorAll('script[src*="index.js"]'); + for (const s of scripts) { + const match = s.getAttribute("src")?.match(/[?&]v=([^&]+)/); + if (match) return match[1]; + } + return ""; + })(); + // load one controller for a provided set of elements (no re-query) const loadController = async ( controllerName: string, @@ -26,7 +36,8 @@ declare const process: { env: { NODE_ENV: string } }; const pascal = camel.charAt(0).toUpperCase() + camel.slice(1); // Only kebab-case file naming, prefixed with "controller-" - const path = `${CONTROLLER_PATH}${kebab}.js`; + const vSuffix = buildVersion ? `?v=${buildVersion}` : ""; + const path = `${CONTROLLER_PATH}${kebab}.js${vSuffix}`; // import the controller module with promise cache (dedupe concurrent imports) let modulePromise = modulePromises.get(path); diff --git a/gno.land/pkg/gnoweb/public/js/index.js b/gno.land/pkg/gnoweb/public/js/index.js index 79a0e82c0c0..cf820979f05 100644 --- a/gno.land/pkg/gnoweb/public/js/index.js +++ b/gno.land/pkg/gnoweb/public/js/index.js @@ -1 +1 @@ -function b(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function M(i){return i=i.replace(/-([a-z])/g,(m,p)=>p.toUpperCase()),i.charAt(0).toLowerCase()+i.slice(1)}(()=>{let i="/public/js/controller-",m=new Map,p=async(e,o)=>{if(o.length===0)return;let l=b(e);if(!/^[a-z0-9-]+$/.test(l)){console.error(`\u274C Invalid controller name: ${e}`);return}let d=M(e),c=d.charAt(0).toUpperCase()+d.slice(1),a=`${i}${l}.js`,s=m.get(a);s||(s=import(a),m.set(a,s));let t;try{t=await s}catch(n){m.delete(a),console.error(`\u274C Failed to load ${a}:`,n);return}let r,f=t.default;if(typeof f=="function")r=/^\s*class\b/.test(Function.prototype.toString.call(f))?u=>new f(u):f;else{let n=t[`${c}Controller`];n&&(r=u=>new n(u))}if(typeof r!="function"){console.error(`\u274C Invalid controller export for ${e}. Expected default or named class "${c}Controller"`);return}let h=`data-controller-initialized-${l}`,g=o.filter(n=>!n.hasAttribute(h));g.length!==0&&g.forEach(n=>{try{r(n),n.setAttribute(h,"1")}catch(u){console.error(`\u274C Controller runtime error for ${e}:`,u,n)}})},L=e=>{let o=new Map;return e.querySelectorAll("[data-controller]").forEach(l=>{let d=l.getAttribute("data-controller");d&&d.split(/\s+/).filter(Boolean).forEach(c=>{let a=o.get(c)||[];a.push(l),o.set(c,a)})}),o},T=async()=>{let e=L(document);e.size!==0&&(await Promise.all(Array.from(e.entries()).map(([o,l])=>p(o,l))),document.dispatchEvent(new CustomEvent("controllers:ready",{detail:{names:Array.from(e.keys())}})))},v=()=>{let e=new Map,o=!1,l=()=>{if(o=!1,e.size===0)return;let s=[];for(let[t,r]of e)s.push(p(t,[...r]));e.clear(),Promise.all(s).catch(t=>console.error("Observer batch error:",t))},d=()=>{o||(o=!0,queueMicrotask(l))},c=s=>{if(!s.querySelector?.("[data-controller]"))return;let t=L(s);for(let[r,f]of t){let g=`data-controller-initialized-${b(r)}`,n=f.filter(E=>!E.hasAttribute(g));if(n.length===0)continue;let u=e.get(r)??new Set;n.forEach(E=>u.add(E)),e.set(r,u)}t.size&&d()};new MutationObserver(s=>{for(let t of s)t.type==="childList"?t.addedNodes.forEach(r=>{r.nodeType===1&&c(r)}):t.type==="attributes"&&t.target instanceof HTMLElement&&c(t.target)}).observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-controller"]})};document.addEventListener("DOMContentLoaded",async()=>{await T(),v()})})(); +function b(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function M(i){return i=i.replace(/-([a-z])/g,(g,h)=>h.toUpperCase()),i.charAt(0).toLowerCase()+i.slice(1)}(()=>{let i="/public/js/controller-",g=new Map,h=(()=>{let e=document.querySelectorAll('script[src*="index.js"]');for(let n of e){let o=n.getAttribute("src")?.match(/[?&]v=([^&]+)/);if(o)return o[1]}return""})(),v=async(e,n)=>{if(n.length===0)return;let o=b(e);if(!/^[a-z0-9-]+$/.test(o)){console.error(`\u274C Invalid controller name: ${e}`);return}let u=M(e),c=u.charAt(0).toUpperCase()+u.slice(1),f=h?`?v=${h}`:"",s=`${i}${o}.js${f}`,t=g.get(s);t||(t=import(s),g.set(s,t));let l;try{l=await t}catch(r){g.delete(s),console.error(`\u274C Failed to load ${s}:`,r);return}let d,m=l.default;if(typeof m=="function")d=/^\s*class\b/.test(Function.prototype.toString.call(m))?a=>new m(a):m;else{let r=l[`${c}Controller`];r&&(d=a=>new r(a))}if(typeof d!="function"){console.error(`\u274C Invalid controller export for ${e}. Expected default or named class "${c}Controller"`);return}let E=`data-controller-initialized-${o}`,p=n.filter(r=>!r.hasAttribute(E));p.length!==0&&p.forEach(r=>{try{d(r),r.setAttribute(E,"1")}catch(a){console.error(`\u274C Controller runtime error for ${e}:`,a,r)}})},L=e=>{let n=new Map;return e.querySelectorAll("[data-controller]").forEach(o=>{let u=o.getAttribute("data-controller");u&&u.split(/\s+/).filter(Boolean).forEach(c=>{let f=n.get(c)||[];f.push(o),n.set(c,f)})}),n},T=async()=>{let e=L(document);e.size!==0&&(await Promise.all(Array.from(e.entries()).map(([n,o])=>v(n,o))),document.dispatchEvent(new CustomEvent("controllers:ready",{detail:{names:Array.from(e.keys())}})))},w=()=>{let e=new Map,n=!1,o=()=>{if(n=!1,e.size===0)return;let s=[];for(let[t,l]of e)s.push(v(t,[...l]));e.clear(),Promise.all(s).catch(t=>console.error("Observer batch error:",t))},u=()=>{n||(n=!0,queueMicrotask(o))},c=s=>{if(!s.querySelector?.("[data-controller]"))return;let t=L(s);for(let[l,d]of t){let E=`data-controller-initialized-${b(l)}`,p=d.filter(a=>!a.hasAttribute(E));if(p.length===0)continue;let r=e.get(l)??new Set;p.forEach(a=>r.add(a)),e.set(l,r)}t.size&&u()};new MutationObserver(s=>{for(let t of s)t.type==="childList"?t.addedNodes.forEach(l=>{l.nodeType===1&&c(l)}):t.type==="attributes"&&t.target instanceof HTMLElement&&c(t.target)}).observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-controller"]})};document.addEventListener("DOMContentLoaded",async()=>{await T(),w()})})(); From 1cbe351c9bdf53a04ae52419163ad9527a60e500 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 20:00:42 +0000 Subject: [PATCH 04/40] fix(gnoweb): eval form submit via direct listener and Enter key --- .../pkg/gnoweb/frontend/js/controller-eval.ts | 17 +++++++++++++++++ .../pkg/gnoweb/public/js/controller-eval.js | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts index b5ec39139c0..e54b1d28e54 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts @@ -20,12 +20,29 @@ export class EvalController extends BaseController { this._inputEl?.focus(); this._inputEl?.addEventListener("keydown", (e: KeyboardEvent) => { + // Up arrow = previous history if (e.key === "ArrowUp" && this._history.length > 0) { e.preventDefault(); this._inputEl.value = this._history[this._history.length - 1].expression; } + // Enter = submit + if (e.key === "Enter") { + e.preventDefault(); + const expr = this._inputEl.value.trim(); + if (expr) this._doEval(expr); + } }); + + // Also intercept form submit directly (belt and suspenders) + const form = this.element.querySelector("form"); + if (form) { + form.addEventListener("submit", (e: Event) => { + e.preventDefault(); + const expr = this._inputEl.value.trim(); + if (expr) this._doEval(expr); + }); + } } public evalExpression(event: Event): void { diff --git a/gno.land/pkg/gnoweb/public/js/controller-eval.js b/gno.land/pkg/gnoweb/public/js/controller-eval.js index 2c7e3e78dce..991f33d2e20 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-eval.js +++ b/gno.land/pkg/gnoweb/public/js/controller-eval.js @@ -1 +1 @@ -import{BaseController as h}from"./controller.js";var a=class extends h{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",e=>{e.key==="ArrowUp"&&this._history.length>0&&(e.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression)})}evalExpression(e){e.preventDefault();let t=this._inputEl.value.trim();t&&this._doEval(t)}quickCall(e){let t=e.params?.funcName,o=e.params?.funcSig;if(t){let i=o?.match(/\(([^)]*)\)/),s=i?i[1]:"";s?(this._inputEl.value=`${t}(${s.split(",").map(r=>{let n=r.trim().split(/\s+/);return n[n.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(t.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${t}()`,this._doEval(`${t}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(e){let t=this.getValue("pkg-path"),o=this.getValue("domain");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let i=t.startsWith(o+"/")?t.slice(o.length+1):t,s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:i,expression:e})});if(!s.ok)throw new Error(`HTTP ${s.status}`);let r=await s.json(),n,l;r.error?(n=`Error: ${r.error}`,l=!0):(n=r.result||"(empty result)",l=!1),this._resultEl.textContent=n,this._resultEl.classList.toggle("u-color-danger",l),this._addToHistory(e,n,l)}catch(i){let s=`Error: ${i instanceof Error?i.message:String(i)}`;this._resultEl.textContent=s,this._resultEl.classList.add("u-color-danger"),this._addToHistory(e,s,!0)}}_addToHistory(e,t,o){if(this._history.push({expression:e,result:t,isError:o}),this._historyListEl){let i=document.createElement("div");i.className="b-eval-history-entry";let s=document.createElement("div");s.className="b-eval-history-expr";let r=document.createElement("code");r.className="u-font-mono",r.textContent=e,s.appendChild(r);let n=document.createElement("button");n.className="b-eval-history-rerun",n.textContent="\u21A9",n.title="Re-run",n.addEventListener("click",()=>{this._inputEl.value=e,this._doEval(e)}),s.appendChild(n);let l=document.createElement("pre");l.className=`b-eval-history-result${o?" u-color-danger":""}`,l.textContent=t.length>200?t.substring(0,200)+"...":t,i.appendChild(s),i.appendChild(l),this._historyListEl.prepend(i)}}};export{a as EvalController}; +import{BaseController as u}from"./controller.js";var a=class extends u{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",t=>{if(t.key==="ArrowUp"&&this._history.length>0&&(t.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression),t.key==="Enter"){t.preventDefault();let i=this._inputEl.value.trim();i&&this._doEval(i)}});let e=this.element.querySelector("form");e&&e.addEventListener("submit",t=>{t.preventDefault();let i=this._inputEl.value.trim();i&&this._doEval(i)})}evalExpression(e){e.preventDefault();let t=this._inputEl.value.trim();t&&this._doEval(t)}quickCall(e){let t=e.params?.funcName,i=e.params?.funcSig;if(t){let n=i?.match(/\(([^)]*)\)/),s=n?n[1]:"";s?(this._inputEl.value=`${t}(${s.split(",").map(l=>{let r=l.trim().split(/\s+/);return r[r.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(t.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${t}()`,this._doEval(`${t}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(e){let t=this.getValue("pkg-path"),i=this.getValue("domain");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let n=t.startsWith(i+"/")?t.slice(i.length+1):t,s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:n,expression:e})});if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json(),r,o;l.error?(r=`Error: ${l.error}`,o=!0):(r=l.result||"(empty result)",o=!1),this._resultEl.textContent=r,this._resultEl.classList.toggle("u-color-danger",o),this._addToHistory(e,r,o)}catch(n){let s=`Error: ${n instanceof Error?n.message:String(n)}`;this._resultEl.textContent=s,this._resultEl.classList.add("u-color-danger"),this._addToHistory(e,s,!0)}}_addToHistory(e,t,i){if(this._history.push({expression:e,result:t,isError:i}),this._historyListEl){let n=document.createElement("div");n.className="b-eval-history-entry";let s=document.createElement("div");s.className="b-eval-history-expr";let l=document.createElement("code");l.className="u-font-mono",l.textContent=e,s.appendChild(l);let r=document.createElement("button");r.className="b-eval-history-rerun",r.textContent="\u21A9",r.title="Re-run",r.addEventListener("click",()=>{this._inputEl.value=e,this._doEval(e)}),s.appendChild(r);let o=document.createElement("pre");o.className=`b-eval-history-result${i?" u-color-danger":""}`,o.textContent=t.length>200?t.substring(0,200)+"...":t,n.appendChild(s),n.appendChild(o),this._historyListEl.prepend(n)}}};export{a as EvalController}; From b5643ccbb9e58cfee617aec4d66120f3c549c056 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 20:02:17 +0000 Subject: [PATCH 05/40] fix(gnoweb): bind playground buttons directly in connect() --- .../gnoweb/frontend/js/controller-playground.ts | 16 ++++++++++++++++ .../gnoweb/public/js/controller-playground.js | 6 +++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index b186620ba14..8761ea39004 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -27,6 +27,22 @@ export class PlaygroundController extends BaseController { this._renderTabs(); this._setupKeyboard(); + this._bindButtons(); + } + + // Bind toolbar buttons directly (BaseController.setupActions can be unreliable) + private _bindButtons(): void { + this.element.querySelectorAll("[data-action]").forEach((el) => { + const attr = el.getAttribute("data-action"); + if (!attr) return; + const match = attr.match(/^(\w+)->playground#(\w+)$/); + if (!match) return; + const [, event, method] = match; + const fn = (this as Record)[method]; + if (typeof fn === "function") { + el.addEventListener(event, fn.bind(this)); + } + }); } private _parseForkedFiles(code: string): void { diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 00a3c2005e0..1fe1afcf985 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,5 +1,5 @@ -import{BaseController as r}from"./controller.js";var a=class extends r{files=[];activeFile=0;_codeEl;_outputEl;_tabsEl;connect(){this._codeEl=this.getTarget("code"),this._outputEl=this.getTarget("output"),this._tabsEl=this.getTarget("tabs");let t=this._codeEl.value;t.includes("// --- ")&&t.includes(" ---")?this._parseForkedFiles(t):this.files=[{name:"main.gno",content:t}],this._renderTabs(),this._setupKeyboard()}_parseForkedFiles(t){let e=t.split(/^\/\/ --- (.+?) ---$/m);this.files=[];for(let i=1;i{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.runCode();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let e=this._codeEl.selectionStart,i=this._codeEl.selectionEnd;this._codeEl.value=this._codeEl.value.substring(0,e)+" "+this._codeEl.value.substring(i),this._codeEl.selectionStart=this._codeEl.selectionEnd=e+1}})}_renderTabs(){for(;this._tabsEl.firstChild;)this._tabsEl.removeChild(this._tabsEl.firstChild);this.files.forEach((e,i)=>{let n=document.createElement("button");n.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,n.textContent=e.name,n.addEventListener("click",()=>this._switchToFile(e.name)),this._tabsEl.appendChild(n)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this._tabsEl.appendChild(t)}_switchToFile(t){this.files[this.activeFile].content=this._codeEl.value;let e=this.files.findIndex(i=>i.name===t);e>=0&&(this.activeFile=e,this._codeEl.value=this.files[e].content,this._renderTabs())}switchTab(t){let i=t.currentTarget.dataset.playgroundFileParam||"";this._switchToFile(i)}addFile(){let t=prompt("File name (e.g. helper.gno):");if(t){if(!t.endsWith(".gno")){alert("File name must end with .gno");return}if(this.files.some(e=>e.name===t)){alert("File already exists");return}this.files[this.activeFile].content=this._codeEl.value,this.files.push({name:t,content:`package main -`}),this.activeFile=this.files.length-1,this._codeEl.value=this.files[this.activeFile].content,this._renderTabs()}}async runCode(){this.files[this.activeFile].content=this._codeEl.value,this._outputEl.textContent="Running...";let t=this.getValue("remote"),e=this.getValue("domain"),i=this._codeEl.value,n=i.match(/^package\s+(\w+)/m),o=n?n[1]:"main";if(i.includes("func Render("))try{let l=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${e}/r/playground_preview`,expression:'Render("")'})})).json();l.error?(this._outputEl.textContent=`Error: ${l.error}`,this._outputEl.classList.add("u-color-danger")):(this._outputEl.textContent=l.result,this._outputEl.classList.remove("u-color-danger"))}catch{this._outputEl.textContent=`Note: Server-side execution requires a running gno node. +import{BaseController as r}from"./controller.js";var l=class extends r{files=[];activeFile=0;_codeEl;_outputEl;_tabsEl;connect(){this._codeEl=this.getTarget("code"),this._outputEl=this.getTarget("output"),this._tabsEl=this.getTarget("tabs");let t=this._codeEl.value;t.includes("// --- ")&&t.includes(" ---")?this._parseForkedFiles(t):this.files=[{name:"main.gno",content:t}],this._renderTabs(),this._setupKeyboard(),this._bindButtons()}_bindButtons(){this.element.querySelectorAll("[data-action]").forEach(t=>{let e=t.getAttribute("data-action");if(!e)return;let i=e.match(/^(\w+)->playground#(\w+)$/);if(!i)return;let[,n,o]=i,s=this[o];typeof s=="function"&&t.addEventListener(n,s.bind(this))})}_parseForkedFiles(t){let e=t.split(/^\/\/ --- (.+?) ---$/m);this.files=[];for(let i=1;i{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.runCode();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let e=this._codeEl.selectionStart,i=this._codeEl.selectionEnd;this._codeEl.value=this._codeEl.value.substring(0,e)+" "+this._codeEl.value.substring(i),this._codeEl.selectionStart=this._codeEl.selectionEnd=e+1}})}_renderTabs(){for(;this._tabsEl.firstChild;)this._tabsEl.removeChild(this._tabsEl.firstChild);this.files.forEach((e,i)=>{let n=document.createElement("button");n.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,n.textContent=e.name,n.addEventListener("click",()=>this._switchToFile(e.name)),this._tabsEl.appendChild(n)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this._tabsEl.appendChild(t)}_switchToFile(t){this.files[this.activeFile].content=this._codeEl.value;let e=this.files.findIndex(i=>i.name===t);e>=0&&(this.activeFile=e,this._codeEl.value=this.files[e].content,this._renderTabs())}switchTab(t){let i=t.currentTarget.dataset.playgroundFileParam||"";this._switchToFile(i)}addFile(){let t=prompt("File name (e.g. helper.gno):");if(t){if(!t.endsWith(".gno")){alert("File name must end with .gno");return}if(this.files.some(e=>e.name===t)){alert("File already exists");return}this.files[this.activeFile].content=this._codeEl.value,this.files.push({name:t,content:`package main +`}),this.activeFile=this.files.length-1,this._codeEl.value=this.files[this.activeFile].content,this._renderTabs()}}async runCode(){this.files[this.activeFile].content=this._codeEl.value,this._outputEl.textContent="Running...";let t=this.getValue("remote"),e=this.getValue("domain"),i=this._codeEl.value,n=i.match(/^package\s+(\w+)/m),o=n?n[1]:"main";if(i.includes("func Render("))try{let a=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${e}/r/playground_preview`,expression:'Render("")'})})).json();a.error?(this._outputEl.textContent=`Error: ${a.error}`,this._outputEl.classList.add("u-color-danger")):(this._outputEl.textContent=a.result,this._outputEl.classList.remove("u-color-danger"))}catch{this._outputEl.textContent=`Note: Server-side execution requires a running gno node. Package: ${o} Files: ${this.files.map(s=>s.name).join(", ")} @@ -22,4 +22,4 @@ To format locally: ${n.content}`).join(` `),e=encodeURIComponent(t),i=`${window.location.origin}/_/play?code=${e}`;navigator.clipboard.writeText(i).then(()=>{this._outputEl.textContent="Share URL copied to clipboard!"}).catch(()=>{this._outputEl.textContent=`Share URL: -${i}`})}clearOutput(){this._outputEl.textContent="// Run code to see output here",this._outputEl.classList.remove("u-color-danger")}};export{a as PlaygroundController}; +${i}`})}clearOutput(){this._outputEl.textContent="// Run code to see output here",this._outputEl.classList.remove("u-color-danger")}};export{l as PlaygroundController}; From 8e789cf5315f7f42452380d9ce70d23beb873ba6 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 3 Apr 2026 20:23:12 +0000 Subject: [PATCH 06/40] fix(gnoweb): rewrite controllers as standalone functions, add self to CSP connect-src --- gno.land/cmd/gnoweb/main.go | 2 +- .../pkg/gnoweb/frontend/js/controller-eval.ts | 249 ++++++++---------- .../frontend/js/controller-playground.ts | 248 +++++++---------- .../pkg/gnoweb/public/js/controller-eval.js | 2 +- .../gnoweb/public/js/controller-playground.js | 28 +- 5 files changed, 225 insertions(+), 304 deletions(-) diff --git a/gno.land/cmd/gnoweb/main.go b/gno.land/cmd/gnoweb/main.go index 93167de9794..c5e69a9dbdc 100644 --- a/gno.land/cmd/gnoweb/main.go +++ b/gno.land/cmd/gnoweb/main.go @@ -343,7 +343,7 @@ func SecureHeadersMiddleware(next http.Handler, strict bool, remote string) http // scripts, styles, images, and other resources. This helps prevent // cross-site scripting (XSS) and other code injection attacks. csp := fmt.Sprintf( - "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; connect-src %s/abci_query; form-action 'self'", + "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; connect-src 'self' %s/abci_query; form-action 'self'", imgSrc, remote, ) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts index e54b1d28e54..1d7d2fa0f6e 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts @@ -1,100 +1,28 @@ -import { BaseController } from "./controller.js"; - +// Expression evaluator controller — standalone, no BaseController dependency interface HistoryEntry { expression: string; result: string; isError: boolean; } -export class EvalController extends BaseController { - private _inputEl!: HTMLInputElement; - private _resultEl!: HTMLElement; - private _historyListEl!: HTMLElement; - private _history: HistoryEntry[] = []; - - protected connect(): void { - this._inputEl = this.getTarget("input") as HTMLInputElement; - this._resultEl = this.getTarget("result") as HTMLElement; - this._historyListEl = this.getTarget("history-list") as HTMLElement; - - this._inputEl?.focus(); - - this._inputEl?.addEventListener("keydown", (e: KeyboardEvent) => { - // Up arrow = previous history - if (e.key === "ArrowUp" && this._history.length > 0) { - e.preventDefault(); - this._inputEl.value = - this._history[this._history.length - 1].expression; - } - // Enter = submit - if (e.key === "Enter") { - e.preventDefault(); - const expr = this._inputEl.value.trim(); - if (expr) this._doEval(expr); - } - }); - - // Also intercept form submit directly (belt and suspenders) - const form = this.element.querySelector("form"); - if (form) { - form.addEventListener("submit", (e: Event) => { - e.preventDefault(); - const expr = this._inputEl.value.trim(); - if (expr) this._doEval(expr); - }); - } - } - - public evalExpression(event: Event): void { - event.preventDefault(); - const expr = this._inputEl.value.trim(); - if (!expr) return; - this._doEval(expr); - } - - public quickCall(event: Event & { params?: Record }): void { - const funcName = event.params?.funcName as string; - const funcSig = event.params?.funcSig as string; +export default function EvalController(element: HTMLElement): void { + const inputEl = element.querySelector('[data-eval-target="input"]') as HTMLInputElement; + const resultEl = element.querySelector('[data-eval-target="result"]') as HTMLElement; + const historyListEl = element.querySelector('[data-eval-target="history-list"]') as HTMLElement; - if (funcName) { - const paramMatch = funcSig?.match(/\(([^)]*)\)/); - const params = paramMatch ? paramMatch[1] : ""; - - if (params) { - this._inputEl.value = `${funcName}(${params - .split(",") - .map((p: string) => { - const parts = p.trim().split(/\s+/); - const type = parts[parts.length - 1]; - return type === "string" ? '""' : "0"; - }) - .join(", ")})`; - this._inputEl.focus(); - this._inputEl.setSelectionRange( - funcName.length + 1, - this._inputEl.value.length - 1, - ); - } else { - this._inputEl.value = `${funcName}()`; - this._doEval(`${funcName}()`); - } - } - } + if (!inputEl || !resultEl) return; - public clearResult(): void { - this._resultEl.textContent = "// Enter an expression above"; - this._resultEl.classList.remove("u-color-danger"); - } + const pkgPath = element.getAttribute("data-eval-pkg-path-value") || ""; + const domain = element.getAttribute("data-eval-domain-value") || "gno.land"; + const history: HistoryEntry[] = []; - private async _doEval(expression: string): Promise { - const pkgPath = this.getValue("pkg-path"); - const domain = this.getValue("domain"); + inputEl.focus(); - this._resultEl.textContent = "Evaluating..."; - this._resultEl.classList.remove("u-color-danger"); + async function doEval(expression: string): Promise { + resultEl.textContent = "Evaluating..."; + resultEl.classList.remove("u-color-danger"); try { - // Strip domain prefix from pkgPath for the API (it expects relative path) const relPath = pkgPath.startsWith(domain + "/") ? pkgPath.slice(domain.length + 1) : pkgPath; @@ -102,21 +30,14 @@ export class EvalController extends BaseController { const response = await fetch("/_/api/eval", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - pkg_path: relPath, - expression: expression, - }), + body: JSON.stringify({ pkg_path: relPath, expression }), }); - if (!response.ok) { - throw new Error(`HTTP ${response.status}`); - } - + if (!response.ok) throw new Error(`HTTP ${response.status}`); const json = await response.json(); let result: string; let isError: boolean; - if (json.error) { result = `Error: ${json.error}`; isError = true; @@ -125,55 +46,111 @@ export class EvalController extends BaseController { isError = false; } - this._resultEl.textContent = result; - this._resultEl.classList.toggle("u-color-danger", isError); - - this._addToHistory(expression, result, isError); + resultEl.textContent = result; + resultEl.classList.toggle("u-color-danger", isError); + addToHistory(expression, result, isError); } catch (err) { const errMsg = `Error: ${err instanceof Error ? err.message : String(err)}`; - this._resultEl.textContent = errMsg; - this._resultEl.classList.add("u-color-danger"); - this._addToHistory(expression, errMsg, true); + resultEl.textContent = errMsg; + resultEl.classList.add("u-color-danger"); + addToHistory(expression, errMsg, true); } } - private _addToHistory( - expression: string, - result: string, - isError: boolean, - ): void { - this._history.push({ expression, result, isError }); - - if (this._historyListEl) { - const entry = document.createElement("div"); - entry.className = "b-eval-history-entry"; - - const exprDiv = document.createElement("div"); - exprDiv.className = "b-eval-history-expr"; - - const codeEl = document.createElement("code"); - codeEl.className = "u-font-mono"; - codeEl.textContent = expression; - exprDiv.appendChild(codeEl); - - const rerunBtn = document.createElement("button"); - rerunBtn.className = "b-eval-history-rerun"; - rerunBtn.textContent = "\u21A9"; // ↩ - rerunBtn.title = "Re-run"; - rerunBtn.addEventListener("click", () => { - this._inputEl.value = expression; - this._doEval(expression); - }); - exprDiv.appendChild(rerunBtn); + function addToHistory(expression: string, result: string, isError: boolean): void { + history.push({ expression, result, isError }); + if (!historyListEl) return; + + const entry = document.createElement("div"); + entry.className = "b-eval-history-entry"; + + const exprDiv = document.createElement("div"); + exprDiv.className = "b-eval-history-expr"; + + const codeEl = document.createElement("code"); + codeEl.className = "u-font-mono"; + codeEl.textContent = expression; + exprDiv.appendChild(codeEl); + + const rerunBtn = document.createElement("button"); + rerunBtn.className = "b-eval-history-rerun"; + rerunBtn.textContent = "\u21A9"; + rerunBtn.title = "Re-run"; + rerunBtn.addEventListener("click", () => { + inputEl.value = expression; + doEval(expression); + }); + exprDiv.appendChild(rerunBtn); + + const resultPre = document.createElement("pre"); + resultPre.className = `b-eval-history-result${isError ? " u-color-danger" : ""}`; + resultPre.textContent = result.length > 200 ? result.substring(0, 200) + "..." : result; - const resultPre = document.createElement("pre"); - resultPre.className = `b-eval-history-result${isError ? " u-color-danger" : ""}`; - resultPre.textContent = - result.length > 200 ? result.substring(0, 200) + "..." : result; + entry.appendChild(exprDiv); + entry.appendChild(resultPre); + historyListEl.prepend(entry); + } - entry.appendChild(exprDiv); - entry.appendChild(resultPre); - this._historyListEl.prepend(entry); + // Enter key submits + inputEl.addEventListener("keydown", (e: KeyboardEvent) => { + if (e.key === "ArrowUp" && history.length > 0) { + e.preventDefault(); + inputEl.value = history[history.length - 1].expression; + } + if (e.key === "Enter") { + e.preventDefault(); + const expr = inputEl.value.trim(); + if (expr) doEval(expr); } + }); + + // Form submit + const form = element.querySelector("form"); + if (form) { + form.addEventListener("submit", (e: Event) => { + e.preventDefault(); + const expr = inputEl.value.trim(); + if (expr) doEval(expr); + }); } + + // Clear button + element.querySelectorAll("[data-action]").forEach((el) => { + const attr = el.getAttribute("data-action"); + if (attr === "click->eval#clearResult") { + el.addEventListener("click", () => { + resultEl.textContent = "// Enter an expression above"; + resultEl.classList.remove("u-color-danger"); + }); + } + }); + + // Quick call buttons + element.querySelectorAll("[data-action]").forEach((el) => { + const attr = el.getAttribute("data-action"); + if (attr !== "click->eval#quickCall") return; + el.addEventListener("click", () => { + const funcName = (el as HTMLElement).dataset.evalFuncNameParam || ""; + const funcSig = (el as HTMLElement).dataset.evalFuncSigParam || ""; + if (!funcName) return; + + const paramMatch = funcSig.match(/\(([^)]*)\)/); + const params = paramMatch ? paramMatch[1] : ""; + if (params) { + inputEl.value = `${funcName}(${params + .split(",") + .map((p: string) => { + const parts = p.trim().split(/\s+/); + const type = parts[parts.length - 1]; + return type === "string" ? '""' : "0"; + }) + .join(", ")})`; + inputEl.focus(); + inputEl.setSelectionRange(funcName.length + 1, inputEl.value.length - 1); + } else { + inputEl.value = `${funcName}()`; + doEval(`${funcName}()`); + } + }); + }); } diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 8761ea39004..e201dadcf40 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -1,150 +1,80 @@ -import { BaseController } from "./controller.js"; - +// Playground controller — standalone, does not rely on BaseController action wiring interface PlaygroundFile { name: string; content: string; } -export class PlaygroundController extends BaseController { - private files: PlaygroundFile[] = []; - private activeFile = 0; - private _codeEl!: HTMLTextAreaElement; - private _outputEl!: HTMLElement; - private _tabsEl!: HTMLElement; - - protected connect(): void { - this._codeEl = this.getTarget("code") as HTMLTextAreaElement; - this._outputEl = this.getTarget("output") as HTMLElement; - this._tabsEl = this.getTarget("tabs") as HTMLElement; - - // Initialize files from the editor content - const initialCode = this._codeEl.value; - if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { - this._parseForkedFiles(initialCode); - } else { - this.files = [{ name: "main.gno", content: initialCode }]; - } +export default function PlaygroundController(element: HTMLElement): void { + let files: PlaygroundFile[] = []; + let activeFile = 0; - this._renderTabs(); - this._setupKeyboard(); - this._bindButtons(); - } + const codeEl = element.querySelector('[data-playground-target="code"]') as HTMLTextAreaElement; + const outputEl = element.querySelector('[data-playground-target="output"]') as HTMLElement; + const tabsEl = element.querySelector('[data-playground-target="tabs"]') as HTMLElement; - // Bind toolbar buttons directly (BaseController.setupActions can be unreliable) - private _bindButtons(): void { - this.element.querySelectorAll("[data-action]").forEach((el) => { - const attr = el.getAttribute("data-action"); - if (!attr) return; - const match = attr.match(/^(\w+)->playground#(\w+)$/); - if (!match) return; - const [, event, method] = match; - const fn = (this as Record)[method]; - if (typeof fn === "function") { - el.addEventListener(event, fn.bind(this)); - } - }); - } + if (!codeEl || !outputEl || !tabsEl) return; - private _parseForkedFiles(code: string): void { - const parts = code.split(/^\/\/ --- (.+?) ---$/m); - this.files = []; + const domain = element.getAttribute("data-playground-domain-value") || "gno.land"; + + // Parse initial code + const initialCode = codeEl.value; + if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { + const parts = initialCode.split(/^\/\/ --- (.+?) ---$/m); for (let i = 1; i < parts.length; i += 2) { const name = parts[i].trim(); const content = (parts[i + 1] || "").trim(); - if (name) { - this.files.push({ name, content }); - } + if (name) files.push({ name, content }); } - if (this.files.length === 0) { - this.files = [{ name: "main.gno", content: code }]; - } - this._codeEl.value = this.files[0].content; - } - - private _setupKeyboard(): void { - this._codeEl.addEventListener("keydown", (e: KeyboardEvent) => { - if (e.ctrlKey && e.key === "Enter") { - e.preventDefault(); - this.runCode(); - return; - } - if (e.key === "Tab" && !e.shiftKey) { - e.preventDefault(); - const start = this._codeEl.selectionStart; - const end = this._codeEl.selectionEnd; - this._codeEl.value = - this._codeEl.value.substring(0, start) + - "\t" + - this._codeEl.value.substring(end); - this._codeEl.selectionStart = this._codeEl.selectionEnd = start + 1; - } - }); + if (files.length === 0) files = [{ name: "main.gno", content: initialCode }]; + codeEl.value = files[0].content; + } else { + files = [{ name: "main.gno", content: initialCode }]; } - private _renderTabs(): void { - // Clear existing tabs using safe DOM methods - while (this._tabsEl.firstChild) { - this._tabsEl.removeChild(this._tabsEl.firstChild); - } - - this.files.forEach((f, i) => { + function renderTabs(): void { + while (tabsEl.firstChild) tabsEl.removeChild(tabsEl.firstChild); + files.forEach((f, i) => { const btn = document.createElement("button"); - btn.className = `b-playground-tab${i === this.activeFile ? " b-playground-tab--active" : ""}`; + btn.className = `b-playground-tab${i === activeFile ? " b-playground-tab--active" : ""}`; btn.textContent = f.name; - btn.addEventListener("click", () => this._switchToFile(f.name)); - this._tabsEl.appendChild(btn); + btn.addEventListener("click", () => switchToFile(f.name)); + tabsEl.appendChild(btn); }); - const addBtn = document.createElement("button"); addBtn.className = "b-playground-tab-add"; addBtn.textContent = "+"; addBtn.title = "Add file"; - addBtn.addEventListener("click", () => this.addFile()); - this._tabsEl.appendChild(addBtn); + addBtn.addEventListener("click", addFile); + tabsEl.appendChild(addBtn); } - private _switchToFile(fileName: string): void { - this.files[this.activeFile].content = this._codeEl.value; - const idx = this.files.findIndex((f) => f.name === fileName); + function switchToFile(fileName: string): void { + files[activeFile].content = codeEl.value; + const idx = files.findIndex((f) => f.name === fileName); if (idx >= 0) { - this.activeFile = idx; - this._codeEl.value = this.files[idx].content; - this._renderTabs(); + activeFile = idx; + codeEl.value = files[idx].content; + renderTabs(); } } - public switchTab(event: Event): void { - const target = event.currentTarget as HTMLElement; - const fileName = target.dataset.playgroundFileParam || ""; - this._switchToFile(fileName); - } - - public addFile(): void { + function addFile(): void { const name = prompt("File name (e.g. helper.gno):"); - if (!name) return; - if (!name.endsWith(".gno")) { - alert("File name must end with .gno"); - return; - } - if (this.files.some((f) => f.name === name)) { - alert("File already exists"); - return; - } - - this.files[this.activeFile].content = this._codeEl.value; - this.files.push({ name, content: `package main\n` }); - this.activeFile = this.files.length - 1; - this._codeEl.value = this.files[this.activeFile].content; - this._renderTabs(); + if (!name || !name.endsWith(".gno")) return; + if (files.some((f) => f.name === name)) return; + files[activeFile].content = codeEl.value; + files.push({ name, content: "package main\n" }); + activeFile = files.length - 1; + codeEl.value = files[activeFile].content; + renderTabs(); } - public async runCode(): Promise { - this.files[this.activeFile].content = this._codeEl.value; - this._outputEl.textContent = "Running..."; + async function runCode(): Promise { + files[activeFile].content = codeEl.value; + outputEl.textContent = "Running..."; + outputEl.classList.remove("u-color-danger"); - const remote = this.getValue("remote"); - const domain = this.getValue("domain"); - const code = this._codeEl.value; + const code = codeEl.value; const pkgMatch = code.match(/^package\s+(\w+)/m); const pkgName = pkgMatch ? pkgMatch[1] : "main"; @@ -155,63 +85,77 @@ export class PlaygroundController extends BaseController { headers: { "Content-Type": "application/json" }, body: JSON.stringify({ pkg_path: `${domain}/r/playground_preview`, - expression: `Render("")`, + expression: 'Render("")', }), }); const result = await resp.json(); if (result.error) { - this._outputEl.textContent = `Error: ${result.error}`; - this._outputEl.classList.add("u-color-danger"); + outputEl.textContent = `Error: ${result.error}`; + outputEl.classList.add("u-color-danger"); } else { - this._outputEl.textContent = result.result; - this._outputEl.classList.remove("u-color-danger"); + outputEl.textContent = result.result; } } catch { - this._outputEl.textContent = `Note: Server-side execution requires a running gno node.\n\nPackage: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo deploy and test, use:\n gnokey maketx addpkg -pkgpath "${domain}/r/yourname/pkg" ...`; - this._outputEl.classList.remove("u-color-danger"); + outputEl.textContent = `Note: Server-side execution not available for scratch pad code.\n\nPackage: ${pkgName}\nFiles: ${files.map((f) => f.name).join(", ")}\n\nTo deploy and test:\n gnokey maketx addpkg -pkgpath "${domain}/r/yourname/pkg" ...`; } } else { - this._outputEl.textContent = `Package: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo run locally:\n gno run ${this.files.map((f) => f.name).join(" ")}\n\nTo test:\n gno test .`; - this._outputEl.classList.remove("u-color-danger"); + outputEl.textContent = `Package: ${pkgName}\nFiles: ${files.map((f) => f.name).join(", ")}\n\nTo run locally:\n gno run ${files.map((f) => f.name).join(" ")}\n\nTo test:\n gno test .`; } } - public runTests(): void { - this._outputEl.textContent = - "Testing requires a running gno node.\n\nTo test locally:\n gno test ."; + function runTests(): void { + outputEl.textContent = "Testing requires a running gno node.\n\nTo test locally:\n gno test ."; } - public formatCode(): void { - this._outputEl.textContent = + function formatCode(): void { + outputEl.textContent = "Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:\n gno fmt -w " + - this.files[this.activeFile].name; + files[activeFile].name; } - public shareCode(): void { - this.files[this.activeFile].content = this._codeEl.value; - + function shareCode(): void { + files[activeFile].content = codeEl.value; const code = - this.files.length === 1 - ? this.files[0].content - : this.files - .map((f) => `// --- ${f.name} ---\n${f.content}`) - .join("\n\n"); - - const encoded = encodeURIComponent(code); - const url = `${window.location.origin}/_/play?code=${encoded}`; - + files.length === 1 + ? files[0].content + : files.map((f) => `// --- ${f.name} ---\n${f.content}`).join("\n\n"); + const url = `${window.location.origin}/_/play?code=${encodeURIComponent(code)}`; navigator.clipboard .writeText(url) - .then(() => { - this._outputEl.textContent = "Share URL copied to clipboard!"; - }) - .catch(() => { - this._outputEl.textContent = `Share URL:\n${url}`; - }); + .then(() => { outputEl.textContent = "Share URL copied to clipboard!"; }) + .catch(() => { outputEl.textContent = `Share URL:\n${url}`; }); } - public clearOutput(): void { - this._outputEl.textContent = "// Run code to see output here"; - this._outputEl.classList.remove("u-color-danger"); + function clearOutput(): void { + outputEl.textContent = "// Run code to see output here"; + outputEl.classList.remove("u-color-danger"); } + + // Keyboard shortcuts + codeEl.addEventListener("keydown", (e: KeyboardEvent) => { + if (e.ctrlKey && e.key === "Enter") { e.preventDefault(); runCode(); return; } + if (e.key === "Tab" && !e.shiftKey) { + e.preventDefault(); + const start = codeEl.selectionStart; + const end = codeEl.selectionEnd; + codeEl.value = codeEl.value.substring(0, start) + "\t" + codeEl.value.substring(end); + codeEl.selectionStart = codeEl.selectionEnd = start + 1; + } + }); + + // Wire buttons by data-action attribute + const actions: Record void> = { + runCode, runTests, formatCode, shareCode, clearOutput, + }; + element.querySelectorAll("[data-action]").forEach((el) => { + const attr = el.getAttribute("data-action"); + if (!attr) return; + const match = attr.match(/^(\w+)->playground#(\w+)$/); + if (!match) return; + const [, evt, method] = match; + const fn = actions[method]; + if (fn) el.addEventListener(evt, fn); + }); + + renderTabs(); } diff --git a/gno.land/pkg/gnoweb/public/js/controller-eval.js b/gno.land/pkg/gnoweb/public/js/controller-eval.js index 991f33d2e20..9c3474d5e88 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-eval.js +++ b/gno.land/pkg/gnoweb/public/js/controller-eval.js @@ -1 +1 @@ -import{BaseController as u}from"./controller.js";var a=class extends u{_inputEl;_resultEl;_historyListEl;_history=[];connect(){this._inputEl=this.getTarget("input"),this._resultEl=this.getTarget("result"),this._historyListEl=this.getTarget("history-list"),this._inputEl?.focus(),this._inputEl?.addEventListener("keydown",t=>{if(t.key==="ArrowUp"&&this._history.length>0&&(t.preventDefault(),this._inputEl.value=this._history[this._history.length-1].expression),t.key==="Enter"){t.preventDefault();let i=this._inputEl.value.trim();i&&this._doEval(i)}});let e=this.element.querySelector("form");e&&e.addEventListener("submit",t=>{t.preventDefault();let i=this._inputEl.value.trim();i&&this._doEval(i)})}evalExpression(e){e.preventDefault();let t=this._inputEl.value.trim();t&&this._doEval(t)}quickCall(e){let t=e.params?.funcName,i=e.params?.funcSig;if(t){let n=i?.match(/\(([^)]*)\)/),s=n?n[1]:"";s?(this._inputEl.value=`${t}(${s.split(",").map(l=>{let r=l.trim().split(/\s+/);return r[r.length-1]==="string"?'""':"0"}).join(", ")})`,this._inputEl.focus(),this._inputEl.setSelectionRange(t.length+1,this._inputEl.value.length-1)):(this._inputEl.value=`${t}()`,this._doEval(`${t}()`))}}clearResult(){this._resultEl.textContent="// Enter an expression above",this._resultEl.classList.remove("u-color-danger")}async _doEval(e){let t=this.getValue("pkg-path"),i=this.getValue("domain");this._resultEl.textContent="Evaluating...",this._resultEl.classList.remove("u-color-danger");try{let n=t.startsWith(i+"/")?t.slice(i.length+1):t,s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:n,expression:e})});if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json(),r,o;l.error?(r=`Error: ${l.error}`,o=!0):(r=l.result||"(empty result)",o=!1),this._resultEl.textContent=r,this._resultEl.classList.toggle("u-color-danger",o),this._addToHistory(e,r,o)}catch(n){let s=`Error: ${n instanceof Error?n.message:String(n)}`;this._resultEl.textContent=s,this._resultEl.classList.add("u-color-danger"),this._addToHistory(e,s,!0)}}_addToHistory(e,t,i){if(this._history.push({expression:e,result:t,isError:i}),this._historyListEl){let n=document.createElement("div");n.className="b-eval-history-entry";let s=document.createElement("div");s.className="b-eval-history-expr";let l=document.createElement("code");l.className="u-font-mono",l.textContent=e,s.appendChild(l);let r=document.createElement("button");r.className="b-eval-history-rerun",r.textContent="\u21A9",r.title="Re-run",r.addEventListener("click",()=>{this._inputEl.value=e,this._doEval(e)}),s.appendChild(r);let o=document.createElement("pre");o.className=`b-eval-history-result${i?" u-color-danger":""}`,o.textContent=t.length>200?t.substring(0,200)+"...":t,n.appendChild(s),n.appendChild(o),this._historyListEl.prepend(n)}}};export{a as EvalController}; +function h(i){let a=i.querySelector('[data-eval-target="input"]'),l=i.querySelector('[data-eval-target="result"]'),p=i.querySelector('[data-eval-target="history-list"]');if(!a||!l)return;let g=i.getAttribute("data-eval-pkg-path-value")||"",m=i.getAttribute("data-eval-domain-value")||"gno.land",d=[];a.focus();async function v(t){l.textContent="Evaluating...",l.classList.remove("u-color-danger");try{let e=g.startsWith(m+"/")?g.slice(m.length+1):g,r=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:e,expression:t})});if(!r.ok)throw new Error(`HTTP ${r.status}`);let s=await r.json(),n,o;s.error?(n=`Error: ${s.error}`,o=!0):(n=s.result||"(empty result)",o=!1),l.textContent=n,l.classList.toggle("u-color-danger",o),E(t,n,o)}catch(e){let r=`Error: ${e instanceof Error?e.message:String(e)}`;l.textContent=r,l.classList.add("u-color-danger"),E(t,r,!0)}}function E(t,e,r){if(d.push({expression:t,result:e,isError:r}),!p)return;let s=document.createElement("div");s.className="b-eval-history-entry";let n=document.createElement("div");n.className="b-eval-history-expr";let o=document.createElement("code");o.className="u-font-mono",o.textContent=t,n.appendChild(o);let c=document.createElement("button");c.className="b-eval-history-rerun",c.textContent="\u21A9",c.title="Re-run",c.addEventListener("click",()=>{a.value=t,v(t)}),n.appendChild(c);let u=document.createElement("pre");u.className=`b-eval-history-result${r?" u-color-danger":""}`,u.textContent=e.length>200?e.substring(0,200)+"...":e,s.appendChild(n),s.appendChild(u),p.prepend(s)}a.addEventListener("keydown",t=>{if(t.key==="ArrowUp"&&d.length>0&&(t.preventDefault(),a.value=d[d.length-1].expression),t.key==="Enter"){t.preventDefault();let e=a.value.trim();e&&v(e)}});let f=i.querySelector("form");f&&f.addEventListener("submit",t=>{t.preventDefault();let e=a.value.trim();e&&v(e)}),i.querySelectorAll("[data-action]").forEach(t=>{t.getAttribute("data-action")==="click->eval#clearResult"&&t.addEventListener("click",()=>{l.textContent="// Enter an expression above",l.classList.remove("u-color-danger")})}),i.querySelectorAll("[data-action]").forEach(t=>{t.getAttribute("data-action")==="click->eval#quickCall"&&t.addEventListener("click",()=>{let r=t.dataset.evalFuncNameParam||"",s=t.dataset.evalFuncSigParam||"";if(!r)return;let n=s.match(/\(([^)]*)\)/),o=n?n[1]:"";o?(a.value=`${r}(${o.split(",").map(c=>{let u=c.trim().split(/\s+/);return u[u.length-1]==="string"?'""':"0"}).join(", ")})`,a.focus(),a.setSelectionRange(r.length+1,a.value.length-1)):(a.value=`${r}()`,v(`${r}()`))})})}export{h as default}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 1fe1afcf985..a79a7776c95 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,25 +1,25 @@ -import{BaseController as r}from"./controller.js";var l=class extends r{files=[];activeFile=0;_codeEl;_outputEl;_tabsEl;connect(){this._codeEl=this.getTarget("code"),this._outputEl=this.getTarget("output"),this._tabsEl=this.getTarget("tabs");let t=this._codeEl.value;t.includes("// --- ")&&t.includes(" ---")?this._parseForkedFiles(t):this.files=[{name:"main.gno",content:t}],this._renderTabs(),this._setupKeyboard(),this._bindButtons()}_bindButtons(){this.element.querySelectorAll("[data-action]").forEach(t=>{let e=t.getAttribute("data-action");if(!e)return;let i=e.match(/^(\w+)->playground#(\w+)$/);if(!i)return;let[,n,o]=i,s=this[o];typeof s=="function"&&t.addEventListener(n,s.bind(this))})}_parseForkedFiles(t){let e=t.split(/^\/\/ --- (.+?) ---$/m);this.files=[];for(let i=1;i{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.runCode();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let e=this._codeEl.selectionStart,i=this._codeEl.selectionEnd;this._codeEl.value=this._codeEl.value.substring(0,e)+" "+this._codeEl.value.substring(i),this._codeEl.selectionStart=this._codeEl.selectionEnd=e+1}})}_renderTabs(){for(;this._tabsEl.firstChild;)this._tabsEl.removeChild(this._tabsEl.firstChild);this.files.forEach((e,i)=>{let n=document.createElement("button");n.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,n.textContent=e.name,n.addEventListener("click",()=>this._switchToFile(e.name)),this._tabsEl.appendChild(n)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this._tabsEl.appendChild(t)}_switchToFile(t){this.files[this.activeFile].content=this._codeEl.value;let e=this.files.findIndex(i=>i.name===t);e>=0&&(this.activeFile=e,this._codeEl.value=this.files[e].content,this._renderTabs())}switchTab(t){let i=t.currentTarget.dataset.playgroundFileParam||"";this._switchToFile(i)}addFile(){let t=prompt("File name (e.g. helper.gno):");if(t){if(!t.endsWith(".gno")){alert("File name must end with .gno");return}if(this.files.some(e=>e.name===t)){alert("File already exists");return}this.files[this.activeFile].content=this._codeEl.value,this.files.push({name:t,content:`package main -`}),this.activeFile=this.files.length-1,this._codeEl.value=this.files[this.activeFile].content,this._renderTabs()}}async runCode(){this.files[this.activeFile].content=this._codeEl.value,this._outputEl.textContent="Running...";let t=this.getValue("remote"),e=this.getValue("domain"),i=this._codeEl.value,n=i.match(/^package\s+(\w+)/m),o=n?n[1]:"main";if(i.includes("func Render("))try{let a=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${e}/r/playground_preview`,expression:'Render("")'})})).json();a.error?(this._outputEl.textContent=`Error: ${a.error}`,this._outputEl.classList.add("u-color-danger")):(this._outputEl.textContent=a.result,this._outputEl.classList.remove("u-color-danger"))}catch{this._outputEl.textContent=`Note: Server-side execution requires a running gno node. +function T(l){let e=[],c=0,o=l.querySelector('[data-playground-target="code"]'),i=l.querySelector('[data-playground-target="output"]'),s=l.querySelector('[data-playground-target="tabs"]');if(!o||!i||!s)return;let m=l.getAttribute("data-playground-domain-value")||"gno.land",d=o.value;if(d.includes("// --- ")&&d.includes(" ---")){let t=d.split(/^\/\/ --- (.+?) ---$/m);for(let n=1;n{let r=document.createElement("button");r.className=`b-playground-tab${a===c?" b-playground-tab--active":""}`,r.textContent=n.name,r.addEventListener("click",()=>v(n.name)),s.appendChild(r)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",h),s.appendChild(t)}function v(t){e[c].content=o.value;let n=e.findIndex(a=>a.name===t);n>=0&&(c=n,o.value=e[n].content,g())}function h(){let t=prompt("File name (e.g. helper.gno):");!t||!t.endsWith(".gno")||e.some(n=>n.name===t)||(e[c].content=o.value,e.push({name:t,content:`package main +`}),c=e.length-1,o.value=e[c].content,g())}async function p(){e[c].content=o.value,i.textContent="Running...",i.classList.remove("u-color-danger");let t=o.value,n=t.match(/^package\s+(\w+)/m),a=n?n[1]:"main";if(t.includes("func Render("))try{let u=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${m}/r/playground_preview`,expression:'Render("")'})})).json();u.error?(i.textContent=`Error: ${u.error}`,i.classList.add("u-color-danger")):i.textContent=u.result}catch{i.textContent=`Note: Server-side execution not available for scratch pad code. -Package: ${o} -Files: ${this.files.map(s=>s.name).join(", ")} +Package: ${a} +Files: ${e.map(r=>r.name).join(", ")} -To deploy and test, use: - gnokey maketx addpkg -pkgpath "${e}/r/yourname/pkg" ...`,this._outputEl.classList.remove("u-color-danger")}else this._outputEl.textContent=`Package: ${o} -Files: ${this.files.map(s=>s.name).join(", ")} +To deploy and test: + gnokey maketx addpkg -pkgpath "${m}/r/yourname/pkg" ...`}else i.textContent=`Package: ${a} +Files: ${e.map(r=>r.name).join(", ")} To run locally: - gno run ${this.files.map(s=>s.name).join(" ")} + gno run ${e.map(r=>r.name).join(" ")} To test: - gno test .`,this._outputEl.classList.remove("u-color-danger")}runTests(){this._outputEl.textContent=`Testing requires a running gno node. + gno test .`}function y(){i.textContent=`Testing requires a running gno node. To test locally: - gno test .`}formatCode(){this._outputEl.textContent=`Formatting requires server-side gno fmt (coming soon). + gno test .`}function C(){i.textContent=`Formatting requires server-side gno fmt (coming soon). To format locally: - gno fmt -w `+this.files[this.activeFile].name}shareCode(){this.files[this.activeFile].content=this._codeEl.value;let t=this.files.length===1?this.files[0].content:this.files.map(n=>`// --- ${n.name} --- -${n.content}`).join(` + gno fmt -w `+e[c].name}function b(){e[c].content=o.value;let t=e.length===1?e[0].content:e.map(a=>`// --- ${a.name} --- +${a.content}`).join(` -`),e=encodeURIComponent(t),i=`${window.location.origin}/_/play?code=${e}`;navigator.clipboard.writeText(i).then(()=>{this._outputEl.textContent="Share URL copied to clipboard!"}).catch(()=>{this._outputEl.textContent=`Share URL: -${i}`})}clearOutput(){this._outputEl.textContent="// Run code to see output here",this._outputEl.classList.remove("u-color-danger")}};export{l as PlaygroundController}; +`),n=`${window.location.origin}/_/play?code=${encodeURIComponent(t)}`;navigator.clipboard.writeText(n).then(()=>{i.textContent="Share URL copied to clipboard!"}).catch(()=>{i.textContent=`Share URL: +${n}`})}function x(){i.textContent="// Run code to see output here",i.classList.remove("u-color-danger")}o.addEventListener("keydown",t=>{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),p();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let n=o.selectionStart,a=o.selectionEnd;o.value=o.value.substring(0,n)+" "+o.value.substring(a),o.selectionStart=o.selectionEnd=n+1}});let E={runCode:p,runTests:y,formatCode:C,shareCode:b,clearOutput:x};l.querySelectorAll("[data-action]").forEach(t=>{let n=t.getAttribute("data-action");if(!n)return;let a=n.match(/^(\w+)->playground#(\w+)$/);if(!a)return;let[,r,u]=a,f=E[u];f&&t.addEventListener(r,f)}),g()}export{T as default}; From 5f1febde45664f180019558910cc5f65803e9923 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Thu, 9 Apr 2026 16:21:15 +0200 Subject: [PATCH 07/40] fix(gnoweb): fix lint errors in playground and eval controllers - pre-allocate `funcs` slice in BuildEvalFuncs (prealloc lint) - fix biome formatting in controller-eval.ts and controller-playground.ts --- gno.land/pkg/gnoweb/components/view_eval.go | 2 +- .../pkg/gnoweb/frontend/js/controller-eval.ts | 26 ++++++++--- .../frontend/js/controller-playground.ts | 44 ++++++++++++++----- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/view_eval.go b/gno.land/pkg/gnoweb/components/view_eval.go index 34acf93c1a2..f1f15b1f505 100644 --- a/gno.land/pkg/gnoweb/components/view_eval.go +++ b/gno.land/pkg/gnoweb/components/view_eval.go @@ -63,7 +63,7 @@ func EvalView(data EvalData) *View { // BuildEvalFuncs extracts public non-method functions suitable for eval. func BuildEvalFuncs(jdoc *doc.JSONDocumentation) []EvalFuncInfo { - var funcs []EvalFuncInfo + funcs := make([]EvalFuncInfo, 0, len(jdoc.Funcs)) for _, fn := range jdoc.Funcs { if fn.Type != "" || !token.IsExported(fn.Name) { continue diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts index 1d7d2fa0f6e..210d92c5698 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts @@ -6,9 +6,15 @@ interface HistoryEntry { } export default function EvalController(element: HTMLElement): void { - const inputEl = element.querySelector('[data-eval-target="input"]') as HTMLInputElement; - const resultEl = element.querySelector('[data-eval-target="result"]') as HTMLElement; - const historyListEl = element.querySelector('[data-eval-target="history-list"]') as HTMLElement; + const inputEl = element.querySelector( + '[data-eval-target="input"]', + ) as HTMLInputElement; + const resultEl = element.querySelector( + '[data-eval-target="result"]', + ) as HTMLElement; + const historyListEl = element.querySelector( + '[data-eval-target="history-list"]', + ) as HTMLElement; if (!inputEl || !resultEl) return; @@ -57,7 +63,11 @@ export default function EvalController(element: HTMLElement): void { } } - function addToHistory(expression: string, result: string, isError: boolean): void { + function addToHistory( + expression: string, + result: string, + isError: boolean, + ): void { history.push({ expression, result, isError }); if (!historyListEl) return; @@ -84,7 +94,8 @@ export default function EvalController(element: HTMLElement): void { const resultPre = document.createElement("pre"); resultPre.className = `b-eval-history-result${isError ? " u-color-danger" : ""}`; - resultPre.textContent = result.length > 200 ? result.substring(0, 200) + "..." : result; + resultPre.textContent = + result.length > 200 ? result.substring(0, 200) + "..." : result; entry.appendChild(exprDiv); entry.appendChild(resultPre); @@ -146,7 +157,10 @@ export default function EvalController(element: HTMLElement): void { }) .join(", ")})`; inputEl.focus(); - inputEl.setSelectionRange(funcName.length + 1, inputEl.value.length - 1); + inputEl.setSelectionRange( + funcName.length + 1, + inputEl.value.length - 1, + ); } else { inputEl.value = `${funcName}()`; doEval(`${funcName}()`); diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index e201dadcf40..53581cdbbd8 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -8,13 +8,20 @@ export default function PlaygroundController(element: HTMLElement): void { let files: PlaygroundFile[] = []; let activeFile = 0; - const codeEl = element.querySelector('[data-playground-target="code"]') as HTMLTextAreaElement; - const outputEl = element.querySelector('[data-playground-target="output"]') as HTMLElement; - const tabsEl = element.querySelector('[data-playground-target="tabs"]') as HTMLElement; + const codeEl = element.querySelector( + '[data-playground-target="code"]', + ) as HTMLTextAreaElement; + const outputEl = element.querySelector( + '[data-playground-target="output"]', + ) as HTMLElement; + const tabsEl = element.querySelector( + '[data-playground-target="tabs"]', + ) as HTMLElement; if (!codeEl || !outputEl || !tabsEl) return; - const domain = element.getAttribute("data-playground-domain-value") || "gno.land"; + const domain = + element.getAttribute("data-playground-domain-value") || "gno.land"; // Parse initial code const initialCode = codeEl.value; @@ -25,7 +32,8 @@ export default function PlaygroundController(element: HTMLElement): void { const content = (parts[i + 1] || "").trim(); if (name) files.push({ name, content }); } - if (files.length === 0) files = [{ name: "main.gno", content: initialCode }]; + if (files.length === 0) + files = [{ name: "main.gno", content: initialCode }]; codeEl.value = files[0].content; } else { files = [{ name: "main.gno", content: initialCode }]; @@ -104,7 +112,8 @@ export default function PlaygroundController(element: HTMLElement): void { } function runTests(): void { - outputEl.textContent = "Testing requires a running gno node.\n\nTo test locally:\n gno test ."; + outputEl.textContent = + "Testing requires a running gno node.\n\nTo test locally:\n gno test ."; } function formatCode(): void { @@ -122,8 +131,12 @@ export default function PlaygroundController(element: HTMLElement): void { const url = `${window.location.origin}/_/play?code=${encodeURIComponent(code)}`; navigator.clipboard .writeText(url) - .then(() => { outputEl.textContent = "Share URL copied to clipboard!"; }) - .catch(() => { outputEl.textContent = `Share URL:\n${url}`; }); + .then(() => { + outputEl.textContent = "Share URL copied to clipboard!"; + }) + .catch(() => { + outputEl.textContent = `Share URL:\n${url}`; + }); } function clearOutput(): void { @@ -133,19 +146,28 @@ export default function PlaygroundController(element: HTMLElement): void { // Keyboard shortcuts codeEl.addEventListener("keydown", (e: KeyboardEvent) => { - if (e.ctrlKey && e.key === "Enter") { e.preventDefault(); runCode(); return; } + if (e.ctrlKey && e.key === "Enter") { + e.preventDefault(); + runCode(); + return; + } if (e.key === "Tab" && !e.shiftKey) { e.preventDefault(); const start = codeEl.selectionStart; const end = codeEl.selectionEnd; - codeEl.value = codeEl.value.substring(0, start) + "\t" + codeEl.value.substring(end); + codeEl.value = + codeEl.value.substring(0, start) + "\t" + codeEl.value.substring(end); codeEl.selectionStart = codeEl.selectionEnd = start + 1; } }); // Wire buttons by data-action attribute const actions: Record void> = { - runCode, runTests, formatCode, shareCode, clearOutput, + runCode, + runTests, + formatCode, + shareCode, + clearOutput, }; element.querySelectorAll("[data-action]").forEach((el) => { const attr = el.getAttribute("data-action"); From 6aba36f8b07bfca63893c11c6c6cbaca98849437 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Thu, 9 Apr 2026 16:31:05 +0200 Subject: [PATCH 08/40] docs(gnoweb): add ADR for integrated playground (PR #5421) --- gno.land/adr/pr5421_integrated_playground.md | 125 +++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 gno.land/adr/pr5421_integrated_playground.md diff --git a/gno.land/adr/pr5421_integrated_playground.md b/gno.land/adr/pr5421_integrated_playground.md new file mode 100644 index 00000000000..a5cf4aca09e --- /dev/null +++ b/gno.land/adr/pr5421_integrated_playground.md @@ -0,0 +1,125 @@ +# ADR: Integrated Playground, Eval, and Fork Views in gnoweb + +## Context + +gno.land previously had no interactive code evaluation in gnoweb. Users who +wanted to call realm functions or experiment with Gno code had to use external +tools (gnokey CLI, a separate gnostudio/studio app, or copy-paste workflows). + +The key problems: + +1. **Friction for exploration.** Reading a realm's `Render` output or calling + a view function required setting up a local environment or using CLI tools. +2. **No in-browser eval.** Users could not quickly test expressions against a + deployed package from the web UI. +3. **No code scratch pad.** There was nowhere in gnoweb to write and share + short Gno snippets. +4. **Separate studio dependency.** The only interactive option required running + a separate application, breaking the single-binary model. + +## Decision + +Add three interactive features to gnoweb as Go-native, single-binary +extensions with no additional runtime dependencies: + +### 1. `/_/play` — Playground scratch pad + +A multi-file code editor backed by a plain ` + + + +
+

Command Settings

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+

Generated Commands

+

+ Save the code above as script.gno (use + Download .gno above), then run one of these commands: +

+ + +
+
+ Dry Run + simulates without broadcasting + +
+

+    
+ + +
+
+ Execute + broadcasts and runs on-chain + +
+

+    
+
+ + +{{ end }} diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-run.ts b/gno.land/pkg/gnoweb/frontend/js/controller-run.ts new file mode 100644 index 00000000000..e24436cf732 --- /dev/null +++ b/gno.land/pkg/gnoweb/frontend/js/controller-run.ts @@ -0,0 +1,139 @@ +// Run (maketx run) controller — pre-fills editor with import template, generates gnokey commands +export default function RunController(element: HTMLElement): void { + const codeEl = element.querySelector('[data-run-target="code"]') as HTMLTextAreaElement; + const keyEl = element.querySelector('[data-run-target="key"]') as HTMLInputElement; + const gasWantedEl = element.querySelector('[data-run-target="gasWanted"]') as HTMLInputElement; + const gasFeeEl = element.querySelector('[data-run-target="gasFee"]') as HTMLInputElement; + const sendEl = element.querySelector('[data-run-target="send"]') as HTMLInputElement; + const dryRunCmdEl = element.querySelector('[data-run-target="dryRunCmd"]') as HTMLElement; + const executeCmdEl = element.querySelector('[data-run-target="executeCmd"]') as HTMLElement; + + if (!codeEl || !dryRunCmdEl || !executeCmdEl) return; + + const pkgPath = element.getAttribute("data-run-pkg-path-value") || ""; + const pkgAlias = element.getAttribute("data-run-pkg-alias-value") || "pkg"; + const remote = element.getAttribute("data-run-remote-value") || ""; + const chainId = element.getAttribute("data-run-chain-id-value") || ""; + + const initialCode = buildTemplate(pkgPath, pkgAlias); + codeEl.value = initialCode; + + // Tab key inserts spaces instead of changing focus + codeEl.addEventListener("keydown", (e: KeyboardEvent) => { + if (e.key === "Tab" && !e.shiftKey) { + e.preventDefault(); + const start = codeEl.selectionStart; + const end = codeEl.selectionEnd; + codeEl.value = codeEl.value.substring(0, start) + "\t" + codeEl.value.substring(end); + codeEl.selectionStart = codeEl.selectionEnd = start + 1; + } + }); + + function buildTemplate(pkg: string, alias: string): string { + return `package main + +import "${pkg}" + +func main() { +\t// Call ${alias} functions here, e.g.: +\t// ${alias}.Render("") +} +`; + } + + function buildCmd(dryRun: boolean): string { + const key = keyEl?.value.trim() || ""; + const gasWanted = gasWantedEl?.value.trim() || "2000000"; + const gasFee = gasFeeEl?.value.trim() || "1000000ugnot"; + const send = sendEl?.value.trim(); + + const parts = [ + "gnokey maketx run", + ` -gas-wanted ${gasWanted}`, + ` -gas-fee ${gasFee}`, + ]; + + if (send && send !== "0ugnot") { + parts.push(` -send "${send}"`); + } + + parts.push(" -broadcast"); + + if (dryRun) { + parts.push(" -simulate only"); + } + + if (chainId) { + parts.push(` -chainid ${chainId}`); + } + + if (remote) { + parts.push(` -remote "${remote}"`); + } + + parts.push(` ${key} script.gno`); + + return parts.join(" \\\n"); + } + + function updateCommands(): void { + dryRunCmdEl.textContent = buildCmd(true); + executeCmdEl.textContent = buildCmd(false); + } + + // Update commands on any input change + [keyEl, gasWantedEl, gasFeeEl, sendEl].forEach((el) => { + if (el) el.addEventListener("input", updateCommands); + }); + + // Wire actions + element.querySelectorAll("[data-action]").forEach((el) => { + const attr = el.getAttribute("data-action"); + if (!attr) return; + const match = attr.match(/^(\w+)->run#(\w+)$/); + if (!match) return; + const [, evt, method] = match; + + const handlers: Record void> = { + resetCode: () => { + codeEl.value = buildTemplate(pkgPath, pkgAlias); + }, + downloadCode: () => { + const blob = new Blob([codeEl.value], { type: "text/plain" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = "script.gno"; + a.click(); + URL.revokeObjectURL(url); + }, + copyDryRun: () => copyToClipboard(buildCmd(true), el as HTMLElement), + copyExecute: () => copyToClipboard(buildCmd(false), el as HTMLElement), + }; + + const fn = handlers[method]; + if (fn) el.addEventListener(evt, fn); + }); + + function copyToClipboard(text: string, btn: HTMLElement): void { + navigator.clipboard.writeText(text).then(() => { + const span = btn.querySelector("span"); + if (!span) return; + const orig = span.textContent; + span.textContent = "Copied!"; + setTimeout(() => { span.textContent = orig; }, 1500); + }).catch(() => { + // fallback: select the pre element content + const pre = btn.closest(".b-run-command-block")?.querySelector("pre"); + if (pre) { + const sel = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(pre); + sel?.removeAllRanges(); + sel?.addRange(range); + } + }); + } + + updateCommands(); +} diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index d4f8812cc71..cbb05547c9d 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -319,6 +319,11 @@ func (h *HTTPHandler) GetPackageView(ctx context.Context, gnourl *weburl.GnoURL, return h.GetForkView(ctx, gnourl) } + // Handle Run page (maketx run scratchpad) + if gnourl.WebQuery.Has("run") { + return h.GetRunView(ctx, gnourl) + } + // Handle Source page if gnourl.WebQuery.Has("source") || gnourl.IsFile() { return h.GetSourceView(ctx, gnourl) @@ -844,6 +849,16 @@ func (h *HTTPHandler) GetForkView(ctx context.Context, gnourl *weburl.GnoURL) (i }) } +// GetRunView renders the maketx run scratchpad for a realm/package. +func (h *HTTPHandler) GetRunView(_ context.Context, gnourl *weburl.GnoURL) (int, *components.View) { + return http.StatusOK, components.RunView(components.RunData{ + PkgPath: path.Join(h.Static.Domain, gnourl.Path), + Domain: h.Static.Domain, + Remote: h.Static.RemoteHelp, + ChainId: h.Static.ChainId, + }) +} + func GetClientErrorStatusPage(_ *weburl.GnoURL, err error) (int, *components.View) { if err == nil { return http.StatusOK, nil diff --git a/gno.land/pkg/gnoweb/public/js/controller-run.js b/gno.land/pkg/gnoweb/public/js/controller-run.js new file mode 100644 index 00000000000..9c226acccaf --- /dev/null +++ b/gno.land/pkg/gnoweb/public/js/controller-run.js @@ -0,0 +1 @@ +function h(i){const a=i.querySelector('[data-run-target="code"]'),k=i.querySelector('[data-run-target="key"]'),W=i.querySelector('[data-run-target="gasWanted"]'),F=i.querySelector('[data-run-target="gasFee"]'),S=i.querySelector('[data-run-target="send"]'),D=i.querySelector('[data-run-target="dryRunCmd"]'),E=i.querySelector('[data-run-target="executeCmd"]');if(!a||!D||!E)return;const pkg=i.getAttribute("data-run-pkg-path-value")||"",alias=i.getAttribute("data-run-pkg-alias-value")||"pkg",remote=i.getAttribute("data-run-remote-value")||"",chainId=i.getAttribute("data-run-chain-id-value")||"";function tpl(p,al){return`package main\n\nimport "${p}"\n\nfunc main() {\n\t// Call ${al} functions here, e.g.:\n\t// ${al}.Render("")\n}\n`}a.value=tpl(pkg,alias);a.addEventListener("keydown",e=>{if(e.key==="Tab"&&!e.shiftKey){e.preventDefault();const s=a.selectionStart,en=a.selectionEnd;a.value=a.value.substring(0,s)+"\t"+a.value.substring(en);a.selectionStart=a.selectionEnd=s+1}});function buildCmd(dry){const key=k?.value.trim()||"",gw=W?.value.trim()||"2000000",gf=F?.value.trim()||"1000000ugnot",send=S?.value.trim(),parts=["gnokey maketx run",` -gas-wanted ${gw}`,` -gas-fee ${gf}`];if(send&&send!=="0ugnot")parts.push(` -send "${send}"`);parts.push(" -broadcast");if(dry)parts.push(" -simulate only");if(chainId)parts.push(` -chainid ${chainId}`);if(remote)parts.push(` -remote "${remote}"`);parts.push(` ${key} script.gno`);return parts.join(" \\\n")}function update(){D.textContent=buildCmd(true);E.textContent=buildCmd(false)}[k,W,F,S].forEach(el=>{el&&el.addEventListener("input",update)});function copyText(text,btn){navigator.clipboard.writeText(text).then(()=>{const sp=btn.querySelector("span");if(!sp)return;const orig=sp.textContent;sp.textContent="Copied!";setTimeout(()=>{sp.textContent=orig},1500)}).catch(()=>{const pre=btn.closest(".b-run-command-block")?.querySelector("pre");if(pre){const sel=window.getSelection(),r=document.createRange();r.selectNodeContents(pre);sel?.removeAllRanges();sel?.addRange(r)}})}const actions={resetCode:()=>{a.value=tpl(pkg,alias)},downloadCode:()=>{const blob=new Blob([a.value],{type:"text/plain"}),url=URL.createObjectURL(blob),el=document.createElement("a");el.href=url;el.download="script.gno";el.click();URL.revokeObjectURL(url)},copyDryRun:()=>copyText(buildCmd(true),i.querySelector("[data-action='click->run#copyDryRun']")),copyExecute:()=>copyText(buildCmd(false),i.querySelector("[data-action='click->run#copyExecute']"))};i.querySelectorAll("[data-action]").forEach(el=>{const attr=el.getAttribute("data-action");if(!attr)return;const m=attr.match(/^(\w+)->run#(\w+)$/);if(!m)return;const fn=actions[m[2]];if(fn)el.addEventListener(m[1],fn)});update()}export{h as default}; From 518ca8ed3316be71bae4a28d0fcdcecee05272f9 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 20 Apr 2026 13:16:42 +0200 Subject: [PATCH 12/40] chore(gnoweb): improve light playground styles This change makes the code visible in light theme. --- gno.land/pkg/gnoweb/frontend/css/06-blocks.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 005a346a31c..4a19068ddff 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2586,12 +2586,12 @@ main.dev-mode .b-toc a { white-space: nowrap; &:hover { - color: var(--s-color-text-base); + color: var(--s-color-text-secondary); background-color: var(--s-color-bg-default); } &--active { - color: var(--s-color-text-base); + color: var(--s-color-text-secondary); border-bottom-color: var(--s-color-border-brand); font-weight: var(--g-font-semibold); } @@ -2606,7 +2606,7 @@ main.dev-mode .b-toc a { color: var(--s-color-text-muted); &:hover { - color: var(--s-color-text-base); + color: var(--s-color-text-secondary); } } @@ -2621,8 +2621,8 @@ main.dev-mode .b-toc a { min-height: 300px; padding: var(--g-space-2); border: none; - background-color: var(--s-color-bg-default); - color: var(--s-color-text-base); + background-color: var(--s-color-bg-base); + color: var(--s-color-text-secondary); font-family: var(--g-font-mono); font-size: var(--g-font-size-75); line-height: 1.6; From e0c73d9038cfaf07d1d197067db3485894a35645 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:08:31 +0200 Subject: [PATCH 13/40] chore(gnoweb): change playground to use u-grid-full style --- gno.land/pkg/gnoweb/components/views/playground.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index b2b64fcbf39..8cd84434c50 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -3,7 +3,7 @@ =================================================================================== */}} {{ define "renderPlayground" }} -
Date: Mon, 20 Apr 2026 20:25:49 +0200 Subject: [PATCH 14/40] feat(gnoweb): refactor playground render to follow coding standard Changes HTTP handler to follow Gnoweb's view render patterns. --- .../pkg/gnoweb/components/layout_header.go | 2 + .../pkg/gnoweb/components/layout_index.go | 22 +++--- gno.land/pkg/gnoweb/components/layout_test.go | 41 +++++++--- gno.land/pkg/gnoweb/components/view_test.go | 2 - .../frontend/js/controller-playground.ts | 8 +- gno.land/pkg/gnoweb/handler_http.go | 76 +++++++------------ gno.land/pkg/gnoweb/handler_http_test.go | 1 + gno.land/pkg/gnoweb/weburl/url.go | 11 +++ gno.land/pkg/gnoweb/weburl/url_test.go | 11 +++ 9 files changed, 101 insertions(+), 73 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/layout_header.go b/gno.land/pkg/gnoweb/components/layout_header.go index 43c94c21866..06eaaa29112 100644 --- a/gno.land/pkg/gnoweb/components/layout_header.go +++ b/gno.land/pkg/gnoweb/components/layout_header.go @@ -97,6 +97,8 @@ func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderL return []HeaderLink{contentLink} case mode == ViewModePackage: return []HeaderLink{contentLink, sourceLink, forkLink} + case mode == ViewModePlayground: + return []HeaderLink{} default: return []HeaderLink{contentLink, sourceLink, actionsLink, evalLink, forkLink, runLink} } diff --git a/gno.land/pkg/gnoweb/components/layout_index.go b/gno.land/pkg/gnoweb/components/layout_index.go index e9d5771c064..7a248fe3435 100644 --- a/gno.land/pkg/gnoweb/components/layout_index.go +++ b/gno.land/pkg/gnoweb/components/layout_index.go @@ -7,19 +7,21 @@ import "strings" type ViewMode int const ( - ViewModeExplorer ViewMode = iota // For exploring packages and paths - ViewModeRealm // For realm content display - ViewModePackage // For package content display - ViewModeHome // For home page display - ViewModeUser // For user page display + ViewModeExplorer ViewMode = iota // For exploring packages and paths + ViewModeRealm // For realm content display + ViewModePackage // For package content display + ViewModeHome // For home page display + ViewModeUser // For user page display + ViewModePlayground // For playground display ) // View mode predicates -func (m ViewMode) IsExplorer() bool { return m == ViewModeExplorer } -func (m ViewMode) IsRealm() bool { return m == ViewModeRealm } -func (m ViewMode) IsPackage() bool { return m == ViewModePackage } -func (m ViewMode) IsUser() bool { return m == ViewModeUser } -func (m ViewMode) IsHome() bool { return m == ViewModeHome } +func (m ViewMode) IsExplorer() bool { return m == ViewModeExplorer } +func (m ViewMode) IsRealm() bool { return m == ViewModeRealm } +func (m ViewMode) IsPackage() bool { return m == ViewModePackage } +func (m ViewMode) IsUser() bool { return m == ViewModeUser } +func (m ViewMode) IsHome() bool { return m == ViewModeHome } +func (m ViewMode) IsPlayground() bool { return m == ViewModePlayground } // ShouldShowDevTools returns whether dev tools should be shown for this mode func (m ViewMode) ShouldShowDevTools() bool { diff --git a/gno.land/pkg/gnoweb/components/layout_test.go b/gno.land/pkg/gnoweb/components/layout_test.go index 92e07f3cac6..d3143e6448f 100644 --- a/gno.land/pkg/gnoweb/components/layout_test.go +++ b/gno.land/pkg/gnoweb/components/layout_test.go @@ -46,6 +46,11 @@ func TestIndexLayout(t *testing.T) { mode: ViewModePackage, viewType: DirectoryViewType, }, + { + name: "Playground view", + mode: ViewModePlayground, + viewType: "test-view", + }, } for _, tt := range tests { @@ -169,7 +174,6 @@ func TestIsActive(t *testing.T) { } for _, tc := range cases { - tc := tc t.Run(tc.name, func(t *testing.T) { result := isActive(tc.query, tc.label) assert.Equal(t, tc.expected, result) @@ -234,6 +238,18 @@ func TestStaticHeaderDevLinks_WithExplorerMode(t *testing.T) { assert.Empty(t, links, "expected no links in explorer mode") } +func TestStaticHeaderDevLinks_WithPlaygroundMode(t *testing.T) { + t.Parallel() + + u := weburl.GnoURL{ + Path: "/_/play", + } + + // Test playground mode + links := StaticHeaderDevLinks(u, ViewModePlayground, false) + assert.Empty(t, links, "expected no links in playground mode") +} + func TestEnrichHeaderData_WithRealmMode(t *testing.T) { t.Parallel() @@ -268,13 +284,14 @@ func TestEnrichHeaderData_WithExplorerMode(t *testing.T) { func TestViewModePredicates(t *testing.T) { cases := []struct { - mode ViewMode - name string - wantExplorer bool - wantRealm bool - wantPackage bool - wantHome bool - wantUser bool + mode ViewMode + name string + wantExplorer bool + wantRealm bool + wantPackage bool + wantHome bool + wantUser bool + wantPlayground bool }{ { mode: ViewModeExplorer, @@ -301,16 +318,21 @@ func TestViewModePredicates(t *testing.T) { name: "User", wantUser: true, }, + { + mode: ViewModePlayground, + name: "Playground", + wantPlayground: true, + }, } for _, tc := range cases { - tc := tc t.Run(tc.name, func(t *testing.T) { assert.Equal(t, tc.wantExplorer, tc.mode.IsExplorer(), "IsExplorer") assert.Equal(t, tc.wantRealm, tc.mode.IsRealm(), "IsRealm") assert.Equal(t, tc.wantPackage, tc.mode.IsPackage(), "IsPackage") assert.Equal(t, tc.wantHome, tc.mode.IsHome(), "IsHome") assert.Equal(t, tc.wantUser, tc.mode.IsUser(), "IsUser") + assert.Equal(t, tc.wantPlayground, tc.mode.IsPlayground(), "IsPlayground") }) } } @@ -342,7 +364,6 @@ func TestIndexLayout_ThemePropagation(t *testing.T) { } for _, tc := range cases { - tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() diff --git a/gno.land/pkg/gnoweb/components/view_test.go b/gno.land/pkg/gnoweb/components/view_test.go index fcc03968e00..2c479561d0a 100644 --- a/gno.land/pkg/gnoweb/components/view_test.go +++ b/gno.land/pkg/gnoweb/components/view_test.go @@ -339,7 +339,6 @@ func TestDirLinkType_LinkPrefix(t *testing.T) { } for _, tc := range cases { - tc := tc t.Run(tc.name, func(t *testing.T) { result := tc.linkType.LinkPrefix(tc.pkgPath) assert.Equal(t, tc.expected, result) @@ -385,7 +384,6 @@ func TestGetFullLinks(t *testing.T) { } for _, tc := range cases { - tc := tc t.Run(tc.name, func(t *testing.T) { result := GetFullLinks(tc.files, tc.linkType, tc.pkgPath) assert.Equal(t, tc.expected, result) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 53581cdbbd8..10992b2f3af 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -128,7 +128,13 @@ export default function PlaygroundController(element: HTMLElement): void { files.length === 1 ? files[0].content : files.map((f) => `// --- ${f.name} ---\n${f.content}`).join("\n\n"); - const url = `${window.location.origin}/_/play?code=${encodeURIComponent(code)}`; + + // Encode as base64; TextEncoder produces UTF-8 bytes, which are mapped to a + // Latin-1 binary string so btoa() can handle non-ASCII chars, then the + // resulting base64 is percent-encoded to be safe in a URL query parameter. + const bytes = new TextEncoder().encode(code); + const binary = Array.from(bytes, (b) => String.fromCharCode(b)).join(""); + const url = `${window.location.origin}/_/play?code=${encodeURIComponent(btoa(binary))}`; navigator.clipboard .writeText(url) .then(() => { diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index cbb05547c9d..47eedd89da1 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -3,6 +3,7 @@ package gnoweb import ( "bytes" "context" + "encoding/base64" "errors" "fmt" "go/token" @@ -22,6 +23,13 @@ import ( const ReadmeFileName = "README.md" +const defaultPlaygroundCode = `package main + +func Render(path string) string { + return "Hello, Playground!" +} +` + // StaticMetadata holds static configuration for a web handler. type StaticMetadata struct { Domain string @@ -157,12 +165,6 @@ func (h *HTTPHandler) Get(w http.ResponseWriter, r *http.Request) { return } - // Handle playground page - if r.URL.Path == "/_/play" { - h.servePlayground(w, r) - return - } - // Handle download request outside of component rendering flow. if gnourl.WebQuery.Has("download") { h.ServeSourceDownload(r.Context(), gnourl, w, r) @@ -177,6 +179,8 @@ func (h *HTTPHandler) Get(w http.ResponseWriter, r *http.Request) { indexData.Mode = components.ViewModePackage case gnourl.IsUser(): indexData.Mode = components.ViewModeUser + case gnourl.IsPlayground(): + indexData.Mode = components.ViewModePlayground default: indexData.Mode = components.ViewModeRealm } @@ -271,10 +275,12 @@ func (h *HTTPHandler) prepareIndexBodyView(r *http.Request, indexData *component switch { case aliasExists && aliasTarget.Kind == StaticMarkdown: - indexData.HeaderData.Static = true + indexData.HeaderData.Static = true // TODO: Move inside GetMarkdownView return h.GetMarkdownView(gnourl, aliasTarget.Value) - case gnourl.IsRealm(), gnourl.IsPure(), gnourl.IsUser(): + case gnourl.IsRealm(), gnourl.IsPure(), gnourl.IsUser(), gnourl.IsPackageFork(): return h.GetPackageView(ctx, gnourl, indexData) + case gnourl.IsPlayground(): + return h.GetPlaygroundView(gnourl, indexData) default: h.Logger.Debug("invalid path: path is neither a pure package or a realm") return http.StatusBadRequest, components.StatusErrorComponent("invalid path") @@ -740,58 +746,28 @@ func (h *HTTPHandler) ServeSourceDownload(ctx context.Context, gnourl *weburl.Gn w.Write(source) // write raw file } -// servePlayground renders the standalone playground page. -func (h *HTTPHandler) servePlayground(w http.ResponseWriter, r *http.Request) { - var theme string - if c, err := r.Cookie("theme"); err == nil { - if c.Value == "light" || c.Value == "dark" { - theme = c.Value - } - } - - // Check if we have initial code from query (e.g. shared snippet) - initialCode := r.URL.Query().Get("code") - forkFrom := r.URL.Query().Get("from") - if initialCode == "" { - initialCode = `package main +// GetPlaygroundView renders the standalone playground page. +func (h *HTTPHandler) GetPlaygroundView(gnourl *weburl.GnoURL, indexData *components.IndexData) (int, *components.View) { + indexData.HeadData.Title = "Playground — " + h.Static.Domain -func Render(path string) string { - return "Hello, Playground!" -} -` + // Check if we have initial code from query (e.g. shared snippet). + // Code can be given as a base64 encoded string or plaintext. + initialCode := gnourl.Query.Get("code") + if decoded, err := base64.StdEncoding.DecodeString(initialCode); err == nil { + initialCode = string(decoded) } - indexData := components.IndexData{ - HeadData: components.HeadData{ - Title: "Playground — " + h.Static.Domain, - AssetsPath: h.Static.AssetsPath, - ChromaPath: h.Static.ChromaPath, - ChainId: h.Static.ChainId, - Remote: h.Static.RemoteHelp, - BuildTime: h.Static.BuildTime, - }, - FooterData: components.FooterData{ - Analytics: h.Static.Analytics, - AssetsPath: h.Static.AssetsPath, - BuildTime: h.Static.BuildTime, - }, - Theme: theme, - Banner: h.Static.Banner, - Mode: components.ViewModeRealm, + // Use default code when no code is provided + if initialCode == "" { + initialCode = defaultPlaygroundCode } - indexData.BodyView = components.PlaygroundView(components.PlaygroundData{ + return http.StatusOK, components.PlaygroundView(components.PlaygroundData{ InitialCode: initialCode, - ForkFrom: forkFrom, Remote: h.Static.RemoteHelp, ChainId: h.Static.ChainId, Domain: h.Static.Domain, }) - - w.WriteHeader(http.StatusOK) - if err := components.IndexLayout(indexData).Render(w); err != nil { - h.Logger.Error("failed to render playground", "error", err) - } } // GetEvalView renders the expression evaluator page for a package/realm. diff --git a/gno.land/pkg/gnoweb/handler_http_test.go b/gno.land/pkg/gnoweb/handler_http_test.go index 5060621cc92..3c40cfb3a45 100644 --- a/gno.land/pkg/gnoweb/handler_http_test.go +++ b/gno.land/pkg/gnoweb/handler_http_test.go @@ -1355,6 +1355,7 @@ func TestHTTPHandler_PlaygroundPage(t *testing.T) { }{ {"default playground", "/_/play", "Playground"}, {"with initial code", "/_/play?code=package+main", "package main"}, + {"with initial encoded code", "/_/play?code=cGFja2FnZSBtYWluCg==", "package main"}, {"with fork param", "/_/play?from=gno.land/r/demo/foo", "gno.land/r/demo/foo"}, } diff --git a/gno.land/pkg/gnoweb/weburl/url.go b/gno.land/pkg/gnoweb/weburl/url.go index b6866f49e80..784ce3d69ff 100644 --- a/gno.land/pkg/gnoweb/weburl/url.go +++ b/gno.land/pkg/gnoweb/weburl/url.go @@ -166,6 +166,17 @@ func (gnoURL GnoURL) IsDir() bool { len(gnoURL.Path) > 0 && gnoURL.Path[len(gnoURL.Path)-1] == '/' } +// IsPlayground checks if the URL path represents the integrated playground. +func (gnoURL GnoURL) IsPlayground() bool { + // Package fork source code is displayed within the playground + return gnoURL.Path == "/_/play" || gnoURL.IsPackageFork() +} + +// IsPackageFork checks if the URL represents a package fork. +func (gnoURL GnoURL) IsPackageFork() bool { + return gnoURL.WebQuery.Has("fork") +} + // rePkgPath matches and validates a path. var rePkgPath = regexp.MustCompile(`^/[a-z0-9_/]*$`) diff --git a/gno.land/pkg/gnoweb/weburl/url_test.go b/gno.land/pkg/gnoweb/weburl/url_test.go index 7ed4b647cf1..a5bfd6f5e3d 100644 --- a/gno.land/pkg/gnoweb/weburl/url_test.go +++ b/gno.land/pkg/gnoweb/weburl/url_test.go @@ -245,6 +245,17 @@ func TestParseGnoURL(t *testing.T) { }, }, + { + Name: "playground", + Input: "https://gno.land/_/play", + Expected: &GnoURL{ + Path: "/_/play", + WebQuery: url.Values{}, + Query: url.Values{}, + Domain: "gno.land", + }, + }, + { Name: "invalid path", Input: "https://gno.land/r/dem)o:$?", From f42524a4f89315c8c3a368457ba9490b99031b6f Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 20 Apr 2026 20:28:58 +0200 Subject: [PATCH 15/40] chore(gnoweb): change HTTP handler static option location Done to keep switch consistent and simple, moving responsibility to the called methods. --- gno.land/pkg/gnoweb/handler_http.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index 47eedd89da1..a86211f30f1 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -275,8 +275,7 @@ func (h *HTTPHandler) prepareIndexBodyView(r *http.Request, indexData *component switch { case aliasExists && aliasTarget.Kind == StaticMarkdown: - indexData.HeaderData.Static = true // TODO: Move inside GetMarkdownView - return h.GetMarkdownView(gnourl, aliasTarget.Value) + return h.GetMarkdownView(gnourl, indexData, aliasTarget.Value) case gnourl.IsRealm(), gnourl.IsPure(), gnourl.IsUser(), gnourl.IsPackageFork(): return h.GetPackageView(ctx, gnourl, indexData) case gnourl.IsPlayground(): @@ -288,7 +287,9 @@ func (h *HTTPHandler) prepareIndexBodyView(r *http.Request, indexData *component } // GetMarkdownView handles rendering of markdown files. -func (h *HTTPHandler) GetMarkdownView(gnourl *weburl.GnoURL, mdContent string) (int, *components.View) { +func (h *HTTPHandler) GetMarkdownView(gnourl *weburl.GnoURL, indexData *components.IndexData, mdContent string) (int, *components.View) { + indexData.HeaderData.Static = true + var content bytes.Buffer // Use Goldmark for Markdown parsing From 3b93051e127e4646e4504f023163a855bb12df34 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:01:33 +0200 Subject: [PATCH 16/40] feat(gnoweb): change playground tabs to match menu styling Done until a proper tab styling is defined. --- .../pkg/gnoweb/frontend/css/06-blocks.css | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 4a19068ddff..4d6d9c1a289 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2569,31 +2569,46 @@ main.dev-mode .b-toc a { display: flex; align-items: center; gap: 0; - background-color: var(--s-color-bg-muted); border-bottom: 1px solid var(--s-color-border-default); overflow-x: auto; } .b-playground-tab { - padding: var(--g-space-1) var(--g-space-2); + position: relative; + padding: var(--g-space-1) var(--g-space-2) var(--g-space-3); + margin-right: var(--g-space-1); border: none; background: none; cursor: pointer; font-size: var(--g-font-size-50); font-family: var(--g-font-mono); - color: var(--s-color-text-muted); - border-bottom: 2px solid transparent; + font-weight: var(--g-font-semibold); + color: var(--s-color-text-tertiary); white-space: nowrap; + transition: color var(--g-transition-fast); + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: var(--g-space-1); + border-radius: var(--s-rounded) var(--s-rounded) 0 0; + background-color: var(--s-color-bg-brand-default); + transition: width var(--g-transition-fast); + } &:hover { - color: var(--s-color-text-secondary); - background-color: var(--s-color-bg-default); + color: var(--s-color-text-tertiary-hover); } +} - &--active { - color: var(--s-color-text-secondary); - border-bottom-color: var(--s-color-border-brand); - font-weight: var(--g-font-semibold); +.b-playground-tab--active { + color: var(--s-color-text-secondary); + + &::after { + width: 100%; } } From ad5c92ee82d2cc60469fb1ffe57cae3980bf6b8f Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:11:33 +0200 Subject: [PATCH 17/40] chore(gnoweb): change gno URL to not consider package fork a playground Playground is the standalone playground, while package fork is a different view that haoppens to use the playground temoplate to show code. --- gno.land/pkg/gnoweb/weburl/url.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gno.land/pkg/gnoweb/weburl/url.go b/gno.land/pkg/gnoweb/weburl/url.go index 784ce3d69ff..4a347dd1fa9 100644 --- a/gno.land/pkg/gnoweb/weburl/url.go +++ b/gno.land/pkg/gnoweb/weburl/url.go @@ -168,8 +168,7 @@ func (gnoURL GnoURL) IsDir() bool { // IsPlayground checks if the URL path represents the integrated playground. func (gnoURL GnoURL) IsPlayground() bool { - // Package fork source code is displayed within the playground - return gnoURL.Path == "/_/play" || gnoURL.IsPackageFork() + return gnoURL.Path == "/_/play" } // IsPackageFork checks if the URL represents a package fork. From 65972718b35dad81de23055ca47893f2c12a3a59 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:54:16 +0200 Subject: [PATCH 18/40] chore(gnoweb): change media breakpoints to fit new menu entries Eval and Fork menu items were added and previous breakpoints were not prepared to keep new entries within the visible area. Changed breakpoints to fit the new items. --- gno.land/pkg/gnoweb/frontend/css/06-blocks.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 4d6d9c1a289..86d1b4d0b7d 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -309,11 +309,11 @@ a.b-banner:hover { width: var(--g-space-5); height: var(--g-space-5); - @media (--xl) { + @media (--2xl) { display: none; } - @media (--2xl) { + @media (min-width: 1760px) { display: inline-block; width: var(--g-space-4-5); height: var(--g-space-4-5); @@ -324,7 +324,7 @@ a.b-banner:hover { font-weight: var(--g-font-bold); } - @media (--2xl) { + @media (--max) { padding-inline-end: var(--g-space-1); margin-inline-end: var(--g-space-6); } @@ -336,7 +336,7 @@ a.b-banner:hover { display: none; } - @media (--xl) { + @media (--2xl) { display: inline; } } From 45c2aedb8e3e9f4b35f79bb8a8e2f90772e063a6 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Thu, 23 Apr 2026 14:37:39 +0200 Subject: [PATCH 19/40] feat: change action controller to use `/_/api/eval` Gno expression evaluation is done though the local API instead of making a remote ABCI query. --- gno.land/cmd/gnoweb/main.go | 2 +- .../frontend/js/controller-action-function.ts | 28 ++++++++++--------- .../public/js/controller-action-function.js | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/gno.land/cmd/gnoweb/main.go b/gno.land/cmd/gnoweb/main.go index c5e69a9dbdc..e0d43dcf327 100644 --- a/gno.land/cmd/gnoweb/main.go +++ b/gno.land/cmd/gnoweb/main.go @@ -343,7 +343,7 @@ func SecureHeadersMiddleware(next http.Handler, strict bool, remote string) http // scripts, styles, images, and other resources. This helps prevent // cross-site scripting (XSS) and other code injection attacks. csp := fmt.Sprintf( - "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; connect-src 'self' %s/abci_query; form-action 'self'", + "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; form-action 'self'", imgSrc, remote, ) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts b/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts index 480c6358abc..ee2809bd301 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts @@ -196,10 +196,9 @@ export class ActionFunctionController extends BaseController { // If there is no "qeval-result" target, then do nothing. private async _updateQEvalResult(): Promise { const resultTarget = this.getTarget("qeval-result") as HTMLElement; - const remoteTarget = this.getTarget("remote") as HTMLElement; - // If there is no resultTarget or remoteTarget, this is a crossing function. - if (!(resultTarget && remoteTarget)) return; + // Crossing functions have no qeval-result target. + if (!resultTarget) return; // If there are no args, then show the "(enter param values)" placeholder. const argNodes = this.getTargets("arg"); @@ -210,14 +209,14 @@ export class ActionFunctionController extends BaseController { return; } - // Build the data string for the qeval query. + // Build the expression for the eval query. const args = argNodes .map((arg) => (arg.textContent as string).replace(/\\(.)/g, "$1")) .join(","); - const data = `${this._pkgPath}.${this._funcName}(${args})`; + const expression = `${this._funcName}(${args})`; - // Fetch the qeval result from the remote and update the DOM. - const result = await this._fetchQEval(remoteTarget.textContent || "", data); + // Fetch the eval result and update the DOM. + const result = await this._evalExpression(expression); resultTarget.textContent = result; resultTarget.classList.toggle( "u-color-danger", @@ -225,15 +224,18 @@ export class ActionFunctionController extends BaseController { ); } - // Fetch the qeval result from the remote - private async _fetchQEval(remote: string, data: string): Promise { + // Fetch the eval result via the same-origin /_/api/eval endpoint. + private async _evalExpression(expression: string): Promise { try { - const url = `${remote}/abci_query?path=vm%2fqeval&data=${btoa(data)}`; - const response = await fetch(url); + const response = await fetch("/_/api/eval", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ pkg_path: this._pkgPath, expression }), + }); if (!response.ok) return ""; - const result = (await response.json()).result.response.ResponseBase; - return result.Data ? atob(result.Data) : `Error: ${result.Error.value}`; + const json = await response.json(); + return json.error ? `Error: ${json.error}` : (json.result ?? ""); } catch { return ""; } diff --git a/gno.land/pkg/gnoweb/public/js/controller-action-function.js b/gno.land/pkg/gnoweb/public/js/controller-action-function.js index 1d6ccd5fd7c..092b40891fa 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-action-function.js +++ b/gno.land/pkg/gnoweb/public/js/controller-action-function.js @@ -1 +1 @@ -import{BaseController as p,debounce as g,escapeShellSpecialChars as m}from"./controller.js";var d=class extends p{sendValue=null;get _paramInputs(){return this._paramInputsCache||(this._paramInputsCache=this.getTargets("param-input")),this._paramInputsCache}connect(){this.initializeDOM({"send-code":this.getTargets("send-code")}),this._funcName=this.getValue("name")||null,this._pkgPath=this.getValue("pkgpath")||null,this._initializeArgs(),this._listenForEvents(),this._updateQEvalResult(),this._dispatchParamsChanged()}_listenForEvents(){this.on("mode:changed",e=>{let t=e.detail.mode;this._updateAllFunctionsMode(t)}),this.on("address:changed",e=>{let t=e.detail.address;this._updateAllFunctionsAddress(t)})}_updateAllFunctionsMode(e){this.getTargets("mode").forEach(t=>{let s=this.getValue("mode",t)===e;t.classList.toggle("u-inline",s),t.classList.toggle("u-hidden",!s),t.dataset.copyTarget=s&&this._funcName?`action-function-${this._funcName}`:""})}_updateAllFunctionsAddress(e){this.getTargets("address").forEach(t=>{t.textContent=e.trim()||"ADDRESS"})}_getParamCurrentValue(e){let a=this._paramInputs.filter(s=>this.getValue("param",s)===e);if(!a.length)return"";let t=a[0];return t.type==="checkbox"?a.filter(s=>s.checked).map(s=>s.value.trim()).join(","):t.type==="radio"?a.find(n=>n.checked)?.value.trim()||"":t.value.trim()}_initializeArgs(){let e=new Set;this._params={},this._paramInputs.forEach(a=>{let t=this.getValue("param",a)||"";if(!t||e.has(t))return;let s=this._getParamCurrentValue(t);this._params[t]=s,s&&this._updateArgInDOM(t,s),e.add(t)})}_debouncedUpdateAllArgs=g((e,a)=>{e&&(this._updateArgInDOM(e,a),this._updateQEvalResult(),this._dispatchParamsChanged())},50);_dispatchParamsChanged(){!this._funcName||!this._pkgPath||this.dispatch("params:changed",{pkgPath:this._pkgPath,funcName:this._funcName,params:{...this._params},send:this.sendValue||void 0})}_updateArgInDOM(e,a){let t=m(a);this.getTargets("arg").filter(o=>this.getValue("arg",o)===e).forEach(o=>{o.textContent=t||""});let s=this.getTarget("function-execute"),n=this.getTarget("function-anchor");if(!s&&!n)return;let c=s?.getAttribute("action")||n?.getAttribute("data-copy-text-value");if(!c)return;let r=c.split("&"),i=encodeURIComponent(a),u=r.findIndex((o,h)=>h>0&&o.startsWith(`${e}=`));u!==-1?r[u]=`${e}=${i}`:r.push(`${e}=${i}`);let l=r.join("&");s?.setAttribute("action",l),n?.setAttribute("data-copy-text-value",l)}async _updateQEvalResult(){let e=this.getTarget("qeval-result"),a=this.getTarget("remote");if(!(e&&a))return;let t=this.getTargets("arg");if(!t.every(i=>i.textContent!=="")){e.textContent="(enter param values)",e.classList.remove("u-color-danger");return}let n=t.map(i=>i.textContent.replace(/\\(.)/g,"$1")).join(","),c=`${this._pkgPath}.${this._funcName}(${n})`,r=await this._fetchQEval(a.textContent||"",c);e.textContent=r,e.classList.toggle("u-color-danger",r.startsWith("Error:"))}async _fetchQEval(e,a){try{let t=`${e}/abci_query?path=vm%2fqeval&data=${btoa(a)}`,s=await fetch(t);if(!s.ok)return"";let n=(await s.json()).result.response.ResponseBase;return n.Data?atob(n.Data):`Error: ${n.Error.value}`}catch{return""}}updateAllArgs(e){let a=e.target,t=this.getValue("param",a);if(!t)return;let s=this._getParamCurrentValue(t);this._params[t]=s,this._debouncedUpdateAllArgs(t,s)}updateAllFunctionsSend(e){let a=e.params?.send||!1;this.sendValue=a?this.getValue("send"):null,this.getDOMArray("send-code").forEach(t=>{t.textContent=this.sendValue||""}),this._dispatchParamsChanged()}};export{d as ActionFunctionController}; +import{BaseController as p,debounce as g,escapeShellSpecialChars as m}from"./controller.js";var l=class extends p{sendValue=null;get _paramInputs(){return this._paramInputsCache||(this._paramInputsCache=this.getTargets("param-input")),this._paramInputsCache}connect(){this.initializeDOM({"send-code":this.getTargets("send-code")}),this._funcName=this.getValue("name")||null,this._pkgPath=this.getValue("pkgpath")||null,this._initializeArgs(),this._listenForEvents(),this._updateQEvalResult(),this._dispatchParamsChanged()}_listenForEvents(){this.on("mode:changed",e=>{let t=e.detail.mode;this._updateAllFunctionsMode(t)}),this.on("address:changed",e=>{let t=e.detail.address;this._updateAllFunctionsAddress(t)})}_updateAllFunctionsMode(e){this.getTargets("mode").forEach(t=>{let a=this.getValue("mode",t)===e;t.classList.toggle("u-inline",a),t.classList.toggle("u-hidden",!a),t.dataset.copyTarget=a&&this._funcName?`action-function-${this._funcName}`:""})}_updateAllFunctionsAddress(e){this.getTargets("address").forEach(t=>{t.textContent=e.trim()||"ADDRESS"})}_getParamCurrentValue(e){let s=this._paramInputs.filter(a=>this.getValue("param",a)===e);if(!s.length)return"";let t=s[0];return t.type==="checkbox"?s.filter(a=>a.checked).map(a=>a.value.trim()).join(","):t.type==="radio"?s.find(r=>r.checked)?.value.trim()||"":t.value.trim()}_initializeArgs(){let e=new Set;this._params={},this._paramInputs.forEach(s=>{let t=this.getValue("param",s)||"";if(!t||e.has(t))return;let a=this._getParamCurrentValue(t);this._params[t]=a,a&&this._updateArgInDOM(t,a),e.add(t)})}_debouncedUpdateAllArgs=g((e,s)=>{e&&(this._updateArgInDOM(e,s),this._updateQEvalResult(),this._dispatchParamsChanged())},50);_dispatchParamsChanged(){!this._funcName||!this._pkgPath||this.dispatch("params:changed",{pkgPath:this._pkgPath,funcName:this._funcName,params:{...this._params},send:this.sendValue||void 0})}_updateArgInDOM(e,s){let t=m(s);this.getTargets("arg").filter(o=>this.getValue("arg",o)===e).forEach(o=>{o.textContent=t||""});let a=this.getTarget("function-execute"),r=this.getTarget("function-anchor");if(!a&&!r)return;let i=a?.getAttribute("action")||r?.getAttribute("data-copy-text-value");if(!i)return;let n=i.split("&"),c=encodeURIComponent(s),d=n.findIndex((o,h)=>h>0&&o.startsWith(`${e}=`));d!==-1?n[d]=`${e}=${c}`:n.push(`${e}=${c}`);let u=n.join("&");a?.setAttribute("action",u),r?.setAttribute("data-copy-text-value",u)}async _updateQEvalResult(){let e=this.getTarget("qeval-result");if(!e)return;let s=this.getTargets("arg");if(!s.every(n=>n.textContent!=="")){e.textContent="(enter param values)",e.classList.remove("u-color-danger");return}let a=s.map(n=>n.textContent.replace(/\\(.)/g,"$1")).join(","),r=`${this._funcName}(${a})`,i=await this._evalExpression(r);e.textContent=i,e.classList.toggle("u-color-danger",i.startsWith("Error:"))}async _evalExpression(e){try{let s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:this._pkgPath,expression:e})});if(!s.ok)return"";let t=await s.json();return t.error?`Error: ${t.error}`:t.result??""}catch{return""}}updateAllArgs(e){let s=e.target,t=this.getValue("param",s);if(!t)return;let a=this._getParamCurrentValue(t);this._params[t]=a,this._debouncedUpdateAllArgs(t,a)}updateAllFunctionsSend(e){let s=e.params?.send||!1;this.sendValue=s?this.getValue("send"):null,this.getDOMArray("send-code").forEach(t=>{t.textContent=this.sendValue||""}),this._dispatchParamsChanged()}};export{l as ActionFunctionController}; From e16532d2a80dca042c2f8c06b150737a8499b949 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:11:22 +0200 Subject: [PATCH 20/40] fix(gnoweb): remove unused argument from `SecureHeadersMiddleware()` --- gno.land/cmd/gnoweb/main.go | 5 ++--- gno.land/cmd/gnoweb/main_test.go | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gno.land/cmd/gnoweb/main.go b/gno.land/cmd/gnoweb/main.go index e0d43dcf327..0f7a500d755 100644 --- a/gno.land/cmd/gnoweb/main.go +++ b/gno.land/cmd/gnoweb/main.go @@ -274,7 +274,7 @@ func setupWeb(cfg *webCfg, _ []string, io commands.IO) (func() error, error) { logger.Info("Running", "listener", bindaddr.String()) // Setup security headers - secureHandler := SecureHeadersMiddleware(app, !cfg.noStrict, appcfg.NodeRemote) + secureHandler := SecureHeadersMiddleware(app, !cfg.noStrict) // Setup server server := &http.Server{ @@ -331,7 +331,7 @@ func parseAliases(aliasesStr string) (map[string]gnoweb.AliasTarget, error) { return aliases, nil } -func SecureHeadersMiddleware(next http.Handler, strict bool, remote string) http.Handler { +func SecureHeadersMiddleware(next http.Handler, strict bool) http.Handler { // Build img-src CSP directive imgSrc := "'self' data:" @@ -345,7 +345,6 @@ func SecureHeadersMiddleware(next http.Handler, strict bool, remote string) http csp := fmt.Sprintf( "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; form-action 'self'", imgSrc, - remote, ) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/gno.land/cmd/gnoweb/main_test.go b/gno.land/cmd/gnoweb/main_test.go index 13ef29121ca..eae06873317 100644 --- a/gno.land/cmd/gnoweb/main_test.go +++ b/gno.land/cmd/gnoweb/main_test.go @@ -83,7 +83,7 @@ func dummyHandler(w http.ResponseWriter, r *http.Request) { } func TestSecureHeadersMiddlewareStrict(t *testing.T) { - handler := SecureHeadersMiddleware(http.HandlerFunc(dummyHandler), true, "http://example.com") + handler := SecureHeadersMiddleware(http.HandlerFunc(dummyHandler), true) req := httptest.NewRequest("GET", "http://example.com", nil) rec := httptest.NewRecorder() @@ -119,7 +119,7 @@ func TestSecureHeadersMiddlewareStrict(t *testing.T) { } func TestSecureHeadersMiddlewareNonStrict(t *testing.T) { - handler := SecureHeadersMiddleware(http.HandlerFunc(dummyHandler), false, "http://example.com") + handler := SecureHeadersMiddleware(http.HandlerFunc(dummyHandler), false) req := httptest.NewRequest("GET", "http://example.com", nil) rec := httptest.NewRecorder() From 8ababeb995499a35e2740398b740895e524854f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:22:17 +0200 Subject: [PATCH 21/40] feat(gnoweb): consolidate built-in playground UI (#5565) Addresses milestone 0 (M0) from #5549 --------- Co-authored-by: Alexis Colin --- gno.land/pkg/gnoweb/components/ui/icons.html | 2 +- gno.land/pkg/gnoweb/components/view_run.go | 15 +- .../pkg/gnoweb/components/views/eval.html | 37 +-- .../gnoweb/components/views/playground.html | 27 +- gno.land/pkg/gnoweb/components/views/run.html | 70 ++--- .../pkg/gnoweb/frontend/css/06-blocks.css | 144 ++++++++-- .../pkg/gnoweb/frontend/js/controller-eval.ts | 187 ++++++------- .../frontend/js/controller-playground.ts | 262 ++++++++++-------- .../pkg/gnoweb/frontend/js/controller-run.ts | 234 ++++++++-------- gno.land/pkg/gnoweb/handler_playground.go | 7 - .../pkg/gnoweb/public/js/controller-eval.js | 2 +- .../gnoweb/public/js/controller-playground.js | 27 +- .../pkg/gnoweb/public/js/controller-run.js | 11 +- gno.land/pkg/gnoweb/public/main.css | 4 +- 14 files changed, 561 insertions(+), 468 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/ui/icons.html b/gno.land/pkg/gnoweb/components/ui/icons.html index af85218b2d8..8b96a209e7d 100644 --- a/gno.land/pkg/gnoweb/components/ui/icons.html +++ b/gno.land/pkg/gnoweb/components/ui/icons.html @@ -238,4 +238,4 @@ d="M4 22C4 17.5817 7.58172 14 12 14C16.4183 14 20 17.5817 20 22H18C18 18.6863 15.3137 16 12 16C8.68629 16 6 18.6863 6 22H4ZM12 13C8.685 13 6 10.315 6 7C6 3.685 8.685 1 12 1C15.315 1 18 3.685 18 7C18 10.315 15.315 13 12 13ZM12 11C14.21 11 16 9.21 16 7C16 4.79 14.21 3 12 3C9.79 3 8 4.79 8 7C8 9.21 9.79 11 12 11Z" /> -{{ end }} \ No newline at end of file +{{ end }} diff --git a/gno.land/pkg/gnoweb/components/view_run.go b/gno.land/pkg/gnoweb/components/view_run.go index 9a543278326..d6a990aa886 100644 --- a/gno.land/pkg/gnoweb/components/view_run.go +++ b/gno.land/pkg/gnoweb/components/view_run.go @@ -18,19 +18,6 @@ func (d RunData) PkgAlias() string { return path.Base(d.PkgPath) } -type runViewParams struct { - RunData - Article ArticleData -} - func RunView(data RunData) *View { - content := NewTemplateComponent("renderRunContent", data) - viewData := runViewParams{ - RunData: data, - Article: ArticleData{ - ComponentContent: content, - Classes: "c-run-view", - }, - } - return NewTemplateView(RunViewType, "renderRun", viewData) + return NewTemplateView(RunViewType, "renderRun", data) } diff --git a/gno.land/pkg/gnoweb/components/views/eval.html b/gno.land/pkg/gnoweb/components/views/eval.html index 31aa495721c..5cf0ad9679e 100644 --- a/gno.land/pkg/gnoweb/components/views/eval.html +++ b/gno.land/pkg/gnoweb/components/views/eval.html @@ -1,7 +1,11 @@ {{/* =================================================================================== -LAYOUT - Eval view wrapper +LAYOUT - Eval view =================================================================================== */}} {{ define "renderEval" }} +
+

Gno Expression Evaluator

+
+ {{ with render .ComponentTOC }} {{ template "layout/aside" . }} @@ -22,10 +26,9 @@ data-eval-pkg-path-value="{{ .PkgPath }}" data-eval-domain-value="{{ .Domain }}"> -
-

Expression Evaluator

-

Evaluate read-only expressions against {{ .PkgPath }}

-
+

+ Evaluate read-only expressions against {{ .PkgPath }} +

@@ -36,7 +39,7 @@

Expression Evaluator

placeholder='Render("")' class="u-font-mono" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />
- @@ -46,7 +49,7 @@

Expression Evaluator

- Result + Result
// Enter an expression above
@@ -54,27 +57,27 @@

Expression Evaluator

{{ if .Functions }} -
-

Quick Call

-
+
+

Quick Call

+
    {{ range .Functions }} -
    - - {{ if .Doc }}{{ .Doc }}{{ end }} -
    + {{ if .Doc }}
    {{ .Doc }}
    {{ end }} + {{ end }} -
+
{{ end }} diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index 8cd84434c50..be60d0ee3d6 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -3,51 +3,50 @@ =================================================================================== */}} {{ define "renderPlayground" }} -
- -
+ +
-

+

{{ if .ForkFrom }} - Fork of {{ .ForkFrom }} + Fork + {{ .ForkFrom }} {{ else }} Playground {{ end }}

- - - -
-
+
- - + +
diff --git a/gno.land/pkg/gnoweb/components/views/run.html b/gno.land/pkg/gnoweb/components/views/run.html index e069c018280..601cddc9a5f 100644 --- a/gno.land/pkg/gnoweb/components/views/run.html +++ b/gno.land/pkg/gnoweb/components/views/run.html @@ -1,15 +1,7 @@ -{{/* =================================================================================== -LAYOUT - Run view wrapper -=================================================================================== */}} -{{ define "renderRun" }} -{{ template "layout/article" .Article }} -{{ end }} - - {{/* =================================================================================== UI - Run (maketx run) scratchpad =================================================================================== */}} -{{ define "renderRunContent" }} +{{ define "renderRun" }}
-
-

Run Script

-

- Write a package main script that imports - {{ .PkgPath }} and runs it with - gnokey maketx run. -

-
- - -
-
-
-
- -
- + + + +
+
+ +
-

Command Settings

+

Command Settings

@@ -86,14 +74,14 @@

Command Settings

Generated Commands

- Save the code above as script.gno (use - Download .gno above), then run one of these commands: + Save the code above as script.gno using + the Download link above, then run one of these commands:

- Dry Run +

Dry Run

simulates without broadcasting
diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 1d0d2bb7313..f29cd195658 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2553,11 +2553,9 @@ main.dev-mode .b-toc a { .b-playground-editor-area { display: flex; flex-direction: column; - flex: 1; border: 1px solid var(--s-color-border-default); border-radius: var(--g-radius-2); overflow: hidden; - min-height: 40vh; margin-bottom: var(--g-space-8); } @@ -2623,25 +2621,43 @@ main.dev-mode .b-toc a { } .b-playground-editor { - flex: 1; display: flex; + height: 60vh; + min-height: 300px; + resize: vertical; + overflow: hidden; } .b-playground-code { flex: 1; - width: 100%; + display: flex; min-height: 300px; - padding: var(--g-space-2); - border: none; - border-radius: var(--s-rounded); - background-color: var(--s-color-bg-base); - color: var(--s-color-text-secondary); - font-family: var(--g-font-mono); - font-size: var(--g-font-size-75); - line-height: 1.6; - resize: none; - tab-size: 4; - outline: none; + + & .cm-editor { + flex: 1; + width: 100%; + border-radius: var(--s-rounded); + background-color: var(--s-color-bg-base); + color: var(--s-color-text-secondary); + outline: none; + padding: var(--g-space-1) 0; + } + + & .cm-editor.cm-focused { + outline: none; + } + + & .cm-scroller { + font-family: var(--g-font-mono); + font-size: var(--g-font-size-75); + line-height: 1.6; + } + + & .cm-gutters { + background-color: var(--s-color-bg-base); + color: var(--s-color-text-muted); + border: none; + } } .b-playground-output { diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 2127784d1bb..bbf32827efa 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -1,3 +1,29 @@ +import { + defaultKeymap, + history, + historyKeymap, + indentWithTab, +} from "@codemirror/commands"; +import { + bracketMatching, + defaultHighlightStyle, + indentOnInput, + indentUnit, + StreamLanguage, + syntaxHighlighting, +} from "@codemirror/language"; +import { go } from "@codemirror/legacy-modes/mode/go"; +import { toml } from "@codemirror/legacy-modes/mode/toml"; +import { Compartment, EditorState } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; +import { + drawSelection, + EditorView, + highlightActiveLine, + highlightActiveLineGutter, + keymap, + lineNumbers, +} from "@codemirror/view"; import { BaseController } from "./controller.js"; interface PlaygroundFile { @@ -8,28 +34,47 @@ interface PlaygroundFile { const GNOMOD_FILE = "gnomod.toml"; const DEFAULT_GNO_CONTENT = "package main\n"; +const goLang = StreamLanguage.define(go); +const tomlLang = StreamLanguage.define(toml); + +function languageFromFilename(name: string): StreamLanguage { + return name.endsWith(".toml") ? tomlLang : goLang; +} + export class PlaygroundController extends BaseController { private declare files: PlaygroundFile[]; private declare activeFile: number; - private declare codeEl: HTMLTextAreaElement; + private declare mountEl: HTMLElement; private declare outputEl: HTMLElement; private declare tabsEl: HTMLElement; + private declare view: EditorView; + private declare langCompartment: Compartment; + private declare themeCompartment: Compartment; protected connect(): void { + const initialCodeEl = this.getTarget("initial-code") as HTMLTextAreaElement; + this.files = []; this.activeFile = 0; - this.codeEl = this.getTarget("code") as HTMLTextAreaElement; + this.mountEl = this.getTarget("code") as HTMLElement; this.outputEl = this.getTarget("output") as HTMLElement; this.tabsEl = this.getTarget("tabs") as HTMLElement; - if (!this.codeEl || !this.outputEl || !this.tabsEl) return; + if (!this.mountEl || !this.outputEl || !this.tabsEl || !initialCodeEl) { + return; + } - this._parseInitialCode(); - this._setupKeyboardShortcuts(); + this._parseInitialCode(initialCodeEl.value); + this._createEditor(); this.renderTabs(); + + this.on("theme:changed", () => { + this.view.dispatch({ + effects: this.themeCompartment.reconfigure(this._getCodeEditorTheme()), + }); + }); } - private _parseInitialCode(): void { - const initialCode = this.codeEl.value; + private _parseInitialCode(initialCode: string): void { if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { const parts = initialCode.split(/^\/\/ --- (.+?) ---$/m); for (let i = 1; i < parts.length; i += 2) { @@ -40,30 +85,71 @@ export class PlaygroundController extends BaseController { if (this.files.length === 0) this.files = [{ name: "main.gno", content: initialCode }]; - - this.codeEl.value = this.files[0].content; } else { this.files = [{ name: "main.gno", content: initialCode }]; } } - private _setupKeyboardShortcuts(): void { - this.codeEl.addEventListener("keydown", (e: KeyboardEvent) => { - if (e.ctrlKey && e.key === "Enter") { - e.preventDefault(); + private _createEditor(): void { + this.langCompartment = new Compartment(); + this.themeCompartment = new Compartment(); - this.runCode(); - return; - } + const runOnEnter = keymap.of([ + { + key: "Mod-Enter", + preventDefault: true, + run: () => { + this.runCode(); + return true; + }, + }, + ]); + + this.view = new EditorView({ + parent: this.mountEl, + state: EditorState.create({ + doc: this.files[0].content, + extensions: [ + lineNumbers(), + highlightActiveLine(), + highlightActiveLineGutter(), + drawSelection(), + history(), + indentOnInput(), + indentUnit.of("\t"), + bracketMatching(), + this.langCompartment.of(languageFromFilename(this.files[0].name)), + this.themeCompartment.of(this._getCodeEditorTheme()), + runOnEnter, + keymap.of([indentWithTab, ...historyKeymap, ...defaultKeymap]), + ], + }), + }); + } + + private _isDarkMode(): boolean { + return document.documentElement.getAttribute("data-theme") === "dark"; + } - if (e.key === "Tab" && !e.shiftKey) { - e.preventDefault(); + private _getCodeEditorTheme() { + return this._isDarkMode() + ? oneDark + : syntaxHighlighting(defaultHighlightStyle, { fallback: true }); + } - const start = this.codeEl.selectionStart; - const end = this.codeEl.selectionEnd; - this.codeEl.value = `${this.codeEl.value.substring(0, start)}\t${this.codeEl.value.substring(end)}`; - this.codeEl.selectionStart = this.codeEl.selectionEnd = start + 1; - } + private _getCode(): string { + return this.view.state.doc.toString(); + } + + private _setCode(text: string): void { + this.view.dispatch({ + changes: { from: 0, to: this.view.state.doc.length, insert: text }, + }); + } + + private _setLanguage(name: string): void { + this.view.dispatch({ + effects: this.langCompartment.reconfigure(languageFromFilename(name)), }); } @@ -73,11 +159,12 @@ export class PlaygroundController extends BaseController { } private _switchToFile(fileName: string): boolean { - this.files[this.activeFile].content = this.codeEl.value; + this.files[this.activeFile].content = this._getCode(); const idx = this.files.findIndex((f) => f.name === fileName); if (idx >= 0) { this.activeFile = idx; - this.codeEl.value = this.files[idx].content; + this._setCode(this.files[idx].content); + this._setLanguage(this.files[idx].name); this.renderTabs(); } return idx >= 0; @@ -109,7 +196,7 @@ export class PlaygroundController extends BaseController { } public addFile(): void { - const name = prompt("File name (e.g. helper.gno):"); + const name = prompt("File name (e.g. main.gno or gnomod.toml):"); if (name == null) return; if (this._switchToFile(name)) return; @@ -123,18 +210,19 @@ export class PlaygroundController extends BaseController { content = `module = "${domain}/r/yourname/pkg"\ngno = "0.9"`; } - this.files[this.activeFile].content = this.codeEl.value; + this.files[this.activeFile].content = this._getCode(); this.files.push({ name, content }); this.activeFile = this.files.length - 1; - this.codeEl.value = this.files[this.activeFile].content; + this._setCode(this.files[this.activeFile].content); + this._setLanguage(this.files[this.activeFile].name); this.renderTabs(); } public async runCode(): Promise { - this.files[this.activeFile].content = this.codeEl.value; + this.files[this.activeFile].content = this._getCode(); this._setOutput("Running..."); - const code = this.codeEl.value; + const code = this._getCode(); const pkgMatch = code.match(/^package\s+(\w+)/m); const pkgName = pkgMatch ? pkgMatch[1] : "main"; const domain = this.getValue("domain") || "gno.land"; @@ -181,7 +269,7 @@ export class PlaygroundController extends BaseController { } public shareCode(): void { - this.files[this.activeFile].content = this.codeEl.value; + this.files[this.activeFile].content = this._getCode(); const code = this.files.length === 1 ? this.files[0].content diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-theme.ts b/gno.land/pkg/gnoweb/frontend/js/controller-theme.ts index 784647d8495..109b4de9edd 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-theme.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-theme.ts @@ -92,6 +92,8 @@ export class ThemeController extends BaseController { ] as [HTMLElement | null, Preference][]) { el?.classList.toggle("u-hidden", this.preference !== pref); } + + this.dispatch("theme:changed", { theme }); } private setCookie(value: string, maxAge: number): void { diff --git a/gno.land/pkg/gnoweb/frontend/package-lock.json b/gno.land/pkg/gnoweb/frontend/package-lock.json index 6d162854514..e5a7eb941ee 100644 --- a/gno.land/pkg/gnoweb/frontend/package-lock.json +++ b/gno.land/pkg/gnoweb/frontend/package-lock.json @@ -7,6 +7,12 @@ "name": "gnoweb", "devDependencies": { "@biomejs/biome": "2.0.5", + "@codemirror/commands": "^6.7.0", + "@codemirror/language": "^6.10.0", + "@codemirror/legacy-modes": "^6.4.0", + "@codemirror/state": "^6.5.0", + "@codemirror/theme-one-dark": "^6.1.0", + "@codemirror/view": "^6.34.0", "@fullhuman/postcss-purgecss": "^7.0.2", "chokidar-cli": "^3.0.0", "cssnano": "^7.1.0", @@ -23,7 +29,6 @@ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.0.5.tgz", "integrity": "sha512-MztFGhE6cVjf3QmomWu83GpTFyWY8KIcskgRf2AqVEMSH4qI4rNdBLdpAQ11TNK9pUfLGz3IIOC1ZYwgBePtig==", "dev": true, - "license": "MIT OR Apache-2.0", "bin": { "biome": "bin/biome" }, @@ -53,7 +58,6 @@ "arm64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -70,7 +74,6 @@ "x64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -87,7 +90,6 @@ "arm64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -104,7 +106,6 @@ "arm64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -121,7 +122,6 @@ "x64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -138,7 +138,6 @@ "x64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -155,7 +154,6 @@ "arm64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -172,7 +170,6 @@ "x64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -181,6 +178,80 @@ "node": ">=14.21.3" } }, + "node_modules/@codemirror/commands": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", + "dev": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.3.tgz", + "integrity": "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==", + "dev": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/legacy-modes": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz", + "integrity": "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==", + "dev": true, + "dependencies": { + "@codemirror/language": "^6.0.0" + } + }, + "node_modules/@codemirror/state": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", + "dev": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz", + "integrity": "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==", + "dev": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.41.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.41.1.tgz", + "integrity": "sha512-ToDnWKbBnke+ZLrP6vgTTDScGi5H37YYuZGniQaBzxMVdtCxMrslsmtnOvbPZk4RX9bvkQqnWR/WS/35tJA0qg==", + "dev": true, + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@colordx/core": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.4.3.tgz", + "integrity": "sha512-kIxYSfA5T8HXjav55UaaH/o/cKivF6jCCGIb8eqtcsfI46wsvlSiT8jMDyrl779qLec3c2c2oHBZo4oAhvbjrQ==", + "dev": true + }, "node_modules/@csstools/cascade-layer-name-parser": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", @@ -205,9 +276,9 @@ } }, "node_modules/@csstools/color-helpers": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", - "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "dev": true, "funding": [ { @@ -247,9 +318,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", - "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "dev": true, "funding": [ { @@ -262,7 +333,7 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.2", + "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" }, "engines": { @@ -363,45 +434,10 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^7.0.0" - } - }, - "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.10.tgz", - "integrity": "sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", "dev": true, "funding": [ { @@ -414,10 +450,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -428,9 +464,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.10.tgz", - "integrity": "sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", "dev": true, "funding": [ { @@ -443,10 +479,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -457,9 +493,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.0.tgz", - "integrity": "sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "dev": true, "funding": [ { @@ -472,10 +508,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -486,9 +522,9 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.6.tgz", - "integrity": "sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", "dev": true, "funding": [ { @@ -503,7 +539,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -567,9 +603,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.10.tgz", - "integrity": "sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", "dev": true, "funding": [ { @@ -582,7 +618,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" }, @@ -594,9 +630,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.10.tgz", - "integrity": "sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "dev": true, "funding": [ { @@ -609,10 +645,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -623,9 +659,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.10.tgz", - "integrity": "sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "dev": true, "funding": [ { @@ -638,10 +674,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -652,9 +688,9 @@ } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.2.tgz", - "integrity": "sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "dev": true, "funding": [ { @@ -667,7 +703,7 @@ } ], "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -726,45 +762,10 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^7.0.0" - } - }, - "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.9.tgz", - "integrity": "sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "dev": true, "funding": [ { @@ -779,7 +780,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -988,9 +989,9 @@ } }, "node_modules/@csstools/postcss-normalize-display-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", - "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==", "dev": true, "funding": [ { @@ -1013,9 +1014,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.10.tgz", - "integrity": "sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "dev": true, "funding": [ { @@ -1028,10 +1029,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -1042,9 +1043,9 @@ } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.1.0.tgz", - "integrity": "sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "dev": true, "funding": [ { @@ -1094,9 +1095,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.10.tgz", - "integrity": "sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "dev": true, "funding": [ { @@ -1109,10 +1110,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -1147,19 +1148,6 @@ "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@csstools/postcss-sign-functions": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", @@ -1215,9 +1203,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz", - "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", "dev": true, "funding": [ { @@ -1230,7 +1218,7 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.2", + "@csstools/color-helpers": "^5.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -1289,6 +1277,50 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, "node_modules/@csstools/utilities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", @@ -1319,7 +1351,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "aix" @@ -1336,7 +1367,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1353,7 +1383,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1370,7 +1399,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -1387,7 +1415,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1404,7 +1431,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1421,7 +1447,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1438,7 +1463,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1455,7 +1479,6 @@ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1472,7 +1495,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1489,7 +1511,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1506,7 +1527,6 @@ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1523,7 +1543,6 @@ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1540,7 +1559,6 @@ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1557,7 +1575,6 @@ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1574,7 +1591,6 @@ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1591,7 +1607,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -1608,7 +1623,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1625,7 +1639,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1642,7 +1655,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1659,7 +1671,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1676,7 +1687,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -1693,7 +1703,6 @@ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1710,7 +1719,6 @@ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1727,7 +1735,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1748,69 +1755,64 @@ "postcss": "^8.0.0" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, "engines": { - "node": "20 || >=22" + "node": ">=18" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/@lezer/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.2.tgz", + "integrity": "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==", + "dev": true + }, + "node_modules/@lezer/highlight": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", "dev": true, "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" + "@lezer/common": "^1.3.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@lezer/lr": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.10.tgz", + "integrity": "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==", "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" + "@lezer/common": "^1.0.0" } }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "dev": true + }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=6" } }, "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=4" } }, "node_modules/anymatch": { @@ -1818,7 +1820,6 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1827,10 +1828,23 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", "dev": true, "funding": [ { @@ -1847,10 +1861,9 @@ } ], "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, @@ -1865,18 +1878,31 @@ } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz", + "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==", "dev": true, - "license": "MIT" + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -1890,12 +1916,23 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1904,9 +1941,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz", - "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -1923,10 +1960,11 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001733", - "electron-to-chromium": "^1.5.199", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -1957,9 +1995,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001734", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001734.tgz", - "integrity": "sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==", + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", "dev": true, "funding": [ { @@ -1981,7 +2019,6 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2019,28 +2056,7 @@ "node": ">= 8.10.0" } }, - "node_modules/chokidar-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chokidar-cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar-cli/node_modules/cliui": { + "node_modules/cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", @@ -2051,7 +2067,7 @@ "wrap-ansi": "^5.1.0" } }, - "node_modules/chokidar-cli/node_modules/color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", @@ -2060,239 +2076,38 @@ "color-name": "1.1.3" } }, - "node_modules/chokidar-cli/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/chokidar-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/chokidar-cli/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar-cli/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/chokidar-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/chokidar-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/chokidar-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/chokidar-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/chokidar-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=18" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2327,23 +2142,10 @@ "postcss": "^8.4" } }, - "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", "dev": true, "engines": { "node": "^14 || ^16 || >=18" @@ -2353,9 +2155,9 @@ } }, "node_modules/css-has-pseudo": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz", - "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", "dev": true, "funding": [ { @@ -2379,41 +2181,6 @@ "postcss": "^8.4" } }, - "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^7.0.0" - } - }, - "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/css-prefers-color-scheme": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", @@ -2453,13 +2220,13 @@ } }, "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dev": true, "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" @@ -2478,9 +2245,9 @@ } }, "node_modules/cssdb": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.3.1.tgz", - "integrity": "sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.8.0.tgz", + "integrity": "sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==", "dev": true, "funding": [ { @@ -2498,7 +2265,6 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -2527,71 +2293,59 @@ } }, "node_modules/cssnano-preset-default": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.8.tgz", - "integrity": "sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==", + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.17.tgz", + "integrity": "sha512-11qO63A+czwguQFJCaTdICvbaxn0pJzz/XghLlv+OT7WyToDxAMR0Xb3/26/l0y0hQJywwNbj/SLSQlGBHE1OA==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.28.2", "css-declaration-sorter": "^7.2.0", - "cssnano-utils": "^5.0.1", + "cssnano-utils": "^5.0.3", "postcss-calc": "^10.1.1", - "postcss-colormin": "^7.0.4", - "postcss-convert-values": "^7.0.6", - "postcss-discard-comments": "^7.0.4", - "postcss-discard-duplicates": "^7.0.2", - "postcss-discard-empty": "^7.0.1", - "postcss-discard-overridden": "^7.0.1", - "postcss-merge-longhand": "^7.0.5", - "postcss-merge-rules": "^7.0.6", - "postcss-minify-font-values": "^7.0.1", - "postcss-minify-gradients": "^7.0.1", - "postcss-minify-params": "^7.0.4", - "postcss-minify-selectors": "^7.0.5", - "postcss-normalize-charset": "^7.0.1", - "postcss-normalize-display-values": "^7.0.1", - "postcss-normalize-positions": "^7.0.1", - "postcss-normalize-repeat-style": "^7.0.1", - "postcss-normalize-string": "^7.0.1", - "postcss-normalize-timing-functions": "^7.0.1", - "postcss-normalize-unicode": "^7.0.4", - "postcss-normalize-url": "^7.0.1", - "postcss-normalize-whitespace": "^7.0.1", - "postcss-ordered-values": "^7.0.2", - "postcss-reduce-initial": "^7.0.4", - "postcss-reduce-transforms": "^7.0.1", - "postcss-svgo": "^7.1.0", - "postcss-unique-selectors": "^7.0.4" + "postcss-colormin": "^7.0.10", + "postcss-convert-values": "^7.0.12", + "postcss-discard-comments": "^7.0.8", + "postcss-discard-duplicates": "^7.0.4", + "postcss-discard-empty": "^7.0.3", + "postcss-discard-overridden": "^7.0.3", + "postcss-merge-longhand": "^7.0.7", + "postcss-merge-rules": "^7.0.11", + "postcss-minify-font-values": "^7.0.3", + "postcss-minify-gradients": "^7.0.5", + "postcss-minify-params": "^7.0.9", + "postcss-minify-selectors": "^7.1.2", + "postcss-normalize-charset": "^7.0.3", + "postcss-normalize-display-values": "^7.0.3", + "postcss-normalize-positions": "^7.0.4", + "postcss-normalize-repeat-style": "^7.0.4", + "postcss-normalize-string": "^7.0.3", + "postcss-normalize-timing-functions": "^7.0.3", + "postcss-normalize-unicode": "^7.0.9", + "postcss-normalize-url": "^7.0.3", + "postcss-normalize-whitespace": "^7.0.3", + "postcss-ordered-values": "^7.0.4", + "postcss-reduce-initial": "^7.0.9", + "postcss-reduce-transforms": "^7.0.3", + "postcss-svgo": "^7.1.3", + "postcss-unique-selectors": "^7.0.7" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/cssnano-utils": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", - "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.3.tgz", + "integrity": "sha512-ynIREMICLxkxm7e9bCR9sh75s4Q5drICi0ua1yxo5jH2XPBqSKkl4dOh4EbFqtUmnTMhRffHgYL0EKKkMjtJTg==", "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/cssnano/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" + "postcss": "^8.5.13" } }, "node_modules/csso": { @@ -2628,9 +2382,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "dependencies": { "ms": "^2.1.3" @@ -2717,25 +2471,17 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { - "version": "1.5.199", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.199.tgz", - "integrity": "sha512-3gl0S7zQd88kCAZRO/DnxtBKuhMO4h0EaQIN3YgZfV6+pW+5+bf2AdQeHNESCoaQqo/gjGVYEf2YM4O5HJQqpQ==", + "version": "1.5.349", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.349.tgz", + "integrity": "sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==", "dev": true }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "node_modules/entities": { "version": "4.5.0", @@ -2749,13 +2495,21 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -2799,12 +2553,28 @@ "node": ">=6" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2829,7 +2599,6 @@ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -2842,22 +2611,22 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, "node_modules/fs-extra": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", - "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -2874,7 +2643,6 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -2888,7 +2656,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2902,6 +2669,42 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2918,11 +2721,10 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2941,7 +2743,6 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2954,7 +2755,6 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -2970,19 +2770,17 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/is-glob": { @@ -2990,7 +2788,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3003,7 +2800,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -3012,13 +2808,27 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, - "license": "ISC" + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "dependencies": { "universalify": "^2.0.0" @@ -3027,6 +2837,18 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -3064,18 +2886,41 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, + "node_modules/lru-cache": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "dev": true, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "dev": true }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -3087,9 +2932,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "dev": true, "funding": [ { @@ -3097,7 +2942,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -3106,9 +2950,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "dev": true }, "node_modules/nodemon": { @@ -3139,10 +2983,16 @@ "url": "https://opencollective.com/nodemon" } }, + "node_modules/nodemon/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "node_modules/nodemon/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -3150,9 +3000,9 @@ } }, "node_modules/nodemon/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3166,16 +3016,6 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3232,8 +3072,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" + "dev": true }, "node_modules/path-exists": { "version": "3.0.0", @@ -3249,7 +3088,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -3258,24 +3096,38 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, - "license": "MIT" + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -3286,15 +3138,14 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "dev": true, "funding": [ { @@ -3310,6 +3161,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3344,19 +3196,6 @@ "postcss": "^8.4" } }, - "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-calc": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", @@ -3373,19 +3212,6 @@ "postcss": "^8.4.38" } }, - "node_modules/postcss-calc/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-clamp": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", @@ -3429,61 +3255,160 @@ "postcss": "^8.0.0" } }, - "node_modules/postcss-cli/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "node_modules/postcss-cli/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=14" + "node": ">=8" + } + }, + "node_modules/postcss-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/postcss-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/postcss-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/postcss-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/postcss-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/postcss-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-cli/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-cli/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/postcss-cli/node_modules/postcss-load-config": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", - "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "node_modules/postcss-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "lilconfig": "^3.1.1", - "yaml": "^2.4.2" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - } + "node": ">=12" + } + }, + "node_modules/postcss-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.10.tgz", - "integrity": "sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", "dev": true, "funding": [ { @@ -3496,10 +3421,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3562,37 +3487,37 @@ } }, "node_modules/postcss-colormin": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.4.tgz", - "integrity": "sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.10.tgz", + "integrity": "sha512-yFr6JezOolHLta/buLE71VKPh2mXursp4saVe98/ol8ZnEWhL+racShqPKlvd/DKWLre/39B6HhcMXf7RZ3hxg==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "@colordx/core": "^5.4.3", + "browserslist": "^4.28.2", "caniuse-api": "^3.0.0", - "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-convert-values": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.6.tgz", - "integrity": "sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.12.tgz", + "integrity": "sha512-xurKu5qqk4viR3Cp3p4xBR4KfnZm4w4ys6+UBwBmeuBSNkH7+DtLnYOYnOffgtE4yx8sH9S1VZ6RAAvROXzP2Q==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.28.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-custom-media": { @@ -3680,19 +3605,6 @@ "postcss": "^8.4" } }, - "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-dir-pseudo-class": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", @@ -3718,87 +3630,61 @@ "postcss": "^8.4" } }, - "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-discard-comments": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", - "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.8.tgz", + "integrity": "sha512-CvvS5S9WrXblFXCEJ9nVo+4z+eA7zSC7Z88V1HEJuwlQhlFnYTIjg1xJY+BCUiG2bvICap2tXii4mP22BD108Q==", "dev": true, "dependencies": { - "postcss-selector-parser": "^7.1.0" + "postcss-selector-parser": "^7.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/postcss-discard-comments/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "postcss": "^8.5.13" } }, "node_modules/postcss-discard-duplicates": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", - "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.4.tgz", + "integrity": "sha512-VBNn1+EuMZkeGVVtz0gRfbNGtx9IFgAsAV+E2pHtXPrp4qfGBkhTIiAuE/wrb+Y6Pakg9NewAlfTpYIFAWODtw==", "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-discard-empty": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", - "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.3.tgz", + "integrity": "sha512-M2pyjQCU+/7cMHVtL6bKTHjv0lZnPLMpicgr67Dlth7AbuV9gjVTtUqaRwn6Pp6BwSDspUzhz8SaUrRykJU5Dw==", "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-discard-overridden": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", - "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.3.tgz", + "integrity": "sha512-aNovXo9UsZuRNLzHJtp13lHIvinDPfiXBPePpXkSjCbgp++iU2FqE+YxvjIsg6EdyPZsASFbfu+JcBFVsErXIQ==", "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-double-position-gradients": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.2.tgz", - "integrity": "sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", "dev": true, "funding": [ { @@ -3811,7 +3697,7 @@ } ], "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -3847,19 +3733,6 @@ "postcss": "^8.4" } }, - "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-focus-within": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", @@ -3885,19 +3758,6 @@ "postcss": "^8.4" } }, - "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-font-variant": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", @@ -3973,9 +3833,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.10.tgz", - "integrity": "sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", "dev": true, "funding": [ { @@ -3988,10 +3848,10 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.1.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -4001,6 +3861,45 @@ "postcss": "^8.4" } }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, "node_modules/postcss-logical": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", @@ -4027,56 +3926,43 @@ } }, "node_modules/postcss-merge-longhand": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", - "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.7.tgz", + "integrity": "sha512-b3mfYUxR388u5Pt0HPcVIUtUDn/k15UfTY9M+ORW+meCR6JLNxoZffiYvXyOYQoRYQNZyX/UFkMCM/mNHxe1qA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^7.0.5" + "stylehacks": "^7.0.11" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-merge-rules": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.6.tgz", - "integrity": "sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.11.tgz", + "integrity": "sha512-SJUPM18g2BmPhf8BVlbwqWz4aK3pLu6u6xjfwEzra7xL6IBR10sUaiB++EzqcVfadPHrKBSMlNdP+XieykhI+Q==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.28.2", "caniuse-api": "^3.0.0", - "cssnano-utils": "^5.0.1", - "postcss-selector-parser": "^7.1.0" + "cssnano-utils": "^5.0.3", + "postcss-selector-parser": "^7.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "postcss": "^8.5.13" } }, "node_modules/postcss-minify-font-values": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", - "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.3.tgz", + "integrity": "sha512-yilG/VOaNI74IylQvAQQxm3/wZVBkXyYUqNUAdxqwtbWUXPsbK1q8Ms0mL83v+f8YicgcyfYCRZtWACUdYajpA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4085,125 +3971,65 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-minify-gradients": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz", - "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.5.tgz", + "integrity": "sha512-YraROyQRg3BI1+Hg8E05B/JPdnTm8EDSVu4P2BxdM+CRiOyfmou809+chGIqo6fQqwjPGQ947nbGncSjmTU1WQ==", "dev": true, "dependencies": { - "colord": "^2.9.3", - "cssnano-utils": "^5.0.1", + "@colordx/core": "^5.4.3", + "cssnano-utils": "^5.0.3", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-minify-params": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.4.tgz", - "integrity": "sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.9.tgz", + "integrity": "sha512-R8itbB8BhlpoYyBm1ou0dD+vJnQ3F6adQipR4UnkCHUwlo+S9WXJaDRg1RHjC8YVAtIdrQzSWvJl40HnGDTKjA==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", - "cssnano-utils": "^5.0.1", + "browserslist": "^4.28.2", + "cssnano-utils": "^5.0.3", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-minify-selectors": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz", - "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "postcss-selector-parser": "^7.1.0" - }, - "engines": { - "node": "^18.12.0 || ^20.9.0 || >=22.0" - }, - "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-nesting": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", - "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "dependencies": { - "@csstools/selector-resolve-nested": "^3.1.0", - "@csstools/selector-specificity": "^5.0.0", - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", - "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.1.2.tgz", + "integrity": "sha512-aQtrEWKwqafNlExcKHQvPGsXR2+vlUqqJtf5XsCQcgsSb5PL4wlujWBYDJuWsP4UnQX1YHDHU8qRlD+1PzTQ+Q==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-api": "^3.0.0", + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.1" + }, "engines": { - "node": ">=18" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss-selector-parser": "^7.0.0" + "postcss": "^8.5.13" } }, - "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", "dev": true, "funding": [ { @@ -4215,42 +4041,34 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, "engines": { "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^7.0.0" - } - }, - "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "postcss": "^8.4" } }, "node_modules/postcss-normalize-charset": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", - "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.3.tgz", + "integrity": "sha512-NoBfZu8PR4c2NlmjvrqQTzCzLY79hwcSRgNQ3ZiNK0ABzf9kYKloE/jNj+/8GQY1wsm8pRRgANk6ydLH8cwo0Q==", "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-display-values": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", - "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.3.tgz", + "integrity": "sha512-ldsCX0QIt05pKIOobZtVQ48wXJecr+czw4+e1/YjVhLMqslShgpVxgPtI2CefURR8oyVoYaU/l829MMwExDMLw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4259,13 +4077,13 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-positions": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", - "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.4.tgz", + "integrity": "sha512-VEvlpeGd3Ju1Hqa/oN4jaP3+ms4laYwkEL9N9u+B6k54PZjXbW1n6wI+aVprf1BQXlCYpS5+1pl/7/vHiKgARg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4274,13 +4092,13 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-repeat-style": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", - "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.4.tgz", + "integrity": "sha512-6mPKlY/8cSaDHxX502wERADarJsccwlky6yIrOapHH2ZgfoKAV94SbiTKfKEs4EEpdazuc3J72WsqeYk7hp9+Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4289,13 +4107,13 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-string": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", - "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.3.tgz", + "integrity": "sha512-HnEQPUchi1eznmDKEYrKUTqrprEq97SrpUYClgUkv7V2zRODD9DFoUsYU+m9ZOetmD5ku7fEMZB/lwy8IT6xVQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4304,13 +4122,13 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-timing-functions": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", - "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.3.tgz", + "integrity": "sha512-zmEzHdvpZBZu0OKlbJSfgASQvaayyAoVuWtvyr34IJ/LyS+DaOKvvR3EvFJ9RWWtNIx+CMvO125OVophaxNYew==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4319,29 +4137,29 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-unicode": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.4.tgz", - "integrity": "sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.9.tgz", + "integrity": "sha512-DRAdWfeh/TjmhLJsw91vdiWCnUod9iwvM7xyS02/nF/sLsCR3A8l3pztrSUrWG8DSBqfX7yEk9FM0USaVJ2mSg==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.28.2", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-url": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", - "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.3.tgz", + "integrity": "sha512-CL93wmloq5qsffmFv+bw24MIRbmhHrp53qoh1LDAb/5TtjWEXI/np4xcP/Gw9oWCb2XyWnqHYLDUwiKRoJBA1Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4350,13 +4168,13 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-normalize-whitespace": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", - "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.3.tgz", + "integrity": "sha512-FdHjjn+Ht5Z2ZRjNOmeCbNq6lq09sUYKpmlF/Aq0XjVNSLTL6fmHlA/3swN2wP2caY9GV/tjSDcIIyS7aN7W0A==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4365,7 +4183,7 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-opacity-percentage": { @@ -4391,19 +4209,19 @@ } }, "node_modules/postcss-ordered-values": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", - "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.4.tgz", + "integrity": "sha512-nubSi49hDHQk4E8KIj+IbLY8Bg+8OcSUEhgyolgM+atnOvXjV7EjaR6bac4YGZoFyPa9mWoAF3EaYbWdFkKqVg==", "dev": true, "dependencies": { - "cssnano-utils": "^5.0.1", + "cssnano-utils": "^5.0.3", "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-overflow-shorthand": { @@ -4578,39 +4396,26 @@ "postcss": "^8.4" } }, - "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-reduce-initial": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz", - "integrity": "sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.9.tgz", + "integrity": "sha512-ztTNPdIxXTxtBcG03E9u8v44M4ElXbMIRT7pf2onlquGula0Y83nKKxqM22FA/hMgkfCjN7ohevkVlaNwI8iOQ==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.28.2", "caniuse-api": "^3.0.0" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-reduce-transforms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", - "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.3.tgz", + "integrity": "sha512-FXsnN9ZwcZTT8Yf8cAHA8qIGUXcX6WfLd9JoYhrdDfmvsVhhfqkkv7m4AC3rwFOfz+GzkUa87OCKF9dUcicd+g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -4619,7 +4424,7 @@ "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-replace-overflow-wrap": { @@ -4682,23 +4487,10 @@ "postcss": "^8.4" } }, - "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -4710,55 +4502,41 @@ } }, "node_modules/postcss-svgo": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.0.tgz", - "integrity": "sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.3.tgz", + "integrity": "sha512-2QfoFOYMcj8lwcVEf9WeTlkVIAm7u2QvOEhMzkQU3KUhhGX/l8hVV9EtjMv4iq3E9iI3OeeMN0YoMLbGusuigw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", - "svgo": "^4.0.0" + "svgo": "^4.0.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >= 18" }, "peerDependencies": { - "postcss": "^8.4.32" + "postcss": "^8.5.13" } }, "node_modules/postcss-unique-selectors": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz", - "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.7.tgz", + "integrity": "sha512-d+sCkaRnSefghOUdH8CMJZV9yUQhj2ojpe8Nw/lA+LV1UOfeleGkLTl6XdCFFSai9UJ+DJPb69FFuqthXYsY8w==", "dev": true, "dependencies": { - "postcss-selector-parser": "^7.1.0" + "postcss-selector-parser": "^7.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/postcss-unique-selectors/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "postcss": "^8.5.13" } }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/pretty-hrtime": { "version": "1.0.3", @@ -4790,91 +4568,18 @@ "purgecss": "bin/purgecss.js" } }, - "node_modules/purgecss/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/purgecss/node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "dev": true, - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purgecss/node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purgecss/node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", - "dev": true, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/purgecss/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "dev": true, - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purgecss/node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "node_modules/purgecss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, "node_modules/read-cache": { @@ -4882,7 +4587,6 @@ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -4892,7 +4596,6 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -4900,6 +4603,19 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4916,13 +4632,13 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4937,15 +4653,18 @@ } }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "engines": { + "node": ">=11.0.0" + } }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4965,7 +4684,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4978,7 +4696,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4988,7 +4705,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -5014,153 +4730,67 @@ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, + "node_modules/style-mod": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "dev": true + }, "node_modules/stylehacks": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.6.tgz", - "integrity": "sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.11.tgz", + "integrity": "sha512-iODNfhXVLqc5LADs+Y6Oh5wJuK5ZcHbVng8aiK3y9pjMQdc5hLrBW0eFU6FtnpNrE6PoEg/MmFTU4waotj5WNg==", "dev": true, "dependencies": { - "browserslist": "^4.25.1", - "postcss-selector-parser": "^7.1.0" + "browserslist": "^4.28.2", + "postcss-selector-parser": "^7.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, "peerDependencies": { - "postcss": "^8.4.32" - } - }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "postcss": "^8.5.13" } }, "node_modules/supports-color": { @@ -5180,7 +4810,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5189,9 +4818,9 @@ } }, "node_modules/svgo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", - "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", "dev": true, "dependencies": { "commander": "^11.1.0", @@ -5200,7 +4829,7 @@ "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", - "sax": "^1.4.1" + "sax": "^1.5.0" }, "bin": { "svgo": "bin/svgo.js" @@ -5223,19 +4852,19 @@ } }, "node_modules/thenby": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", - "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.4.1.tgz", + "integrity": "sha512-D5a/bO0KdalOE3q8MlrRmSxjbKZHT3MQmXkJP+r97Vw8MMwOZKOwUSEyTtK7eSMj2y0kyAjpYMRMZmmLw1FtNQ==", "dev": true }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -5244,38 +4873,11 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5308,9 +4910,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -5341,15 +4943,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" + "dev": true + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "dev": true }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5367,191 +4973,66 @@ "dev": true }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", + "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", "dev": true, - "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } diff --git a/gno.land/pkg/gnoweb/frontend/package.json b/gno.land/pkg/gnoweb/frontend/package.json index 5cfd5664080..28059d7bcaf 100644 --- a/gno.land/pkg/gnoweb/frontend/package.json +++ b/gno.land/pkg/gnoweb/frontend/package.json @@ -2,6 +2,12 @@ "name": "gnoweb", "devDependencies": { "@biomejs/biome": "2.0.5", + "@codemirror/commands": "^6.7.0", + "@codemirror/language": "^6.10.0", + "@codemirror/legacy-modes": "^6.4.0", + "@codemirror/state": "^6.5.0", + "@codemirror/theme-one-dark": "^6.1.0", + "@codemirror/view": "^6.34.0", "@fullhuman/postcss-purgecss": "^7.0.2", "chokidar-cli": "^3.0.0", "cssnano": "^7.1.0", diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 52f25f8d04b..20c3e8e64cd 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,16 +1,27 @@ -import{BaseController as l}from"./controller.js";var r="gnomod.toml",c=`package main -`,a=class extends l{connect(){this.files=[],this.activeFile=0,this.codeEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),!(!this.codeEl||!this.outputEl||!this.tabsEl)&&(this._parseInitialCode(),this._setupKeyboardShortcuts(),this.renderTabs())}_parseInitialCode(){let t=this.codeEl.value;if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i{if(t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.runCode();return}if(t.key==="Tab"&&!t.shiftKey){t.preventDefault();let e=this.codeEl.selectionStart,i=this.codeEl.selectionEnd;this.codeEl.value=`${this.codeEl.value.substring(0,e)} ${this.codeEl.value.substring(i)}`,this.codeEl.selectionStart=this.codeEl.selectionEnd=e+1}})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this.codeEl.value;let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this.codeEl.value=this.files[e].content,this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((e,i)=>{let n=document.createElement("button");n.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,n.textContent=e.name,n.addEventListener("click",()=>this._switchToFile(e.name)),this.tabsEl.appendChild(n)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this.tabsEl.appendChild(t)}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. helper.gno):");if(t==null||this._switchToFile(t))return;let e=t===r;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",n=c;e&&(n=`module = "${i}/r/yourname/pkg" -gno = "0.9"`),this.files[this.activeFile].content=this.codeEl.value,this.files.push({name:t,content:n}),this.activeFile=this.files.length-1,this.codeEl.value=this.files[this.activeFile].content,this.renderTabs()}async runCode(){this.files[this.activeFile].content=this.codeEl.value,this._setOutput("Running...");let t=this.codeEl.value,e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",n=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${n}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. +var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=Kh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ne(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` +`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function Kh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function _h(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return _h(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new Ki(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},Ki=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},_i=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof Ki)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),ko=M.define(),vo=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(ko),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=_i.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=_i.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(vo)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=vo;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=ko;pe.reconfigure=j.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new ji(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new ji(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},ks=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),vs=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),vn=!!(ll||vs||ks),Bo=!vn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!vn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!vn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:vn,ie_version:ll?xs.documentMode||6:vs?+vs[1]:ks?+ks[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ve(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ve(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ve=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ve.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function Ke(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?ki(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),vi=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},vf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return vf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ve){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ke{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ke{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==_.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],v=a?A.right-b.left:b.right-A.left;v>l&&(l=v,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?_.RTL:_.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ke{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==_.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==_.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return ki(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:ki(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:_f(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(vi).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&_e(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&_e(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&_e(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function _f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var Ks=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&ql.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",ql=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var _s=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(vi).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(kl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),Kl=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),_l(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function _l(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(vl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new _s(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(Ko+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=Kl?null:t.clipboardData;return e?(_l(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Kl?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,K.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,K.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,K.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==K.ByPosNoHeight?K.ByPosNoHeight:K.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?_.RTL:_.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:v}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||v>.005&&Math.abs(this.scaleY-v)>.005)&&(this.scaleX=A,this.scaleY=v,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:v,charWidth:k,textHeight:I}=t.docView.measureTextSize();o=v>0&&s.refresh(r,v,k,I,Math.max(5,T/k),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let v of this.viewports){let k=v.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(v);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(v.from,k))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,K.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,K.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,K.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=_.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let v of t)v.from>=f.from&&v.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,K.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),K.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,K.ByPos,t,0,0).top,f=e.lineAt(a,K.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&_e(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new Ks(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&_e(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==_.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=vl;D.dragMovesSelection=kl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=vi;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:_.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,vc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},vc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",ql.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==_.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==_.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),v=m?T(null,e.to,m):P(p,!0),k=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pt,nt),v==null&&pt>=H,Ht.dir)}if(q=ft.to+1,q>=nt)break}return W.length==0&&E(O,A==null,H,v==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,v){let k=l.top+(v?A.top:A.bottom);return{top:k,bottom:k,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var fp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var cp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==_.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new kn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new kn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},kn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(qe).formatNumber(t,n.state)}var Fc=on.compute([qe],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(qe)!=t.state.facet(qe),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(qe).domEventHandlers,side:"before"}));function na(n={}){return[qe.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return _c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||vr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new qt(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof qt)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof qt?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||vr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function vr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||vr(t))}function _c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,v,k,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];k.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-v,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,q,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,q-H,nt)}k.push(Ht),I.push(pt)}function u(A,v,k,I){let L=[],W=0,E=-1;for(;l.pos>v;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;k.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,v){return(k,I,L)=>{let W=0,E=k.length-1,O,H;if(E>=0&&(O=k[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,k,I,L,W,v)}}function p(A,v,k,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(v.pop()+k-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),v.push(L-k)}function g(A,v,k,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,v,k,I,E)}function m(A,v){let k=l.fork(),I=0,L=0,W=0,E=k.end-s,O={size:0,start:0,skip:0};t:for(let H=k.pos-A;k.pos>H;){let N=k.size;if(k.id==v&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,k.next();continue}let q=k.pos-N;if(N<0||q=o?4:0,ft=k.start;for(k.next();k.pos>q;){if(k.size<0)if(k.size==-3||k.size==-4)nt+=4;else break t;else k.id>=o&&(nt+=4);k.next()}L=ft,I+=N,W+=nt}return(v<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,v,k){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)k=b(A,v,k)}v[--k]=O,v[--k]=W-A,v[--k]=L-A,v[--k]=I}else E==-3?h=I:E==-4&&(f=I);return k}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;v+=k}if(T==P+1){if(v>f){let k=p[P];d(k.children,k.positions,0,k.children.length,g[P]+C);continue}c.push(p[P])}else{let k=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,k,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},kr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var yp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),Kt=x(),_t=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:Kt,self:x(Kt),null:x(Kt),atom:x(Kt),unit:x(Kt),modifier:x(Kt),operatorKeyword:x(Kt),controlKeyword:x(Kt),definitionKeyword:x(Kt),moduleKeyword:x(Kt),operator:_t,derefOperator:x(_t),arithmeticOperator:x(_t),logicOperator:x(_t),bitwiseOperator:x(_t),compareOperator:x(_t),updateOperator:x(_t),definitionOperator:x(_t),typeOperator:x(_t),controlOperator:x(_t),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var xp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var va=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(va=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=va(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`&&(e="");else{let i=e.indexOf(` +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],vu=new Dn(Ri),xa=[],ka=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=ka[s];if(r)return r.id;let o=ka[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Op={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:_.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:_.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(_a,0);var Du=jr((n,t)=>_a(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function _a(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?Kr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),Kr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=kt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,kt)}static selection(t){return new n(void 0,kt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var kt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=kt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:kt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):kt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==_.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var Fp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function _u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function qn(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;_u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>qn(n.state,t,!it(n))),ju=n=>Nt(n,t=>qn(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),_r=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function vt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return vt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return vt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>vt(n,t=>qn(n.state,t,!it(n))),sd=n=>vt(n,t=>qn(n.state,t,it(n)));function ch(n,t){return vt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return vt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>vt(n,t=>ae(n,t,!0)),od=n=>vt(n,t=>ae(n,t,!1)),ld=n=>vt(n,t=>ae(n,t,!it(n))),ad=n=>vt(n,t=>ae(n,t,it(n))),hd=n=>vt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>vt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),qa=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=Kn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},vd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Kn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of Kn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function kh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of Kn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>kh(n,t,!1),Md=({state:n,dispatch:t})=>kh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(Kn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var Ka=vh(!1),Od=vh(!0);function vh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:vd},{key:"Ctrl-v",run:_r}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:qa},{mac:"Ctrl-ArrowDown",run:_r,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:_r,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:qa},{key:"Enter",run:Ka,shift:Ka},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function _n(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=_n),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=_n;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||_n)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=_n&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",_d="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:_d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main +`,Yd=Li.define(Eh),Xd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Xd:Yd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this._parseInitialCode(t.value),this._createEditor(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((e,i)=>{let s=document.createElement("button");s.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,s.textContent=e.name,s.addEventListener("click",()=>this._switchToFile(e.name)),this.tabsEl.appendChild(s)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this.tabsEl.appendChild(t)}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} -Files: ${this.files.map(s=>s.name).join(", ")} +Files: ${this.files.map(r=>r.name).join(", ")} To deploy and test: - gnokey maketx addpkg -pkgpath "${n}/r/yourname/pkg" ...`)}else this._setOutput(`Package: ${i} -Files: ${this.files.map(s=>s.name).join(", ")} + gnokey maketx addpkg -pkgpath "${s}/r/yourname/pkg" ...`)}else this._setOutput(`Package: ${i} +Files: ${this.files.map(r=>r.name).join(", ")} To run locally: - gno run ${this.files.map(s=>s.name).join(" ")} + gno run ${this.files.map(r=>r.name).join(" ")} To test: gno test .`)}runTests(){this._setOutput(`Testing requires a running gno node. @@ -19,8 +30,8 @@ To test locally: gno test .`)}formatCode(){this._setOutput(`Formatting requires server-side gno fmt (coming soon). To format locally: - gno fmt -w `+this.files[this.activeFile].name)}shareCode(){this.files[this.activeFile].content=this.codeEl.value;let t=this.files.length===1?this.files[0].content:this.files.map(s=>`// --- ${s.name} --- -${s.content}`).join(` + gno fmt -w `+this.files[this.activeFile].name)}shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(r=>`// --- ${r.name} --- +${r.content}`).join(` -`),e=new TextEncoder().encode(t),i=Array.from(e,s=>String.fromCharCode(s)).join(""),n=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(i))}`;navigator.clipboard.writeText(n).then(()=>{this._setOutput("Share URL copied to clipboard!")}).catch(()=>{this._setOutput(`Share URL: -${n}`)})}clearOutput(){this._setOutput("// Run code to see output here")}};export{a as PlaygroundController}; +`),e=new TextEncoder().encode(t),i=Array.from(e,r=>String.fromCharCode(r)).join(""),s=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(i))}`;navigator.clipboard.writeText(s).then(()=>{this._setOutput("Share URL copied to clipboard!")}).catch(()=>{this._setOutput(`Share URL: +${s}`)})}clearOutput(){this._setOutput("// Run code to see output here")}};export{Vh as PlaygroundController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-theme.js b/gno.land/pkg/gnoweb/public/js/controller-theme.js index 956c31a8050..fad3a38a48f 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-theme.js +++ b/gno.land/pkg/gnoweb/public/js/controller-theme.js @@ -1 +1 @@ -import{BaseController as a}from"./controller.js";var i="theme",m="theme",l=365*24*60*60,o="system",n=["system","light","dark"];function f(s){return s==="system"||s==="light"||s==="dark"}var h=class extends a{connect(){let{sun:e,moon:t,system:r}=this.initializeDOM({sun:this.getTarget("sun"),moon:this.getTarget("moon"),system:this.getTarget("system")});this.sun=e,this.moon=t,this.system=r;try{let c=localStorage.getItem(i);this.preference=f(c)?c:o}catch{this.preference=o}window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{this.preference==="system"&&this.applyTheme()}),this.applyTheme()}toggle(){let e=n.indexOf(this.preference);this.preference=n[(e+1)%n.length];try{localStorage.setItem(i,this.preference)}catch{}this.applyTheme()}resolveTheme(){return this.preference==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":this.preference==="dark"?"dark":"light"}applyTheme(){let e=this.resolveTheme();document.documentElement.setAttribute("data-theme",e),this.setCookie(e,l);for(let[t,r]of[[this.sun,"light"],[this.moon,"dark"],[this.system,"system"]])t?.classList.toggle("u-hidden",this.preference!==r)}setCookie(e,t){let r=location.protocol==="https:"?";Secure":"";document.cookie=`${m}=${e};path=/;max-age=${t};SameSite=Lax${r}`}};export{h as ThemeController}; +import{BaseController as a}from"./controller.js";var i="theme",m="theme",l=365*24*60*60,o="system",n=["system","light","dark"];function f(s){return s==="system"||s==="light"||s==="dark"}var h=class extends a{connect(){let{sun:e,moon:t,system:r}=this.initializeDOM({sun:this.getTarget("sun"),moon:this.getTarget("moon"),system:this.getTarget("system")});this.sun=e,this.moon=t,this.system=r;try{let c=localStorage.getItem(i);this.preference=f(c)?c:o}catch{this.preference=o}window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{this.preference==="system"&&this.applyTheme()}),this.applyTheme()}toggle(){let e=n.indexOf(this.preference);this.preference=n[(e+1)%n.length];try{localStorage.setItem(i,this.preference)}catch{}this.applyTheme()}resolveTheme(){return this.preference==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":this.preference==="dark"?"dark":"light"}applyTheme(){let e=this.resolveTheme();document.documentElement.setAttribute("data-theme",e),this.setCookie(e,l);for(let[t,r]of[[this.sun,"light"],[this.moon,"dark"],[this.system,"system"]])t?.classList.toggle("u-hidden",this.preference!==r);this.dispatch("theme:changed",{theme:e})}setCookie(e,t){let r=location.protocol==="https:"?";Secure":"";document.cookie=`${m}=${e};path=/;max-age=${t};SameSite=Lax${r}`}};export{h as ThemeController}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index 8ca5df391d0..42307ed9300 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -1,6 +1,6 @@ -:root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-muted:var(--g-color-gray-300,#999);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-muted:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:grey}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}a.b-banner:hover{opacity:.9;-webkit-text-decoration:underline;text-decoration:underline}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:1760px){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1580 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);max-width:10ch;order:3;outline:none;field-sizing:content}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) +:root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-muted:var(--g-color-gray-300,#999);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-muted:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:gray}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}a.b-banner:hover{opacity:.9;-webkit-text-decoration:underline;text-decoration:underline}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:1760px){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1580 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);field-sizing:content;max-width:10ch;order:3;outline:none}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) .nav-theme-label:before{content:"System"}.b-footer .legal{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);margin-top:var(--g-space-3);padding-top:var(--g-space-3)}.b-footer .legal>nav{color:var(--s-color-text-secondary);display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3);margin-top:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .legal>nav{flex-direction:row}.b-footer .legal>nav>a+a:before{color:var(--s-color-text-quaternary);content:"|";margin-right:var(--g-space-3)}}.b-footer .legal>nav:nth-child(3){grid-column:span 2/span 2}.b-footer .legal>:last-child:not(ul),.b-footer .legal>nav li{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.b-footer .legal>:last-child:not(ul){flex-basis:100%}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .legal>:last-child:not(ul){flex-basis:auto;grid-column:span 1/span 1}}.b-footer a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-content-header{display:flex;flex-direction:column;gap:var(--g-space-3);grid-row:span 1/span 1;margin-bottom:var(--g-space-6);margin-top:var(--g-space-10)}@media (min-width:calc(820 / 16 * 1rem)){.b-content-header{grid-column:span 7/span 7;grid-row-start:1;justify-content:space-between;margin-top:var(--g-space-10)}}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header{align-items:center;flex-direction:row}}.b-content-header .title{align-items:center;display:flex;gap:var(--g-space-3)}.b-content-header .header-info{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-12);justify-content:space-between}.b-content-header .b-inline-btn>span{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header .b-inline-btn>span{display:inline}}.b-content-h1{font-size:var(--g-font-size-600);text-align:center}.b-content-h1,.b-content-h2{color:var(--s-color-text-primary);font-weight:var(--g-font-bold)}.b-content-h2{font-size:var(--g-font-size-400);margin-bottom:var(--g-space-4)}.b-btns{align-items:center;display:flex;gap:var(--g-space-1)}@media (min-width:calc(1020 / 16 * 1rem)){.b-btns{gap:var(--g-space-2)}}.b-btn{border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:inline-flex;gap:var(--g-space-1-5);min-width:-moz-max-content;min-width:max-content;padding:var(--g-space-1) var(--g-space-2)}.b-btn:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-btn .c-icon{margin-left:0;margin-right:0}.b-btn--secondary:hover{background-color:var(--s-color-bg-surface-primary)}.b-inline-btn{color:var(--s-color-text-tertiary);cursor:pointer}.b-inline-btn:hover{color:var(--s-color-text-tertiary-hover)}.b-switch input,.b-switch label:last-child{display:none}.b-switch input+label,.b-switch input:checked~label:last-child{display:block}.b-switch input:checked+label{display:none}.b-block-form,.b-inline-form{color:var(--s-color-text-tertiary);display:flex;flex-direction:column;gap:var(--g-space-2) var(--g-space-3)}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form,.b-inline-form{flex-direction:row}}.b-block-form{align-items:stretch}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form{flex-direction:column}}.b-input{border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:flex;font-size:var(--g-font-size-100);min-width:var(--g-space-48);overflow:hidden;position:relative}.b-input>svg{height:var(--g-space-4);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:var(--g-space-4)}.b-input>svg:first-child{left:var(--g-space-2)}.b-input>svg:last-child{right:var(--g-space-2)}.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:has(input:focus),.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input:has(input:focus)>label,.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input>label{align-items:center;background-color:var(--s-color-bg-surface-secondary);gap:var(--g-space-3);white-space:nowrap}.b-input>input,.b-input>label,.b-input>select{display:flex;padding:var(--g-space-1-5) var(--g-space-3)}.b-input>input,.b-input>select{color:inherit;outline:none;width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-input>input,.b-input>select{padding:var(--g-space-1-5) var(--g-space-2)}}.b-input>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-surface-secondary);cursor:pointer}.b-input>select:hover{background-color:var(--s-color-bg-surface-primary)}.b-input>input{background-color:var(--s-color-bg-base);border-left:none}.b-input>label+input{border-left:var(--s-border)}.b-list{margin-bottom:var(--g-space-10)}.b-list>li{border-bottom:var(--s-border);color:var(--s-color-text-tertiary)}.b-list>li:first-child{border-top:var(--s-border)}.b-list>li>a{align-items:center;display:flex;justify-content:space-between;padding:var(--g-space-2)}.b-list>li>a:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-list>li>a .c-icon{margin-left:0}.b-list .name{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:var(--s-color-text-secondary);margin-left:var(--g-space-1);max-width:100%;overflow:hidden;text-overflow:ellipsis}.b-user-sidebar{margin-top:var(--g-space-4)}.b-user-sidebar>*+*{margin-top:var(--g-space-8)}.b-user-sidebar .user-avatar{border:var(--s-border);border-radius:var(--s-rounded);height:var(--g-space-24);width:var(--g-space-24)}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .user-avatar{height:var(--g-space-36);width:var(--g-space-36)}}.b-user-sidebar .user-avatar img,.b-user-sidebar .user-avatar svg{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.b-user-sidebar .user-info{align-items:flex-start;display:flex;gap:var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info{flex-direction:column}}.b-user-sidebar .user-info>div:last-child{align-self:flex-end}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info>div:last-child{align-self:flex-start}}.b-user-sidebar .title{color:var(--s-color-text-primary);display:bock;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);line-height:var(--g-line-height-tight);text-transform:capitalize;word-break:break-all}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .title{font-size:var(--g-font-size-800)}}.b-user-sidebar .subtitle{color:var(--s-color-text-secondary);display:block;font-size:var(--g-font-size-100);line-height:var(--g-line-height-tight);margin-top:var(--g-space-2)}.b-user-sidebar>a{align-items:center;display:flex;justify-content:center}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar>a{display:inline-flex}}.b-sidebar{border-bottom:var(--s-border);grid-column:span 1/span 1;padding-bottom:var(--g-space-10);position:relative}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar{border-bottom:none;grid-column:span 3/span 3;grid-row:span 2/span 2;grid-row-start:1;height:100%;margin-bottom:0;order:2;padding-bottom:0}.b-sidebar+md-renderer:empty+*{grid-row-start:1;padding-top:var(--g-space-6)}.b-sidebar+md-renderer:empty+*,.b-sidebar+md-renderer:has(.b-btn:only-child)+*{grid-row-start:1;padding-top:var(--g-space-6)}}.b-sidebar:first-child{margin-top:var(--g-space-8)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar:first-child{margin-top:0}}.b-sidebar>div{padding-top:var(--g-space-2);position:sticky;top:var(--g-space-14)}.b-sidebar>div:has(.inner):not(:has(nav li)){display:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar>div{padding-bottom:var(--g-space-2)}}.b-sidebar .inner{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded-sm);max-height:100vh;overflow:scroll;scrollbar-width:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner{background-color:var(--g-color-transparent)}}.b-sidebar .inner>nav{display:none;font-size:var(--g-font-size-100);margin-top:var(--g-space-2);padding:var(--g-space-2) var(--g-space-4) var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner>nav{display:block;margin-top:0;padding-bottom:var(--g-space-28);padding-left:0;padding-right:0}.b-sidebar .inner>nav>*{padding-left:0}}.b-sidebar .b-expend-btn{align-items:center;background-color:var(--s-color-bg-base);border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;padding:var(--g-space-2) var(--g-space-4)}.b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .b-expend-btn{border:none;cursor:default;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-top:var(--g-space-10);padding:0}.b-sidebar .b-expend-btn,.b-sidebar .b-expend-btn:hover{background-color:var(--g-color-transparent)}}.b-sidebar .b-expend-btn:has(#toc-expend:checked)+nav{display:block}.b-sidebar .b-expend-btn>input{display:none}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon:before{content:"close"}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon>svg{transform:rotate(180deg)}.b-sidebar .wrapper-icon{align-items:center;display:flex;gap:var(--g-space-1-5)}.b-sidebar .wrapper-icon:before{content:"open"}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .wrapper-icon{display:none}}.dev-mode .b-sidebar .b-expend-btn{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.dev-mode .b-sidebar .b-expend-btn{background-color:var(--g-color-transparent)}}.dev-mode .b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-primary)}.b-source-code{font-family:var(--g-font-mono)}.b-source-code>pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);overflow:scroll;padding:var(--g-space-4) var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-source-code>pre{font-size:var(--g-font-size-200);padding:var(--g-space-8) var(--g-space-3)}}.b-source-code>pre a:hover{-webkit-text-decoration:none;text-decoration:none}[data-theme=dark] .b-source-code>pre{background-color:var(--s-color-bg-base)}.b-toc{list-style:none;margin-top:var(--g-space-2)}.b-toc>*+*{margin-bottom:var(--g-space-1-5);margin-top:var(--g-space-1-5)}.b-toc .b-toc{border-left:1px solid var(--s-color-border-secondary);margin-bottom:var(--g-space-4);padding-left:var(--g-space-4)}.b-toc a>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b-toc a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}main.dev-mode .b-toc a{word-break:break-all}.b-source-toc>.b-toc{margin-bottom:var(--g-space-4)}.b-source-toc>*+*{margin-top:var(--g-space-1-5)}.b-source-toc .accordion summary>svg{transform:rotate(-90deg)}.b-source-toc .accordion summary:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-source-toc .accordion[open] summary>svg{transform:rotate(0deg)}.b-source-toc .accordion>.b-toc{padding-left:var(--g-space-5)}.b-source-toc .accordion h3{font-size:var(--g-font-size-100);font-weight:var(--g-font-medium);margin-top:0}.b-action-overview{margin-bottom:var(--g-space-12)}.b-action-overview>p{font-size:var(--g-font-size-200)}.b-action-function{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);margin-bottom:var(--g-space-3);padding:var(--g-space-4)}.b-action-function .title{align-items:baseline;display:flex;flex-wrap:wrap;font-size:var(--g-font-size-50);gap:var(--g-space-1) var(--g-space-4);margin-bottom:var(--g-space-1)}.b-action-function>header{align-items:flex-start;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;margin-bottom:var(--g-space-4)}.b-action-function>header .signature>code{color:var(--s--text-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-action-function>header .signature{font-size:var(--g-font-size-50)}}.b-action-function>header h2{color:var(--s-color-text-primary);font-size:var(--g-font-size-300);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight)}.b-action-function .description{color:var(--s-color-text-secondary);font-size:var(--g-font-size-200)}.b-action-function .params{align-items:stretch;color:var(--s-color-text-tertiary);display:flex;flex-direction:column;font-size:var(--g-font-size-100);gap:var(--g-space-1);margin-bottom:var(--g-space-1);margin-top:var(--g-space-6);width:100%}.b-action-function .params label{background-color:var(--s-color-bg-surface-primary)}.b-action-function .params .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .params .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .b-alert{background-color:var(--s-color-bg-warning-weak);border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-left-color:var(--s-color-border-warning);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);color:var(--s-color-text-warning);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.b-action-function .b-alert>h1:first-child,.b-action-function .b-alert>h2:first-child,.b-action-function .b-alert>h3:first-child{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2)}.b-action-function .b-alert .b-btn,.b-action-function .b-alert label{background-color:var(--s-color-bg-warning-action);border:none;color:var(--s-color-bg-warning-weak);cursor:pointer}.b-action-function .b-alert .b-btn{margin-top:var(--g-space-4)}.b-code{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);position:relative}.b-code pre{color:var(--s-color-text-secondary);padding:var(--g-space-4);padding-right:var(--g-space-10);white-space:pre-wrap}.b-code .btn-copy{background-color:var(--g-color-transparent);color:var(--s-color-text-tertiary);cursor:pointer;padding:0;position:absolute;right:var(--g-space-2);top:var(--g-space-2)}.b-code .btn-copy:hover{color:var(--s-color-text-primary)}.b-packages{min-height:var(--g-space-96);padding-bottom:var(--g-space-24);scroll-margin-block-start:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages{grid-column:span 7/span 7}}.b-packages .title{color:var(--s-color-text-primary);display:block;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .title{font-size:var(--g-font-size-800)}}.b-packages nav{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--g-space-3);gap:var(--g-space-3);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages nav{border-bottom:var(--s-border);padding-bottom:var(--g-space-2)}}.b-packages .packages-tabs{border-bottom:var(--s-border);color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);gap:var(--g-space-4);grid-column:span 4/span 4;padding-bottom:var(--g-space-2);width:auto}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-tabs{border-bottom:none;font-size:var(--g-font-size-100);grid-column:span 2/span 2;padding-bottom:0;width:100%}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs{gap:var(--g-space-6);margin-left:0;width:100%}}.b-packages .packages-tabs label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-1);position:relative}.b-packages .packages-tabs label:hover{color:var(--s-color-text-tertiary-hover)}.b-packages .packages-tabs label .b-tag--secondary{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs label .b-tag--secondary{display:inline}}.b-packages .packages-filters{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);grid-column:span 2/span 2}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-filters{grid-column:span 1/span 1}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters{justify-content:flex-end}}.b-packages .packages-filters>div{display:grid}.b-packages .packages-filters label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-0-5);grid-column:1/1;grid-row:1/1;justify-content:space-between}.b-packages .packages-filters label:hover>*{color:var(--s-color-text-tertiary-hover)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters label span{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-packages .packages-filters label span{display:inline}}.b-packages .packages-search{display:flex;font-size:var(--g-font-size-100);grid-column:span 2/span 2;position:relative}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 3/span 3}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 1/span 1}}.b-packages .range{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-gap:var(--g-space-2);color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);gap:var(--g-space-2)}.b-packages .range:before{color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-200);font-weight:var(--g-font-weight-bold);grid-column:1/-1;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);text-align:center;width:100%}.b-packages .range:after{content:"Add a package to your namespace to get started";display:none;font-size:var(--g-font-size-100);grid-column:1/-1;text-align:center}.b-packages .range:empty:before{content:"No packages found";display:block}.b-packages .range:empty:after{content:"Add a package to your namespace to get started";display:block}.b-packages article{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded);display:flex;flex-direction:column;gap:var(--g-space-6);padding:var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages article{gap:var(--g-space-2)}}.b-packages article .article-content{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded-sm);display:flex;flex-direction:column;height:100%;padding:var(--g-space-2);width:100%}.b-packages article .article-content .title{align-items:center;display:flex;gap:var(--g-space-2);margin-bottom:var(--g-space-1);overflow:hidden;width:100%}.b-packages article .article-content h3{font-size:var(--g-font-size-200);font-weight:var(--g-font-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article .article-content h3>a{color:var(--s-color-text-link-hover)}.b-packages article .article-content h3>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article .article-content>p{overflow:hidden;text-overflow:ellipsis;width:100%}.b-packages article .article-content>p>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article footer{display:flex;font-size:var(--g-font-size-50);gap:var(--g-space-1);justify-content:space-between;padding-bottom:var(--g-space-1);padding-left:var(--g-space-2);padding-right:var(--g-space-2)}.b-packages article footer time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article footer .size{text-align:right}.b-packages article,.b-packages li{display:none}.b-packages:has(input[value=packages]:checked) li{display:flex}.b-packages:has(input[value=packages]:checked) article{display:flex}.b-packages:has(input[value=realms]:checked) li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex:1;flex-direction:column;margin-bottom:var(--g-space-8);min-height:40vh;overflow:hidden}.b-playground-tabs{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto;padding:0 var(--g-space-1-5)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;flex:1}.b-playground-code{background-color:var(--s-color-bg-base);border:none;border-radius:var(--s-rounded);color:var(--s-color-text-secondary);flex:1;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;min-height:300px;outline:none;padding:var(--g-space-2);resize:none;-moz-tab-size:4;-o-tab-size:4;tab-size:4;width:100%}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-6);grid-column:1/-1;min-height:70vh}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-eval-result-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-functions{list-style:disc;padding-left:var(--g-space-4)}.b-eval-functions,.b-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-eval-history-list{justify-content:flex-start}.b-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto;padding:0 var(--g-space-1-5)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-6);grid-column:1/-1;min-height:70vh}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-eval-result-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-functions{list-style:disc;padding-left:var(--g-space-4)}.b-eval-functions,.b-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-eval-history-list{justify-content:flex-start}.b-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From 126d8d738e38a9a3d744968735f78c35c849157c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 11 May 2026 13:33:34 +0200 Subject: [PATCH 23/40] feat(gnoweb): change built-in playgroung tabs to be scrollable (#5621) This is an initial functional basic implementation for Playground scrollable tabs which should be improved in the future. It is required to be able to edit many files, for example when forking code. --- .../gnoweb/components/views/playground.html | 24 +++++- .../pkg/gnoweb/frontend/css/06-blocks.css | 77 ++++++++++++++++++- .../frontend/js/controller-playground.ts | 76 +++++++++++++++--- .../gnoweb/public/js/controller-playground.js | 22 +++--- gno.land/pkg/gnoweb/public/main.css | 2 +- 5 files changed, 172 insertions(+), 29 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index 3f764afc853..d5d0ac853e5 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -44,9 +44,27 @@

-
- - +
+
+ +
+
+ + + +
diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index f29cd195658..6ff40a83901 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2559,13 +2559,74 @@ main.dev-mode .b-toc a { margin-bottom: var(--g-space-8); } -.b-playground-tabs { +.b-playground-tabs-wrap { display: flex; align-items: center; gap: 0; border-bottom: 1px solid var(--s-color-border-default); + padding-left: var(--g-space-1-5); +} + +.b-playground-tabs { + flex: 0 1 auto; + min-width: 0; + display: flex; + align-items: center; + gap: 0; overflow-x: auto; - padding: 0 var(--g-space-1-5); + scroll-behavior: smooth; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } +} + +.b-playground-tabs-actions { + flex: 0 0 auto; + display: inline-flex; + align-items: center; + gap: 0; + margin-left: var(--g-space-1); + padding-bottom: var(--g-space-2); +} + +.b-playground-tabs-nav { + flex: 0 0 auto; + display: inline-flex; + align-items: center; + justify-content: center; + width: var(--g-space-6); + height: var(--g-space-6); + padding: 0; + border: none; + background: none; + cursor: pointer; + color: var(--s-color-text-tertiary); + transition: color var(--g-transition-fast); + + &:hover:not(:disabled) { + color: var(--s-color-text-secondary); + } + + &:disabled { + opacity: 0.3; + cursor: default; + } + + & .c-icon { + width: var(--g-space-3); + height: var(--g-space-3); + } +} + +.b-playground-tabs-nav--prev .c-icon { + transform: rotate(90deg); +} + +.b-playground-tabs-nav--next .c-icon { + transform: rotate(-90deg); } .b-playground-tab { @@ -2608,12 +2669,20 @@ main.dev-mode .b-toc a { } .b-playground-tab-add { - padding: var(--g-space-1) var(--g-space-2); + flex: 0 0 auto; + display: inline-flex; + align-items: center; + justify-content: center; + width: var(--g-space-6); + height: var(--g-space-6); + padding: 0; border: none; background: none; cursor: pointer; - font-size: var(--g-font-size-100); + font-size: var(--g-font-size-200); + line-height: 1; color: var(--s-color-text-muted); + transition: color var(--g-transition-fast); &:hover { color: var(--s-color-text-secondary); diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index bbf32827efa..4a8d709ddea 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -47,6 +47,9 @@ export class PlaygroundController extends BaseController { private declare mountEl: HTMLElement; private declare outputEl: HTMLElement; private declare tabsEl: HTMLElement; + private declare tabsWrapEl: HTMLElement; + private declare prevBtnEl: HTMLButtonElement; + private declare nextBtnEl: HTMLButtonElement; private declare view: EditorView; private declare langCompartment: Compartment; private declare themeCompartment: Compartment; @@ -59,12 +62,19 @@ export class PlaygroundController extends BaseController { this.mountEl = this.getTarget("code") as HTMLElement; this.outputEl = this.getTarget("output") as HTMLElement; this.tabsEl = this.getTarget("tabs") as HTMLElement; - if (!this.mountEl || !this.outputEl || !this.tabsEl || !initialCodeEl) { + this.tabsWrapEl = this.getTarget("tabs-wrap") as HTMLElement; + this.prevBtnEl = this.getTarget("prev-button") as HTMLButtonElement; + this.nextBtnEl = this.getTarget("next-button") as HTMLButtonElement; + if (!this.mountEl || !this.outputEl || !this.tabsEl || !initialCodeEl) return; - } + + this.mountEl.addEventListener("focusin", () => + this._scrollActiveTabIntoView(), + ); this._parseInitialCode(initialCodeEl.value); this._createEditor(); + this._setupTabsScroll(); this.renderTabs(); this.on("theme:changed", () => { @@ -74,6 +84,57 @@ export class PlaygroundController extends BaseController { }); } + private _setupTabsScroll(): void { + if (!this.tabsWrapEl || !this.prevBtnEl || !this.nextBtnEl) return; + + this.tabsEl.addEventListener("scroll", () => this._updateNavButtons(), { + passive: true, + }); + + const observer = new ResizeObserver(() => this._updateNavButtons()); + observer.observe(this.tabsWrapEl); + observer.observe(this.tabsEl); + } + + private _updateNavButtons(): void { + if (!this.tabsWrapEl || !this.prevBtnEl || !this.nextBtnEl) return; + + const overflows = this.tabsEl.scrollWidth > this.tabsWrapEl.clientWidth + 1; + this.prevBtnEl.hidden = !overflows; + this.nextBtnEl.hidden = !overflows; + if (!overflows) return; + + const { scrollLeft, scrollWidth, clientWidth } = this.tabsEl; + this.prevBtnEl.disabled = scrollLeft <= 0; + this.nextBtnEl.disabled = scrollLeft + clientWidth >= scrollWidth - 1; + } + + private _scrollByPage(direction: 1 | -1): void { + // Calculate the scroll distance, keeping 70% of the tab bar visible, + // keeping ~30% overlap, so user keeps visual context across clicks. + // The 80px floor guarantees a meaningful jump when the tab bar is + // very narrow, where 70% could be tiny. + const amount = Math.max(this.tabsEl.clientWidth * 0.7, 80); + this.tabsEl.scrollBy({ left: direction * amount, behavior: "smooth" }); + } + + private _scrollActiveTabIntoView(): void { + const active = this.tabsEl.querySelector( + ".b-playground-tab--active", + ) as HTMLElement | null; + if (!active) return; + + active.scrollIntoView({ inline: "nearest", block: "nearest" }); + } + + public scrollTabsPrev(): void { + this._scrollByPage(-1); + } + + public scrollTabsNext(): void { + this._scrollByPage(1); + } + private _parseInitialCode(initialCode: string): void { if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { const parts = initialCode.split(/^\/\/ --- (.+?) ---$/m); @@ -182,12 +243,8 @@ export class PlaygroundController extends BaseController { this.tabsEl.appendChild(btn); }); - const addBtn = document.createElement("button"); - addBtn.className = "b-playground-tab-add"; - addBtn.textContent = "+"; - addBtn.title = "Add file"; - addBtn.addEventListener("click", () => this.addFile()); - this.tabsEl.appendChild(addBtn); + this._updateNavButtons(); + this._scrollActiveTabIntoView(); } public switchTab(event: Event & { params?: Record }): void { @@ -263,8 +320,7 @@ export class PlaygroundController extends BaseController { public formatCode(): void { this._setOutput( - "Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:\n gno fmt -w " + - this.files[this.activeFile].name, + `Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:\n gno fmt -w ${this.files[this.activeFile].name}`, ); } diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 20c3e8e64cd..0edd55f14f2 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,16 +1,16 @@ -var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=Kh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=_h(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` `){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ne(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` -`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function Kh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` -`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function _h(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return _h(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new Ki(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},Ki=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},_i=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof Ki)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),ko=M.define(),vo=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(ko),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=_i.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=_i.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` -`}get readOnly(){return this.facet(vo)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=vo;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=ko;pe.reconfigure=j.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new ji(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new ji(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` +`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function _h(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new _i(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},_i=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof _i)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=j.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new ji(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new ji(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},ks=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),vs=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),vn=!!(ll||vs||ks),Bo=!vn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!vn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!vn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:vn,ie_version:ll?xs.documentMode||6:vs?+vs[1]:ks?+ks[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ve(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ve(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ve=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ve.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function Ke(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?ki(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),vi=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},vf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return vf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ve){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ke{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ke{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==_.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],v=a?A.right-b.left:b.right-A.left;v>l&&(l=v,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?_.RTL:_.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ke{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==_.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` -`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==_.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return ki(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:ki(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:_f(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(vi).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&_e(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&_e(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&_e(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function _f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var Ks=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&ql.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",ql=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var _s=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(vi).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(kl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),Kl=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),_l(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function _l(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(vl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new _s(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(Ko+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=Kl?null:t.clipboardData;return e?(_l(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Kl?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,K.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,K.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,K.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==K.ByPosNoHeight?K.ByPosNoHeight:K.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?_.RTL:_.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:v}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||v>.005&&Math.abs(this.scaleY-v)>.005)&&(this.scaleX=A,this.scaleY=v,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:v,charWidth:k,textHeight:I}=t.docView.measureTextSize();o=v>0&&s.refresh(r,v,k,I,Math.max(5,T/k),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let v of this.viewports){let k=v.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(v);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(v.from,k))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,K.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,K.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,K.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=_.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let v of t)v.from>=f.from&&v.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,K.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),K.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,K.ByPos,t,0,0).top,f=e.lineAt(a,K.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&_e(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new Ks(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&_e(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==_.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=vl;D.dragMovesSelection=kl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=vi;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:_.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,vc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},vc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",ql.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==_.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==_.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),v=m?T(null,e.to,m):P(p,!0),k=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pt,nt),v==null&&pt>=H,Ht.dir)}if(q=ft.to+1,q>=nt)break}return W.length==0&&E(O,A==null,H,v==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,v){let k=l.top+(v?A.top:A.bottom);return{top:k,bottom:k,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var fp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var cp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==_.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new kn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new kn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},kn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(qe).formatNumber(t,n.state)}var Fc=on.compute([qe],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(qe)!=t.state.facet(qe),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(qe).domEventHandlers,side:"before"}));function na(n={}){return[qe.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return _c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||vr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new qt(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof qt)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof qt?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||vr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function vr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||vr(t))}function _c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,v,k,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];k.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-v,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,q,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,q-H,nt)}k.push(Ht),I.push(pt)}function u(A,v,k,I){let L=[],W=0,E=-1;for(;l.pos>v;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;k.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,v){return(k,I,L)=>{let W=0,E=k.length-1,O,H;if(E>=0&&(O=k[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,k,I,L,W,v)}}function p(A,v,k,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(v.pop()+k-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),v.push(L-k)}function g(A,v,k,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,v,k,I,E)}function m(A,v){let k=l.fork(),I=0,L=0,W=0,E=k.end-s,O={size:0,start:0,skip:0};t:for(let H=k.pos-A;k.pos>H;){let N=k.size;if(k.id==v&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,k.next();continue}let q=k.pos-N;if(N<0||q=o?4:0,ft=k.start;for(k.next();k.pos>q;){if(k.size<0)if(k.size==-3||k.size==-4)nt+=4;else break t;else k.id>=o&&(nt+=4);k.next()}L=ft,I+=N,W+=nt}return(v<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,v,k){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)k=b(A,v,k)}v[--k]=O,v[--k]=W-A,v[--k]=L-A,v[--k]=I}else E==-3?h=I:E==-4&&(f=I);return k}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;v+=k}if(T==P+1){if(v>f){let k=p[P];d(k.children,k.positions,0,k.children.length,g[P]+C);continue}c.push(p[P])}else{let k=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,k,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},kr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var yp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),Kt=x(),_t=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:Kt,self:x(Kt),null:x(Kt),atom:x(Kt),unit:x(Kt),modifier:x(Kt),operatorKeyword:x(Kt),controlKeyword:x(Kt),definitionKeyword:x(Kt),moduleKeyword:x(Kt),operator:_t,derefOperator:x(_t),arithmeticOperator:x(_t),logicOperator:x(_t),bitwiseOperator:x(_t),compareOperator:x(_t),updateOperator:x(_t),definitionOperator:x(_t),typeOperator:x(_t),controlOperator:x(_t),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var xp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var va=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(va=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=va(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function _e(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=_f(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function _f(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var _s=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&ql.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",ql=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),_l=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(_o+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=_l?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=_l?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,_.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,_.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,_.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==_.ByPosNoHeight?_.ByPosNoHeight:_.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,_.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,_.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,_.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,_.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,_.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),_.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,_.ByPos,t,0,0).top,f=e.lineAt(a,_.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new _s(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",ql.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(q=ft.to+1,q>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var fp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var cp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(qe).formatNumber(t,n.state)}var Fc=on.compute([qe],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(qe)!=t.state.facet(qe),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(qe).domEventHandlers,side:"before"}));function na(n={}){return[qe.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new qt(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof qt)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof qt?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];v.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,q,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,q-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(k.pop()+v-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let q=v.pos-N;if(N<0||q=o?4:0,ft=v.start;for(v.next();v.pos>q;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var yp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),_t=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:_t,self:x(_t),null:x(_t),atom:x(_t),unit:x(_t),modifier:x(_t),operatorKeyword:x(_t),controlKeyword:x(_t),definitionKeyword:x(_t),moduleKeyword:x(_t),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var xp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],vu=new Dn(Ri),xa=[],ka=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=ka[s];if(r)return r.id;let o=ka[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Op={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:_.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:_.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(_a,0);var Du=jr((n,t)=>_a(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function _a(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?Kr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),Kr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=kt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,kt)}static selection(t){return new n(void 0,kt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var kt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=kt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:kt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):kt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==_.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var Fp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function _u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function qn(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;_u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>qn(n.state,t,!it(n))),ju=n=>Nt(n,t=>qn(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),_r=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function vt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return vt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return vt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>vt(n,t=>qn(n.state,t,!it(n))),sd=n=>vt(n,t=>qn(n.state,t,it(n)));function ch(n,t){return vt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return vt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>vt(n,t=>ae(n,t,!0)),od=n=>vt(n,t=>ae(n,t,!1)),ld=n=>vt(n,t=>ae(n,t,!it(n))),ad=n=>vt(n,t=>ae(n,t,it(n))),hd=n=>vt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>vt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),qa=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=Kn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},vd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Kn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of Kn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function kh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of Kn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>kh(n,t,!1),Md=({state:n,dispatch:t})=>kh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(Kn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var Ka=vh(!1),Od=vh(!0);function vh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:vd},{key:"Ctrl-v",run:_r}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:qa},{mac:"Ctrl-ArrowDown",run:_r,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:_r,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:qa},{key:"Enter",run:Ka,shift:Ka},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function _n(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=_n),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=_n;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||_n)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=_n&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",_d="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:_d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=Li.define(Eh),Xd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Xd:Yd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this._parseInitialCode(t.value),this._createEditor(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((e,i)=>{let s=document.createElement("button");s.className=`b-playground-tab${i===this.activeFile?" b-playground-tab--active":""}`,s.textContent=e.name,s.addEventListener("click",()=>this._switchToFile(e.name)),this.tabsEl.appendChild(s)});let t=document.createElement("button");t.className="b-playground-tab-add",t.textContent="+",t.title="Add file",t.addEventListener("click",()=>this.addFile()),this.tabsEl.appendChild(t)}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Op={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(Ka,0);var Du=jr((n,t)=>Ka(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?_r:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),_r=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),_u=n=>eh(n,it(n));var Fp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function qn(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>qn(n.state,t,!it(n))),ju=n=>Nt(n,t=>qn(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>qn(n.state,t,!it(n))),sd=n=>kt(n,t=>qn(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),qa=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=_n(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function _n(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of _n(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of _n(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(_n(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var _a=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:_u,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:qa},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:qa},{key:"Enter",run:_a,shift:_a},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",qd="#c678dd",_d="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:_d,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main +`,Yd=Li.define(Eh),Xd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Xd:Yd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} @@ -30,7 +30,7 @@ To test locally: gno test .`)}formatCode(){this._setOutput(`Formatting requires server-side gno fmt (coming soon). To format locally: - gno fmt -w `+this.files[this.activeFile].name)}shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(r=>`// --- ${r.name} --- + gno fmt -w ${this.files[this.activeFile].name}`)}shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(r=>`// --- ${r.name} --- ${r.content}`).join(` `),e=new TextEncoder().encode(t),i=Array.from(e,r=>String.fromCharCode(r)).join(""),s=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(i))}`;navigator.clipboard.writeText(s).then(()=>{this._setOutput("Share URL copied to clipboard!")}).catch(()=>{this._setOutput(`Share URL: diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index 42307ed9300..c2c856773c1 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -3,4 +3,4 @@ li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;overflow-x:auto;padding:0 var(--g-space-1-5)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100);padding:var(--g-space-1) var(--g-space-2)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-6);grid-column:1/-1;min-height:70vh}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-eval-result-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-functions{list-style:disc;padding-left:var(--g-space-4)}.b-eval-functions,.b-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-eval-history-list{justify-content:flex-start}.b-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-6);grid-column:1/-1;min-height:70vh}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-eval-result-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-functions{list-style:disc;padding-left:var(--g-space-4)}.b-eval-functions,.b-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-eval-history-list{justify-content:flex-start}.b-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From d74438f0fdd34571e7c61da45164ed38b53d0971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 11 May 2026 14:40:44 +0200 Subject: [PATCH 24/40] feat(gnoweb): compress shared built-in playground code (#5637) Playground can share code though a URL. Code can be large, so before being shared it's compressed. Also adds a length limit check as a safeguard because code can get too big to be shared using a URL. --- .../frontend/js/controller-playground.ts | 44 ++++++++++++++----- gno.land/pkg/gnoweb/handler_http.go | 17 ++++++- gno.land/pkg/gnoweb/handler_http_test.go | 3 +- .../gnoweb/public/js/controller-playground.js | 28 ++++++------ 4 files changed, 64 insertions(+), 28 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 4a8d709ddea..5433c3061e7 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -34,6 +34,10 @@ interface PlaygroundFile { const GNOMOD_FILE = "gnomod.toml"; const DEFAULT_GNO_CONTENT = "package main\n"; +// Max length for shared source code. +// It stays under the 8192-byte default limit of common web servers (nginx, Apache). +const MAX_SHARE_URL_LENGTH = 8_000; + const goLang = StreamLanguage.define(go); const tomlLang = StreamLanguage.define(toml); @@ -324,8 +328,9 @@ export class PlaygroundController extends BaseController { ); } - public shareCode(): void { + public async shareCode(): Promise { this.files[this.activeFile].content = this._getCode(); + const code = this.files.length === 1 ? this.files[0].content @@ -333,20 +338,35 @@ export class PlaygroundController extends BaseController { .map((f) => `// --- ${f.name} ---\n${f.content}`) .join("\n\n"); - // Encode as base64; TextEncoder produces UTF-8 bytes, which are mapped to a - // Latin-1 binary string so btoa() can handle non-ASCII chars, then the - // resulting base64 is percent-encoded to be safe in a URL query parameter. + // Compress code before sharing it const bytes = new TextEncoder().encode(code); - const binary = Array.from(bytes, (b) => String.fromCharCode(b)).join(""); - const url = `${window.location.origin}/_/play?code=${encodeURIComponent(btoa(binary))}`; + const cs = new CompressionStream("deflate-raw"); + const writer = cs.writable.getWriter(); + writer.write(bytes); + writer.close(); + + // Use Response to drain the stream into an ArrayBuffer for compatibility with + // browsers older than ~2 years. ReadableStream.bytes() would a simpler alternative + // but it's only available for (Chrome 124+, Firefox 128+, Safari 18+). + const compressed = await new Response(cs.readable).arrayBuffer(); + const binary = Array.from(new Uint8Array(compressed), (b) => + String.fromCharCode(b), + ).join(""); + + // Share compressed code + const url = `${window.location.origin}/_/play?code=${encodeURIComponent(btoa(binary))}&z`; + if (url.length > MAX_SHARE_URL_LENGTH) { + this._setOutput( + `Error: code is too large to share via URL.\n\nTry reducing the code or splitting into a deployed package.`, + true, + ); + return; + } + navigator.clipboard .writeText(url) - .then(() => { - this._setOutput("Share URL copied to clipboard!"); - }) - .catch(() => { - this._setOutput(`Share URL:\n${url}`); - }); + .then(() => this._setOutput("Share URL copied to clipboard!")) + .catch(() => this._setOutput(`Share URL:\n${url}`)); } public clearOutput(): void { diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index a86211f30f1..cd239294281 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -2,11 +2,13 @@ package gnoweb import ( "bytes" + "compress/flate" "context" "encoding/base64" "errors" "fmt" "go/token" + "io" "log/slog" "net/http" "path" @@ -753,9 +755,20 @@ func (h *HTTPHandler) GetPlaygroundView(gnourl *weburl.GnoURL, indexData *compon // Check if we have initial code from query (e.g. shared snippet). // Code can be given as a base64 encoded string or plaintext. + // When the "z" query flag is present the base64 payload is also deflate-compressed. initialCode := gnourl.Query.Get("code") - if decoded, err := base64.StdEncoding.DecodeString(initialCode); err == nil { - initialCode = string(decoded) + decoded, err := base64.StdEncoding.DecodeString(initialCode) + if err == nil { + if gnourl.Query.Has("z") { + r := flate.NewReader(bytes.NewReader(decoded)) + if plain, err := io.ReadAll(r); err == nil { + initialCode = string(plain) + } + + r.Close() + } else { + initialCode = string(decoded) + } } // Use default code when no code is provided diff --git a/gno.land/pkg/gnoweb/handler_http_test.go b/gno.land/pkg/gnoweb/handler_http_test.go index 3c40cfb3a45..aba117b00a5 100644 --- a/gno.land/pkg/gnoweb/handler_http_test.go +++ b/gno.land/pkg/gnoweb/handler_http_test.go @@ -1355,7 +1355,8 @@ func TestHTTPHandler_PlaygroundPage(t *testing.T) { }{ {"default playground", "/_/play", "Playground"}, {"with initial code", "/_/play?code=package+main", "package main"}, - {"with initial encoded code", "/_/play?code=cGFja2FnZSBtYWluCg==", "package main"}, + {"with initial encoded code", "/_/play?code=cGFja2FnZSBtYWluCg%3D%3D", "package main"}, + {"with compressed encoded code", "/_/play?code=KkhMzk5MT1XITczM4wIEAAD%2F%2Fw%3D%3D&z", "package main"}, {"with fork param", "/_/play?from=gno.land/r/demo/foo", "gno.land/r/demo/foo"}, } diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 0edd55f14f2..77469e846f8 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,16 +1,16 @@ -var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=_h(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:_h)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function _h(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=qh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` `){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ne(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` -`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function _h(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` -`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new _i(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},_i=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof _i)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function qh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` `}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=j.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new ji(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new ji(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function _e(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` -`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=_f(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function _f(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var _s=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&ql.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",ql=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),_l=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(_o+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=_l?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=_l?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,_.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,_.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,_.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==_.ByPosNoHeight?_.ByPosNoHeight:_.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,_.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,_.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,_.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,_.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,_.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),_.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,_.ByPos,t,0,0).top,f=e.lineAt(a,_.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new _s(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",ql.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(q=ft.to+1,q>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var fp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var cp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(qe).formatNumber(t,n.state)}var Fc=on.compute([qe],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(qe)!=t.state.facet(qe),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(qe).domEventHandlers,side:"before"}));function na(n={}){return[qe.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new qt(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof qt)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof qt?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];v.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,q,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,q-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(k.pop()+v-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let q=v.pos-N;if(N<0||q=o?4:0,ft=v.start;for(v.next();v.pos>q;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var yp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),_t=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:_t,self:x(_t),null:x(_t),atom:x(_t),unit:x(_t),modifier:x(_t),operatorKeyword:x(_t),controlKeyword:x(_t),definitionKeyword:x(_t),moduleKeyword:x(_t),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var xp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!_f(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var cp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var up=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];v.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)O[_++]=L[N],O[_++]=L[N+1]-H,O[_++]=L[N+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var bp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var vp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Op={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(Ka,0);var Du=jr((n,t)=>Ka(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?_r:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),_r=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),_u=n=>eh(n,it(n));var Fp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function qn(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>qn(n.state,t,!it(n))),ju=n=>Nt(n,t=>qn(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>qn(n.state,t,!it(n))),sd=n=>kt(n,t=>qn(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),qa=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=_n(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function _n(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of _n(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of _n(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(_n(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var _a=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:_u,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:qa},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:qa},{key:"Enter",run:_a,shift:_a},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",qd="#c678dd",_d="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:_d,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=Li.define(Eh),Xd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Xd:Yd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Bp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(Ka,0);var Du=jr((n,t)=>Ka(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Wp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),ju=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main +`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} @@ -30,8 +30,10 @@ To test locally: gno test .`)}formatCode(){this._setOutput(`Formatting requires server-side gno fmt (coming soon). To format locally: - gno fmt -w ${this.files[this.activeFile].name}`)}shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(r=>`// --- ${r.name} --- -${r.content}`).join(` + gno fmt -w ${this.files[this.activeFile].name}`)}async shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(a=>`// --- ${a.name} --- +${a.content}`).join(` -`),e=new TextEncoder().encode(t),i=Array.from(e,r=>String.fromCharCode(r)).join(""),s=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(i))}`;navigator.clipboard.writeText(s).then(()=>{this._setOutput("Share URL copied to clipboard!")}).catch(()=>{this._setOutput(`Share URL: -${s}`)})}clearOutput(){this._setOutput("// Run code to see output here")}};export{Vh as PlaygroundController}; +`),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Yd){this._setOutput(`Error: code is too large to share via URL. + +Try reducing the code or splitting into a deployed package.`,!0);return}navigator.clipboard.writeText(l).then(()=>this._setOutput("Share URL copied to clipboard!")).catch(()=>this._setOutput(`Share URL: +${l}`))}clearOutput(){this._setOutput("// Run code to see output here")}};export{Vh as PlaygroundController}; From b2dfda93f309b4d2d97c08bf57ca9ef60b54e814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 11 May 2026 14:59:05 +0200 Subject: [PATCH 25/40] feat(gnoweb): move Gno expression eval support into action view (#5634) Addresses milestone 2 (M2) from #5549 --- .../pkg/gnoweb/components/layout_header.go | 16 +-- .../pkg/gnoweb/components/layout_index.go | 2 +- gno.land/pkg/gnoweb/components/layout_test.go | 11 +- gno.land/pkg/gnoweb/components/view_eval.go | 89 ------------- .../pkg/gnoweb/components/views/action.html | 55 +++++++- .../pkg/gnoweb/components/views/eval.html | 84 ------------ .../pkg/gnoweb/frontend/css/06-blocks.css | 123 ++++++++++++++++++ ...ller-eval.ts => controller-action-eval.ts} | 59 ++++----- .../frontend/js/controller-action-function.ts | 31 +++++ gno.land/pkg/gnoweb/handler_http.go | 23 ---- gno.land/pkg/gnoweb/handler_http_test.go | 30 ----- .../public/js/controller-action-eval.js | 1 + .../public/js/controller-action-function.js | 2 +- .../pkg/gnoweb/public/js/controller-eval.js | 1 - gno.land/pkg/gnoweb/public/main.css | 4 +- 15 files changed, 246 insertions(+), 285 deletions(-) delete mode 100644 gno.land/pkg/gnoweb/components/view_eval.go delete mode 100644 gno.land/pkg/gnoweb/components/views/eval.html rename gno.land/pkg/gnoweb/frontend/js/{controller-eval.ts => controller-action-eval.ts} (77%) create mode 100644 gno.land/pkg/gnoweb/public/js/controller-action-eval.js delete mode 100644 gno.land/pkg/gnoweb/public/js/controller-eval.js diff --git a/gno.land/pkg/gnoweb/components/layout_header.go b/gno.land/pkg/gnoweb/components/layout_header.go index 06eaaa29112..90c27fc51c3 100644 --- a/gno.land/pkg/gnoweb/components/layout_header.go +++ b/gno.land/pkg/gnoweb/components/layout_header.go @@ -38,11 +38,10 @@ func StaticHeaderGeneralLinks() []HeaderLink { } func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderLink { - contentURL, sourceURL, helpURL, evalURL, forkURL, runURL := u, u, u, u, u, u + contentURL, sourceURL, helpURL, forkURL, runURL := u, u, u, u, u contentURL.WebQuery = url.Values{} sourceURL.WebQuery = url.Values{"source": {""}} helpURL.WebQuery = url.Values{"help": {""}} - evalURL.WebQuery = url.Values{"eval": {""}} forkURL.WebQuery = url.Values{"fork": {""}} runURL.WebQuery = url.Values{"run": {""}} @@ -67,13 +66,6 @@ func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderL IsActive: isActive(u.WebQuery, "Actions"), } - evalLink := HeaderLink{ - Label: "Eval", - URL: evalURL.EncodeWebURL(), - Icon: "ico-tx-link", - IsActive: isActive(u.WebQuery, "Eval"), - } - forkLink := HeaderLink{ Label: "Fork", URL: forkURL.EncodeWebURL(), @@ -100,7 +92,7 @@ func StaticHeaderDevLinks(u weburl.GnoURL, mode ViewMode, static bool) []HeaderL case mode == ViewModePlayground: return []HeaderLink{} default: - return []HeaderLink{contentLink, sourceLink, actionsLink, evalLink, forkLink, runLink} + return []HeaderLink{contentLink, sourceLink, actionsLink, forkLink, runLink} } } @@ -119,13 +111,11 @@ func EnrichHeaderData(data HeaderData, mode ViewMode) HeaderData { func isActive(webQuery url.Values, label string) bool { switch label { case "Content": - return !webQuery.Has("source") && !webQuery.Has("help") && !webQuery.Has("eval") && !webQuery.Has("fork") && !webQuery.Has("run") + return !webQuery.Has("source") && !webQuery.Has("help") && !webQuery.Has("fork") && !webQuery.Has("run") case "Source": return webQuery.Has("source") case "Actions": return webQuery.Has("help") - case "Eval": - return webQuery.Has("eval") case "Fork": return webQuery.Has("fork") case "Run": diff --git a/gno.land/pkg/gnoweb/components/layout_index.go b/gno.land/pkg/gnoweb/components/layout_index.go index 7a248fe3435..eb9c2bbcf75 100644 --- a/gno.land/pkg/gnoweb/components/layout_index.go +++ b/gno.land/pkg/gnoweb/components/layout_index.go @@ -91,7 +91,7 @@ func IndexLayout(data IndexData) Component { // Set dev mode based on view type and mode switch data.BodyView.Type { - case HelpViewType, SourceViewType, DirectoryViewType, StatusViewType, EvalViewType, PlaygroundViewType, RunViewType: + case HelpViewType, SourceViewType, DirectoryViewType, StatusViewType, PlaygroundViewType, RunViewType: dataLayout.IsDevmodView = true } diff --git a/gno.land/pkg/gnoweb/components/layout_test.go b/gno.land/pkg/gnoweb/components/layout_test.go index d3143e6448f..29d8b6a1732 100644 --- a/gno.land/pkg/gnoweb/components/layout_test.go +++ b/gno.land/pkg/gnoweb/components/layout_test.go @@ -117,7 +117,7 @@ func TestEnrichHeaderData(t *testing.T) { enrichedData := EnrichHeaderData(data, ViewModeHome) assert.NotEmpty(t, enrichedData.Links.General, "expected general links to be populated") - assert.Len(t, enrichedData.Links.Dev, 6, "expected dev links with Actions, Eval, Fork, Run for home mode") + assert.Len(t, enrichedData.Links.Dev, 5, "expected dev links with Actions, Fork, Run for home mode") } func TestIsActive(t *testing.T) { @@ -190,13 +190,12 @@ func TestStaticHeaderDevLinks_WithRealmMode(t *testing.T) { // Test realm mode (default case) links := StaticHeaderDevLinks(u, ViewModeRealm, false) - assert.Len(t, links, 6, "expected Content, Source, Actions, Eval, Fork, Run links") + assert.Len(t, links, 5, "expected Content, Source, Actions, Fork, Run links") assert.Equal(t, "Content", links[0].Label) assert.Equal(t, "Source", links[1].Label) assert.Equal(t, "Actions", links[2].Label) - assert.Equal(t, "Eval", links[3].Label) - assert.Equal(t, "Fork", links[4].Label) - assert.Equal(t, "Run", links[5].Label) + assert.Equal(t, "Fork", links[3].Label) + assert.Equal(t, "Run", links[4].Label) } func TestStaticHeaderDevLinks_WithPackageMode(t *testing.T) { @@ -263,7 +262,7 @@ func TestEnrichHeaderData_WithRealmMode(t *testing.T) { enriched := EnrichHeaderData(data, ViewModeRealm) assert.Equal(t, "/r/test/pkg", enriched.RealmPath) assert.Empty(t, enriched.Links.General) - assert.Len(t, enriched.Links.Dev, 6, "expected Content, Source, Actions, Eval, Fork, Run links") + assert.Len(t, enriched.Links.Dev, 5, "expected Content, Source, Actions, Fork, Run links") } func TestEnrichHeaderData_WithExplorerMode(t *testing.T) { diff --git a/gno.land/pkg/gnoweb/components/view_eval.go b/gno.land/pkg/gnoweb/components/view_eval.go deleted file mode 100644 index f1f15b1f505..00000000000 --- a/gno.land/pkg/gnoweb/components/view_eval.go +++ /dev/null @@ -1,89 +0,0 @@ -package components - -import ( - "go/token" - - "github.com/gnolang/gno/gnovm/pkg/doc" -) - -const EvalViewType ViewType = "eval-view" - -type EvalFuncInfo struct { - Name string - Signature string - Doc string - Params []*doc.JSONField -} - -type EvalData struct { - Remote string - PkgPath string - Domain string - Functions []EvalFuncInfo -} - -type EvalTocData struct { - Icon string - Items []HelpTocItem -} - -type evalViewParams struct { - EvalData - Article ArticleData - ComponentTOC Component -} - -func EvalView(data EvalData) *View { - tocData := EvalTocData{ - Icon: "code", - Items: make([]HelpTocItem, len(data.Functions)), - } - - for i, fn := range data.Functions { - tocData.Items[i] = HelpTocItem{ - Link: "#func-" + fn.Name, - Text: fn.Name, - } - } - - toc := NewTemplateComponent("ui/toc_generic", tocData) - content := NewTemplateComponent("renderEvalContent", data) - - viewData := evalViewParams{ - EvalData: data, - Article: ArticleData{ - ComponentContent: content, - Classes: "c-eval-view", - }, - ComponentTOC: toc, - } - - return NewTemplateView(EvalViewType, "renderEval", viewData) -} - -// BuildEvalFuncs extracts public non-method functions suitable for eval. -func BuildEvalFuncs(jdoc *doc.JSONDocumentation) []EvalFuncInfo { - funcs := make([]EvalFuncInfo, 0, len(jdoc.Funcs)) - for _, fn := range jdoc.Funcs { - if fn.Type != "" || !token.IsExported(fn.Name) { - continue - } - // Skip crossing functions (they mutate state) - if fn.Crossing { - continue - } - - params := fn.Params - if len(params) >= 1 && params[0].Type == "realm" { - params = params[1:] - } - - funcs = append(funcs, EvalFuncInfo{ - Name: fn.Name, - Signature: fn.Signature, - Doc: fn.Doc, - Params: params, - }) - } - return funcs -} diff --git a/gno.land/pkg/gnoweb/components/views/action.html b/gno.land/pkg/gnoweb/components/views/action.html index 235ccbedd73..35e6d8ca218 100644 --- a/gno.land/pkg/gnoweb/components/views/action.html +++ b/gno.land/pkg/gnoweb/components/views/action.html @@ -56,6 +56,8 @@

{{ end }} +{{ template "ui/eval_expression" $data }} +

Function{{- if gt (len .Functions) 1 }}s{{- end }}

@@ -88,6 +90,13 @@

Link + {{ if not .Crossing }} + + {{ end }}

-{{ end }} \ No newline at end of file +{{ end }} + + +{{/* =================================================================================== +UI - Eval expression snippet (inline evaluator for action page) +=================================================================================== */}} +{{ define "ui/eval_expression" }} +
+ +

Gno Expression Evaluator

+

+ Evaluate read-only expressions against {{ .PkgPath }} +

+ +
+
+ + +
+ +
+ +
+
+ Result + +
+
// Enter an expression above
+
+ + +
+{{ end }} diff --git a/gno.land/pkg/gnoweb/components/views/eval.html b/gno.land/pkg/gnoweb/components/views/eval.html deleted file mode 100644 index 5cf0ad9679e..00000000000 --- a/gno.land/pkg/gnoweb/components/views/eval.html +++ /dev/null @@ -1,84 +0,0 @@ -{{/* =================================================================================== -LAYOUT - Eval view -=================================================================================== */}} -{{ define "renderEval" }} -
-

Gno Expression Evaluator

-
- - -{{ with render .ComponentTOC }} -{{ template "layout/aside" . }} -{{ end }} - - -{{ template "layout/article" .Article }} -{{ end }} - - -{{/* =================================================================================== -UI - Inline Eval content -=================================================================================== */}} -{{ define "renderEvalContent" }} -{{ $data := . }} -
- -

- Evaluate read-only expressions against {{ .PkgPath }} -

- - -
-
-
- - -
- -
-
- - -
-
- Result - -
-
// Enter an expression above
-
- - - {{ if .Functions }} -
-

Quick Call

-
    - {{ range .Functions }} -
  • - - {{ if .Doc }}
    {{ .Doc }}
    {{ end }} -
  • - {{ end }} -
-
- {{ end }} - - - -
-{{ end }} diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 6ff40a83901..85baa09dd28 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -1408,6 +1408,129 @@ main.dev-mode .b-toc a { } } +/* ===== ACTION EVAL COMPONENT ===== */ +.b-action-eval { + display: flex; + flex-direction: column; + gap: var(--g-space-4); + margin-block-end: var(--g-space-8); + + .b-content-h2 { + margin-bottom: 0; + } +} + +.b-action-eval-form { + display: flex; + gap: var(--g-space-2); + align-items: flex-end; +} + +.b-action-eval-form .b-input--full { + flex: 1; +} + +.b-action-eval-result { + background-color: var(--s-color-bg-surface-secondary); + border: 1px solid var(--s-color-border-default); + border-radius: var(--g-radius-2); + overflow: hidden; + padding: var(--g-space-4); +} + +.b-action-eval-result-header { + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--s-color-bg-muted); + border-bottom: 1px solid var(--s-color-border-default); + margin-bottom: var(--g-space-1); +} + +.b-action-eval-result-title { + font-size: var(--g-font-size-50); + letter-spacing: 0.05em; +} + +.b-action-eval-result-clear { + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-50); + color: var(--s-color-text-tertiary); + + &:hover { + color: var(--s-color-text-tertiary-hover); + } +} + +.b-action-eval-result-content { + padding: var(--g-space-2); + margin: 0; + font-family: var(--g-font-mono); + font-size: var(--g-font-size-75); + line-height: 1.6; + white-space: pre-wrap; + word-break: break-word; + min-height: 80px; + max-height: 400px; + overflow-y: auto; + background-color: var(--s-color-bg-base); +} + +.b-action-eval-history { + display: flex; + flex-direction: column; + gap: var(--g-space-2); +} + +.b-action-eval-history-list { + display: flex; + flex-direction: column; + gap: var(--g-space-2); +} + +.b-action-eval-history-entry { + padding: var(--g-space-1-5); + border: 1px solid var(--s-color-border-default); + background-color: var(--s-color-bg-surface-secondary); + border-radius: var(--s-rounded); + + & + & { + margin-top: var(--g-space-1); + } +} + +.b-action-eval-history-expr { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--g-space-1); +} + +.b-action-eval-history-rerun { + border: none; + background: none; + cursor: pointer; + font-size: var(--g-font-size-100); + color: var(--s-color-text-muted); + + &:hover { + color: var(--s-color-text-base); + } +} + +.b-action-eval-history-result { + margin: 0; + padding: var(--g-space-1); + font-family: var(--g-font-mono); + font-size: var(--g-font-size-50); + background-color: var(--s-color-bg-base); + border-radius: var(--g-radius-1); + white-space: pre-wrap; + word-break: break-word; +} + /* ===== PACKAGES LIST COMPONENT ===== */ .b-packages { padding-block-end: var(--g-space-24); diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts b/gno.land/pkg/gnoweb/frontend/js/controller-action-eval.ts similarity index 77% rename from gno.land/pkg/gnoweb/frontend/js/controller-eval.ts rename to gno.land/pkg/gnoweb/frontend/js/controller-action-eval.ts index d7ac771ba01..25b45d7a5f2 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-eval.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-action-eval.ts @@ -6,7 +6,7 @@ interface HistoryEntry { isError: boolean; } -export class EvalController extends BaseController { +export class ActionEvalController extends BaseController { private declare history: HistoryEntry[]; private declare inputEl: HTMLInputElement; private declare resultEl: HTMLElement; @@ -23,9 +23,29 @@ export class EvalController extends BaseController { if (!this.inputEl || !this.resultEl) return; this._setupKeyboardShortcuts(); + this._listenForEvents(); this.inputEl.focus(); } + private _listenForEvents(): void { + this.on("eval:expression", (e: Event) => { + this.clearResult(); + + const { expression, autoEval } = (e as CustomEvent).detail; + this.inputEl.value = expression; + this.inputEl.scrollIntoView({ behavior: "smooth", block: "center" }); + + if (autoEval) { + this._doEval(expression); + } else { + this.inputEl.focus(); + const start = expression.indexOf("(") + 1; + const end = expression.lastIndexOf(")"); + this.inputEl.setSelectionRange(start, end); + } + }); + } + private _setupKeyboardShortcuts(): void { this.inputEl.addEventListener("keydown", (e: KeyboardEvent) => { if (e.key === "ArrowUp" && this.history.length > 0) { @@ -87,14 +107,13 @@ export class EvalController extends BaseController { this.history.push({ expression, result, isError }); if (!this.historyListEl) return; - // Reveal the history section on first entry if (this.historySection) this.historySection.removeAttribute("hidden"); const entry = document.createElement("div"); - entry.className = "b-eval-history-entry"; + entry.className = "b-action-eval-history-entry"; const exprDiv = document.createElement("div"); - exprDiv.className = "b-eval-history-expr"; + exprDiv.className = "b-action-eval-history-expr"; const codeEl = document.createElement("code"); codeEl.className = "u-font-mono"; @@ -102,7 +121,7 @@ export class EvalController extends BaseController { exprDiv.appendChild(codeEl); const rerunBtn = document.createElement("button"); - rerunBtn.className = "b-eval-history-rerun"; + rerunBtn.className = "b-action-eval-history-rerun"; rerunBtn.textContent = "↩"; rerunBtn.title = "Re-run"; rerunBtn.addEventListener("click", () => { @@ -112,7 +131,7 @@ export class EvalController extends BaseController { exprDiv.appendChild(rerunBtn); const resultPre = document.createElement("pre"); - resultPre.className = `b-eval-history-result${isError ? " u-color-danger" : ""}`; + resultPre.className = `b-action-eval-history-result${isError ? " u-color-danger" : ""}`; resultPre.textContent = result.length > 200 ? `${result.substring(0, 200)}...` : result; @@ -131,32 +150,4 @@ export class EvalController extends BaseController { this.resultEl.textContent = "// Enter an expression above"; this.resultEl.classList.remove("u-color-danger"); } - - public quickCall(event: Event & { params?: Record }): void { - const funcName = (event.params?.funcName as string) || ""; - const funcSig = (event.params?.funcSig as string) || ""; - if (!funcName) return; - - const paramMatch = funcSig.match(/\(([^)]*)\)/); - const params = paramMatch ? paramMatch[1] : ""; - if (params) { - this.inputEl.value = `${funcName}(${params - .split(",") - .map((p: string) => { - const parts = p.trim().split(/\s+/); - const type = parts[parts.length - 1]; - return type === "string" ? '""' : "0"; - }) - .join(", ")})`; - - this.inputEl.focus(); - this.inputEl.setSelectionRange( - funcName.length + 1, - this.inputEl.value.length - 1, - ); - } else { - this.inputEl.value = `${funcName}()`; - this._doEval(`${funcName}()`); - } - } } diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts b/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts index ee2809bd301..ca8ae7e7467 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-action-function.ts @@ -242,6 +242,37 @@ export class ActionFunctionController extends BaseController { } // DOM ACTIONS + + // Dispatch eval:expression event (DOM action). + // If the function has params, fills type-based placeholders without auto-evaluating. + // If no params, auto-evaluates immediately. + public triggerEval( + event: Event & { params?: Record }, + ): void { + const funcName = this._funcName || ""; + const funcSig = (event.params?.sig as string) || ""; + + const paramMatch = funcSig.match(/\(([^)]*)\)/); + const params = paramMatch ? paramMatch[1].trim() : ""; + + if (params) { + const expression = `${funcName}(${params + .split(",") + .map((p: string) => { + const parts = p.trim().split(/\s+/); + const type = parts[parts.length - 1]; + return type === "string" ? '""' : "0"; + }) + .join(", ")})`; + this.dispatch("eval:expression", { expression, autoEval: false }); + } else { + this.dispatch("eval:expression", { + expression: `${funcName}()`, + autoEval: true, + }); + } + } + // update all args (DOM action) public updateAllArgs(event: Event): void { const target = event.target as HTMLInputElement; diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index cd239294281..6402f39df11 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -318,11 +318,6 @@ func (h *HTTPHandler) GetPackageView(ctx context.Context, gnourl *weburl.GnoURL, return h.GetHelpView(ctx, gnourl) } - // Handle Eval page (expression evaluator) - if gnourl.WebQuery.Has("eval") { - return h.GetEvalView(ctx, gnourl) - } - // Handle Fork page (fork source to playground) if gnourl.WebQuery.Has("fork") { return h.GetForkView(ctx, gnourl) @@ -784,24 +779,6 @@ func (h *HTTPHandler) GetPlaygroundView(gnourl *weburl.GnoURL, indexData *compon }) } -// GetEvalView renders the expression evaluator page for a package/realm. -func (h *HTTPHandler) GetEvalView(ctx context.Context, gnourl *weburl.GnoURL) (int, *components.View) { - jdoc, err := h.Client.Doc(ctx, gnourl.Path) - if err != nil { - h.Logger.Error("unable to fetch qdoc for eval", "error", err) - return GetClientErrorStatusPage(gnourl, err) - } - - funcs := components.BuildEvalFuncs(jdoc) - - return http.StatusOK, components.EvalView(components.EvalData{ - Remote: h.Static.RemoteHelp, - PkgPath: path.Join(h.Static.Domain, gnourl.Path), - Domain: h.Static.Domain, - Functions: funcs, - }) -} - // GetForkView loads all source files from a package and redirects to playground with the code. func (h *HTTPHandler) GetForkView(ctx context.Context, gnourl *weburl.GnoURL) (int, *components.View) { pkgPath := gnourl.Path diff --git a/gno.land/pkg/gnoweb/handler_http_test.go b/gno.land/pkg/gnoweb/handler_http_test.go index aba117b00a5..7ccb60c25b0 100644 --- a/gno.land/pkg/gnoweb/handler_http_test.go +++ b/gno.land/pkg/gnoweb/handler_http_test.go @@ -1372,36 +1372,6 @@ func TestHTTPHandler_PlaygroundPage(t *testing.T) { } } -// TestHTTPHandler_EvalView tests the ?eval query on a realm page. -func TestHTTPHandler_EvalView(t *testing.T) { - t.Parallel() - - mockPackage := &gnoweb.MockPackage{ - Domain: "gno.land", - Path: "/r/mock/path", - Files: map[string]string{"mock.gno": `package mock`}, - Functions: []*doc.JSONFunc{ - {Name: "Hello", Signature: "Hello() string"}, - {Name: "unexported", Signature: "unexported()"}, - }, - } - - config := newTestHandlerConfig(t, gnoweb.NewMockClient(mockPackage)) - logger := slog.New(slog.NewTextHandler(&testingLogger{t}, &slog.HandlerOptions{})) - handler, err := gnoweb.NewHTTPHandler(logger, config) - require.NoError(t, err) - - req := httptest.NewRequest(http.MethodGet, "/r/mock/path$eval", nil) - rr := httptest.NewRecorder() - handler.ServeHTTP(rr, req) - - assert.Equal(t, http.StatusOK, rr.Code) - body := rr.Body.String() - assert.Contains(t, body, "Expression Evaluator") - assert.Contains(t, body, "Hello") - assert.NotContains(t, body, "unexported") // non-exported should be filtered -} - // TestHTTPHandler_ForkView tests the ?fork query on a package page. func TestHTTPHandler_ForkView(t *testing.T) { t.Parallel() diff --git a/gno.land/pkg/gnoweb/public/js/controller-action-eval.js b/gno.land/pkg/gnoweb/public/js/controller-action-eval.js new file mode 100644 index 00000000000..41c0e4a1892 --- /dev/null +++ b/gno.land/pkg/gnoweb/public/js/controller-action-eval.js @@ -0,0 +1 @@ +import{BaseController as h}from"./controller.js";var a=class extends h{connect(){this.history=[],this.inputEl=this.getTarget("input"),this.resultEl=this.getTarget("result"),this.historyListEl=this.getTarget("history-list"),this.historySection=this.getTarget("history"),!(!this.inputEl||!this.resultEl)&&(this._setupKeyboardShortcuts(),this._listenForEvents(),this.inputEl.focus())}_listenForEvents(){this.on("eval:expression",e=>{this.clearResult();let{expression:t,autoEval:i}=e.detail;if(this.inputEl.value=t,this.inputEl.scrollIntoView({behavior:"smooth",block:"center"}),i)this._doEval(t);else{this.inputEl.focus();let n=t.indexOf("(")+1,s=t.lastIndexOf(")");this.inputEl.setSelectionRange(n,s)}})}_setupKeyboardShortcuts(){this.inputEl.addEventListener("keydown",e=>{e.key==="ArrowUp"&&this.history.length>0&&(e.preventDefault(),this.inputEl.value=this.history[this.history.length-1].expression)})}async _doEval(e){this.resultEl.textContent="Evaluating...",this.resultEl.classList.remove("u-color-danger");try{let t=this.getValue("pkg-path"),i=this.getValue("domain")||"gno.land",n=t.startsWith(`${i}/`)?t.slice(i.length+1):t,s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:n,expression:e})});if(s.status===429)throw new Error("rate limit exceeded \u2014 please wait a moment");if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json(),r,o;l.error?(r=`Error: ${l.error}`,o=!0):(r=l.result||"(empty result)",o=!1),this.resultEl.textContent=r,this.resultEl.classList.toggle("u-color-danger",o),this._addToHistory(e,r,o)}catch(t){let i=`Error: ${t instanceof Error?t.message:String(t)}`;this.resultEl.textContent=i,this.resultEl.classList.add("u-color-danger"),this._addToHistory(e,i,!0)}}_addToHistory(e,t,i){if(this.history.push({expression:e,result:t,isError:i}),!this.historyListEl)return;this.historySection&&this.historySection.removeAttribute("hidden");let n=document.createElement("div");n.className="b-action-eval-history-entry";let s=document.createElement("div");s.className="b-action-eval-history-expr";let l=document.createElement("code");l.className="u-font-mono",l.textContent=e,s.appendChild(l);let r=document.createElement("button");r.className="b-action-eval-history-rerun",r.textContent="\u21A9",r.title="Re-run",r.addEventListener("click",()=>{this.inputEl.value=e,this._doEval(e)}),s.appendChild(r);let o=document.createElement("pre");o.className=`b-action-eval-history-result${i?" u-color-danger":""}`,o.textContent=t.length>200?`${t.substring(0,200)}...`:t,n.appendChild(s),n.appendChild(o),this.historyListEl.prepend(n)}evalExpression(e){e.preventDefault();let t=this.inputEl.value.trim();t&&this._doEval(t)}clearResult(){this.resultEl.textContent="// Enter an expression above",this.resultEl.classList.remove("u-color-danger")}};export{a as ActionEvalController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-action-function.js b/gno.land/pkg/gnoweb/public/js/controller-action-function.js index 092b40891fa..e7f2b9276e3 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-action-function.js +++ b/gno.land/pkg/gnoweb/public/js/controller-action-function.js @@ -1 +1 @@ -import{BaseController as p,debounce as g,escapeShellSpecialChars as m}from"./controller.js";var l=class extends p{sendValue=null;get _paramInputs(){return this._paramInputsCache||(this._paramInputsCache=this.getTargets("param-input")),this._paramInputsCache}connect(){this.initializeDOM({"send-code":this.getTargets("send-code")}),this._funcName=this.getValue("name")||null,this._pkgPath=this.getValue("pkgpath")||null,this._initializeArgs(),this._listenForEvents(),this._updateQEvalResult(),this._dispatchParamsChanged()}_listenForEvents(){this.on("mode:changed",e=>{let t=e.detail.mode;this._updateAllFunctionsMode(t)}),this.on("address:changed",e=>{let t=e.detail.address;this._updateAllFunctionsAddress(t)})}_updateAllFunctionsMode(e){this.getTargets("mode").forEach(t=>{let a=this.getValue("mode",t)===e;t.classList.toggle("u-inline",a),t.classList.toggle("u-hidden",!a),t.dataset.copyTarget=a&&this._funcName?`action-function-${this._funcName}`:""})}_updateAllFunctionsAddress(e){this.getTargets("address").forEach(t=>{t.textContent=e.trim()||"ADDRESS"})}_getParamCurrentValue(e){let s=this._paramInputs.filter(a=>this.getValue("param",a)===e);if(!s.length)return"";let t=s[0];return t.type==="checkbox"?s.filter(a=>a.checked).map(a=>a.value.trim()).join(","):t.type==="radio"?s.find(r=>r.checked)?.value.trim()||"":t.value.trim()}_initializeArgs(){let e=new Set;this._params={},this._paramInputs.forEach(s=>{let t=this.getValue("param",s)||"";if(!t||e.has(t))return;let a=this._getParamCurrentValue(t);this._params[t]=a,a&&this._updateArgInDOM(t,a),e.add(t)})}_debouncedUpdateAllArgs=g((e,s)=>{e&&(this._updateArgInDOM(e,s),this._updateQEvalResult(),this._dispatchParamsChanged())},50);_dispatchParamsChanged(){!this._funcName||!this._pkgPath||this.dispatch("params:changed",{pkgPath:this._pkgPath,funcName:this._funcName,params:{...this._params},send:this.sendValue||void 0})}_updateArgInDOM(e,s){let t=m(s);this.getTargets("arg").filter(o=>this.getValue("arg",o)===e).forEach(o=>{o.textContent=t||""});let a=this.getTarget("function-execute"),r=this.getTarget("function-anchor");if(!a&&!r)return;let i=a?.getAttribute("action")||r?.getAttribute("data-copy-text-value");if(!i)return;let n=i.split("&"),c=encodeURIComponent(s),d=n.findIndex((o,h)=>h>0&&o.startsWith(`${e}=`));d!==-1?n[d]=`${e}=${c}`:n.push(`${e}=${c}`);let u=n.join("&");a?.setAttribute("action",u),r?.setAttribute("data-copy-text-value",u)}async _updateQEvalResult(){let e=this.getTarget("qeval-result");if(!e)return;let s=this.getTargets("arg");if(!s.every(n=>n.textContent!=="")){e.textContent="(enter param values)",e.classList.remove("u-color-danger");return}let a=s.map(n=>n.textContent.replace(/\\(.)/g,"$1")).join(","),r=`${this._funcName}(${a})`,i=await this._evalExpression(r);e.textContent=i,e.classList.toggle("u-color-danger",i.startsWith("Error:"))}async _evalExpression(e){try{let s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:this._pkgPath,expression:e})});if(!s.ok)return"";let t=await s.json();return t.error?`Error: ${t.error}`:t.result??""}catch{return""}}updateAllArgs(e){let s=e.target,t=this.getValue("param",s);if(!t)return;let a=this._getParamCurrentValue(t);this._params[t]=a,this._debouncedUpdateAllArgs(t,a)}updateAllFunctionsSend(e){let s=e.params?.send||!1;this.sendValue=s?this.getValue("send"):null,this.getDOMArray("send-code").forEach(t=>{t.textContent=this.sendValue||""}),this._dispatchParamsChanged()}};export{l as ActionFunctionController}; +import{BaseController as h,debounce as g,escapeShellSpecialChars as m}from"./controller.js";var d=class extends h{sendValue=null;get _paramInputs(){return this._paramInputsCache||(this._paramInputsCache=this.getTargets("param-input")),this._paramInputsCache}connect(){this.initializeDOM({"send-code":this.getTargets("send-code")}),this._funcName=this.getValue("name")||null,this._pkgPath=this.getValue("pkgpath")||null,this._initializeArgs(),this._listenForEvents(),this._updateQEvalResult(),this._dispatchParamsChanged()}_listenForEvents(){this.on("mode:changed",e=>{let t=e.detail.mode;this._updateAllFunctionsMode(t)}),this.on("address:changed",e=>{let t=e.detail.address;this._updateAllFunctionsAddress(t)})}_updateAllFunctionsMode(e){this.getTargets("mode").forEach(t=>{let a=this.getValue("mode",t)===e;t.classList.toggle("u-inline",a),t.classList.toggle("u-hidden",!a),t.dataset.copyTarget=a&&this._funcName?`action-function-${this._funcName}`:""})}_updateAllFunctionsAddress(e){this.getTargets("address").forEach(t=>{t.textContent=e.trim()||"ADDRESS"})}_getParamCurrentValue(e){let s=this._paramInputs.filter(a=>this.getValue("param",a)===e);if(!s.length)return"";let t=s[0];return t.type==="checkbox"?s.filter(a=>a.checked).map(a=>a.value.trim()).join(","):t.type==="radio"?s.find(n=>n.checked)?.value.trim()||"":t.value.trim()}_initializeArgs(){let e=new Set;this._params={},this._paramInputs.forEach(s=>{let t=this.getValue("param",s)||"";if(!t||e.has(t))return;let a=this._getParamCurrentValue(t);this._params[t]=a,a&&this._updateArgInDOM(t,a),e.add(t)})}_debouncedUpdateAllArgs=g((e,s)=>{e&&(this._updateArgInDOM(e,s),this._updateQEvalResult(),this._dispatchParamsChanged())},50);_dispatchParamsChanged(){!this._funcName||!this._pkgPath||this.dispatch("params:changed",{pkgPath:this._pkgPath,funcName:this._funcName,params:{...this._params},send:this.sendValue||void 0})}_updateArgInDOM(e,s){let t=m(s);this.getTargets("arg").filter(c=>this.getValue("arg",c)===e).forEach(c=>{c.textContent=t||""});let a=this.getTarget("function-execute"),n=this.getTarget("function-anchor");if(!a&&!n)return;let i=a?.getAttribute("action")||n?.getAttribute("data-copy-text-value");if(!i)return;let r=i.split("&"),o=encodeURIComponent(s),u=r.findIndex((c,p)=>p>0&&c.startsWith(`${e}=`));u!==-1?r[u]=`${e}=${o}`:r.push(`${e}=${o}`);let l=r.join("&");a?.setAttribute("action",l),n?.setAttribute("data-copy-text-value",l)}async _updateQEvalResult(){let e=this.getTarget("qeval-result");if(!e)return;let s=this.getTargets("arg");if(!s.every(r=>r.textContent!=="")){e.textContent="(enter param values)",e.classList.remove("u-color-danger");return}let a=s.map(r=>r.textContent.replace(/\\(.)/g,"$1")).join(","),n=`${this._funcName}(${a})`,i=await this._evalExpression(n);e.textContent=i,e.classList.toggle("u-color-danger",i.startsWith("Error:"))}async _evalExpression(e){try{let s=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:this._pkgPath,expression:e})});if(!s.ok)return"";let t=await s.json();return t.error?`Error: ${t.error}`:t.result??""}catch{return""}}triggerEval(e){let s=this._funcName||"",a=(e.params?.sig||"").match(/\(([^)]*)\)/),n=a?a[1].trim():"";if(n){let i=`${s}(${n.split(",").map(r=>{let o=r.trim().split(/\s+/);return o[o.length-1]==="string"?'""':"0"}).join(", ")})`;this.dispatch("eval:expression",{expression:i,autoEval:!1})}else this.dispatch("eval:expression",{expression:`${s}()`,autoEval:!0})}updateAllArgs(e){let s=e.target,t=this.getValue("param",s);if(!t)return;let a=this._getParamCurrentValue(t);this._params[t]=a,this._debouncedUpdateAllArgs(t,a)}updateAllFunctionsSend(e){let s=e.params?.send||!1;this.sendValue=s?this.getValue("send"):null,this.getDOMArray("send-code").forEach(t=>{t.textContent=this.sendValue||""}),this._dispatchParamsChanged()}};export{d as ActionFunctionController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-eval.js b/gno.land/pkg/gnoweb/public/js/controller-eval.js deleted file mode 100644 index fe10a23bf2d..00000000000 --- a/gno.land/pkg/gnoweb/public/js/controller-eval.js +++ /dev/null @@ -1 +0,0 @@ -import{BaseController as h}from"./controller.js";var a=class extends h{connect(){this.history=[],this.inputEl=this.getTarget("input"),this.resultEl=this.getTarget("result"),this.historyListEl=this.getTarget("history-list"),this.historySection=this.getTarget("history"),!(!this.inputEl||!this.resultEl)&&(this._setupKeyboardShortcuts(),this.inputEl.focus())}_setupKeyboardShortcuts(){this.inputEl.addEventListener("keydown",e=>{e.key==="ArrowUp"&&this.history.length>0&&(e.preventDefault(),this.inputEl.value=this.history[this.history.length-1].expression)})}async _doEval(e){this.resultEl.textContent="Evaluating...",this.resultEl.classList.remove("u-color-danger");try{let t=this.getValue("pkg-path"),r=this.getValue("domain")||"gno.land",n=t.startsWith(`${r}/`)?t.slice(r.length+1):t,i=await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:n,expression:e})});if(i.status===429)throw new Error("rate limit exceeded \u2014 please wait a moment");if(!i.ok)throw new Error(`HTTP ${i.status}`);let l=await i.json(),s,o;l.error?(s=`Error: ${l.error}`,o=!0):(s=l.result||"(empty result)",o=!1),this.resultEl.textContent=s,this.resultEl.classList.toggle("u-color-danger",o),this._addToHistory(e,s,o)}catch(t){let r=`Error: ${t instanceof Error?t.message:String(t)}`;this.resultEl.textContent=r,this.resultEl.classList.add("u-color-danger"),this._addToHistory(e,r,!0)}}_addToHistory(e,t,r){if(this.history.push({expression:e,result:t,isError:r}),!this.historyListEl)return;this.historySection&&this.historySection.removeAttribute("hidden");let n=document.createElement("div");n.className="b-eval-history-entry";let i=document.createElement("div");i.className="b-eval-history-expr";let l=document.createElement("code");l.className="u-font-mono",l.textContent=e,i.appendChild(l);let s=document.createElement("button");s.className="b-eval-history-rerun",s.textContent="\u21A9",s.title="Re-run",s.addEventListener("click",()=>{this.inputEl.value=e,this._doEval(e)}),i.appendChild(s);let o=document.createElement("pre");o.className=`b-eval-history-result${r?" u-color-danger":""}`,o.textContent=t.length>200?`${t.substring(0,200)}...`:t,n.appendChild(i),n.appendChild(o),this.historyListEl.prepend(n)}evalExpression(e){e.preventDefault();let t=this.inputEl.value.trim();t&&this._doEval(t)}clearResult(){this.resultEl.textContent="// Enter an expression above",this.resultEl.classList.remove("u-color-danger")}quickCall(e){let t=e.params?.funcName||"",r=e.params?.funcSig||"";if(!t)return;let n=r.match(/\(([^)]*)\)/),i=n?n[1]:"";i?(this.inputEl.value=`${t}(${i.split(",").map(l=>{let s=l.trim().split(/\s+/);return s[s.length-1]==="string"?'""':"0"}).join(", ")})`,this.inputEl.focus(),this.inputEl.setSelectionRange(t.length+1,this.inputEl.value.length-1)):(this.inputEl.value=`${t}()`,this._doEval(`${t}()`))}};export{a as EvalController}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index c2c856773c1..11f4819913b 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -1,6 +1,6 @@ :root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-muted:var(--g-color-gray-300,#999);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-muted:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:gray}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;-webkit-text-decoration:none;text-decoration:none;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}a.b-banner:hover{opacity:.9;-webkit-text-decoration:underline;text-decoration:underline}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:1760px){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1580 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);field-sizing:content;max-width:10ch;order:3;outline:none}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) - .nav-theme-label:before{content:"System"}.b-footer .legal{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);margin-top:var(--g-space-3);padding-top:var(--g-space-3)}.b-footer .legal>nav{color:var(--s-color-text-secondary);display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3);margin-top:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .legal>nav{flex-direction:row}.b-footer .legal>nav>a+a:before{color:var(--s-color-text-quaternary);content:"|";margin-right:var(--g-space-3)}}.b-footer .legal>nav:nth-child(3){grid-column:span 2/span 2}.b-footer .legal>:last-child:not(ul),.b-footer .legal>nav li{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.b-footer .legal>:last-child:not(ul){flex-basis:100%}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .legal>:last-child:not(ul){flex-basis:auto;grid-column:span 1/span 1}}.b-footer a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-content-header{display:flex;flex-direction:column;gap:var(--g-space-3);grid-row:span 1/span 1;margin-bottom:var(--g-space-6);margin-top:var(--g-space-10)}@media (min-width:calc(820 / 16 * 1rem)){.b-content-header{grid-column:span 7/span 7;grid-row-start:1;justify-content:space-between;margin-top:var(--g-space-10)}}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header{align-items:center;flex-direction:row}}.b-content-header .title{align-items:center;display:flex;gap:var(--g-space-3)}.b-content-header .header-info{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-12);justify-content:space-between}.b-content-header .b-inline-btn>span{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header .b-inline-btn>span{display:inline}}.b-content-h1{font-size:var(--g-font-size-600);text-align:center}.b-content-h1,.b-content-h2{color:var(--s-color-text-primary);font-weight:var(--g-font-bold)}.b-content-h2{font-size:var(--g-font-size-400);margin-bottom:var(--g-space-4)}.b-btns{align-items:center;display:flex;gap:var(--g-space-1)}@media (min-width:calc(1020 / 16 * 1rem)){.b-btns{gap:var(--g-space-2)}}.b-btn{border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:inline-flex;gap:var(--g-space-1-5);min-width:-moz-max-content;min-width:max-content;padding:var(--g-space-1) var(--g-space-2)}.b-btn:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-btn .c-icon{margin-left:0;margin-right:0}.b-btn--secondary:hover{background-color:var(--s-color-bg-surface-primary)}.b-inline-btn{color:var(--s-color-text-tertiary);cursor:pointer}.b-inline-btn:hover{color:var(--s-color-text-tertiary-hover)}.b-switch input,.b-switch label:last-child{display:none}.b-switch input+label,.b-switch input:checked~label:last-child{display:block}.b-switch input:checked+label{display:none}.b-block-form,.b-inline-form{color:var(--s-color-text-tertiary);display:flex;flex-direction:column;gap:var(--g-space-2) var(--g-space-3)}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form,.b-inline-form{flex-direction:row}}.b-block-form{align-items:stretch}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form{flex-direction:column}}.b-input{border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:flex;font-size:var(--g-font-size-100);min-width:var(--g-space-48);overflow:hidden;position:relative}.b-input>svg{height:var(--g-space-4);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:var(--g-space-4)}.b-input>svg:first-child{left:var(--g-space-2)}.b-input>svg:last-child{right:var(--g-space-2)}.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:has(input:focus),.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input:has(input:focus)>label,.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input>label{align-items:center;background-color:var(--s-color-bg-surface-secondary);gap:var(--g-space-3);white-space:nowrap}.b-input>input,.b-input>label,.b-input>select{display:flex;padding:var(--g-space-1-5) var(--g-space-3)}.b-input>input,.b-input>select{color:inherit;outline:none;width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-input>input,.b-input>select{padding:var(--g-space-1-5) var(--g-space-2)}}.b-input>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-surface-secondary);cursor:pointer}.b-input>select:hover{background-color:var(--s-color-bg-surface-primary)}.b-input>input{background-color:var(--s-color-bg-base);border-left:none}.b-input>label+input{border-left:var(--s-border)}.b-list{margin-bottom:var(--g-space-10)}.b-list>li{border-bottom:var(--s-border);color:var(--s-color-text-tertiary)}.b-list>li:first-child{border-top:var(--s-border)}.b-list>li>a{align-items:center;display:flex;justify-content:space-between;padding:var(--g-space-2)}.b-list>li>a:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-list>li>a .c-icon{margin-left:0}.b-list .name{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:var(--s-color-text-secondary);margin-left:var(--g-space-1);max-width:100%;overflow:hidden;text-overflow:ellipsis}.b-user-sidebar{margin-top:var(--g-space-4)}.b-user-sidebar>*+*{margin-top:var(--g-space-8)}.b-user-sidebar .user-avatar{border:var(--s-border);border-radius:var(--s-rounded);height:var(--g-space-24);width:var(--g-space-24)}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .user-avatar{height:var(--g-space-36);width:var(--g-space-36)}}.b-user-sidebar .user-avatar img,.b-user-sidebar .user-avatar svg{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.b-user-sidebar .user-info{align-items:flex-start;display:flex;gap:var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info{flex-direction:column}}.b-user-sidebar .user-info>div:last-child{align-self:flex-end}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info>div:last-child{align-self:flex-start}}.b-user-sidebar .title{color:var(--s-color-text-primary);display:bock;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);line-height:var(--g-line-height-tight);text-transform:capitalize;word-break:break-all}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .title{font-size:var(--g-font-size-800)}}.b-user-sidebar .subtitle{color:var(--s-color-text-secondary);display:block;font-size:var(--g-font-size-100);line-height:var(--g-line-height-tight);margin-top:var(--g-space-2)}.b-user-sidebar>a{align-items:center;display:flex;justify-content:center}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar>a{display:inline-flex}}.b-sidebar{border-bottom:var(--s-border);grid-column:span 1/span 1;padding-bottom:var(--g-space-10);position:relative}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar{border-bottom:none;grid-column:span 3/span 3;grid-row:span 2/span 2;grid-row-start:1;height:100%;margin-bottom:0;order:2;padding-bottom:0}.b-sidebar+md-renderer:empty+*{grid-row-start:1;padding-top:var(--g-space-6)}.b-sidebar+md-renderer:empty+*,.b-sidebar+md-renderer:has(.b-btn:only-child)+*{grid-row-start:1;padding-top:var(--g-space-6)}}.b-sidebar:first-child{margin-top:var(--g-space-8)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar:first-child{margin-top:0}}.b-sidebar>div{padding-top:var(--g-space-2);position:sticky;top:var(--g-space-14)}.b-sidebar>div:has(.inner):not(:has(nav li)){display:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar>div{padding-bottom:var(--g-space-2)}}.b-sidebar .inner{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded-sm);max-height:100vh;overflow:scroll;scrollbar-width:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner{background-color:var(--g-color-transparent)}}.b-sidebar .inner>nav{display:none;font-size:var(--g-font-size-100);margin-top:var(--g-space-2);padding:var(--g-space-2) var(--g-space-4) var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner>nav{display:block;margin-top:0;padding-bottom:var(--g-space-28);padding-left:0;padding-right:0}.b-sidebar .inner>nav>*{padding-left:0}}.b-sidebar .b-expend-btn{align-items:center;background-color:var(--s-color-bg-base);border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;padding:var(--g-space-2) var(--g-space-4)}.b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .b-expend-btn{border:none;cursor:default;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-top:var(--g-space-10);padding:0}.b-sidebar .b-expend-btn,.b-sidebar .b-expend-btn:hover{background-color:var(--g-color-transparent)}}.b-sidebar .b-expend-btn:has(#toc-expend:checked)+nav{display:block}.b-sidebar .b-expend-btn>input{display:none}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon:before{content:"close"}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon>svg{transform:rotate(180deg)}.b-sidebar .wrapper-icon{align-items:center;display:flex;gap:var(--g-space-1-5)}.b-sidebar .wrapper-icon:before{content:"open"}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .wrapper-icon{display:none}}.dev-mode .b-sidebar .b-expend-btn{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.dev-mode .b-sidebar .b-expend-btn{background-color:var(--g-color-transparent)}}.dev-mode .b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-primary)}.b-source-code{font-family:var(--g-font-mono)}.b-source-code>pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);overflow:scroll;padding:var(--g-space-4) var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-source-code>pre{font-size:var(--g-font-size-200);padding:var(--g-space-8) var(--g-space-3)}}.b-source-code>pre a:hover{-webkit-text-decoration:none;text-decoration:none}[data-theme=dark] .b-source-code>pre{background-color:var(--s-color-bg-base)}.b-toc{list-style:none;margin-top:var(--g-space-2)}.b-toc>*+*{margin-bottom:var(--g-space-1-5);margin-top:var(--g-space-1-5)}.b-toc .b-toc{border-left:1px solid var(--s-color-border-secondary);margin-bottom:var(--g-space-4);padding-left:var(--g-space-4)}.b-toc a>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b-toc a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}main.dev-mode .b-toc a{word-break:break-all}.b-source-toc>.b-toc{margin-bottom:var(--g-space-4)}.b-source-toc>*+*{margin-top:var(--g-space-1-5)}.b-source-toc .accordion summary>svg{transform:rotate(-90deg)}.b-source-toc .accordion summary:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-source-toc .accordion[open] summary>svg{transform:rotate(0deg)}.b-source-toc .accordion>.b-toc{padding-left:var(--g-space-5)}.b-source-toc .accordion h3{font-size:var(--g-font-size-100);font-weight:var(--g-font-medium);margin-top:0}.b-action-overview{margin-bottom:var(--g-space-12)}.b-action-overview>p{font-size:var(--g-font-size-200)}.b-action-function{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);margin-bottom:var(--g-space-3);padding:var(--g-space-4)}.b-action-function .title{align-items:baseline;display:flex;flex-wrap:wrap;font-size:var(--g-font-size-50);gap:var(--g-space-1) var(--g-space-4);margin-bottom:var(--g-space-1)}.b-action-function>header{align-items:flex-start;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;margin-bottom:var(--g-space-4)}.b-action-function>header .signature>code{color:var(--s--text-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-action-function>header .signature{font-size:var(--g-font-size-50)}}.b-action-function>header h2{color:var(--s-color-text-primary);font-size:var(--g-font-size-300);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight)}.b-action-function .description{color:var(--s-color-text-secondary);font-size:var(--g-font-size-200)}.b-action-function .params{align-items:stretch;color:var(--s-color-text-tertiary);display:flex;flex-direction:column;font-size:var(--g-font-size-100);gap:var(--g-space-1);margin-bottom:var(--g-space-1);margin-top:var(--g-space-6);width:100%}.b-action-function .params label{background-color:var(--s-color-bg-surface-primary)}.b-action-function .params .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .params .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .b-alert{background-color:var(--s-color-bg-warning-weak);border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-left-color:var(--s-color-border-warning);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);color:var(--s-color-text-warning);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.b-action-function .b-alert>h1:first-child,.b-action-function .b-alert>h2:first-child,.b-action-function .b-alert>h3:first-child{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2)}.b-action-function .b-alert .b-btn,.b-action-function .b-alert label{background-color:var(--s-color-bg-warning-action);border:none;color:var(--s-color-bg-warning-weak);cursor:pointer}.b-action-function .b-alert .b-btn{margin-top:var(--g-space-4)}.b-code{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);position:relative}.b-code pre{color:var(--s-color-text-secondary);padding:var(--g-space-4);padding-right:var(--g-space-10);white-space:pre-wrap}.b-code .btn-copy{background-color:var(--g-color-transparent);color:var(--s-color-text-tertiary);cursor:pointer;padding:0;position:absolute;right:var(--g-space-2);top:var(--g-space-2)}.b-code .btn-copy:hover{color:var(--s-color-text-primary)}.b-packages{min-height:var(--g-space-96);padding-bottom:var(--g-space-24);scroll-margin-block-start:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages{grid-column:span 7/span 7}}.b-packages .title{color:var(--s-color-text-primary);display:block;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .title{font-size:var(--g-font-size-800)}}.b-packages nav{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--g-space-3);gap:var(--g-space-3);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages nav{border-bottom:var(--s-border);padding-bottom:var(--g-space-2)}}.b-packages .packages-tabs{border-bottom:var(--s-border);color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);gap:var(--g-space-4);grid-column:span 4/span 4;padding-bottom:var(--g-space-2);width:auto}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-tabs{border-bottom:none;font-size:var(--g-font-size-100);grid-column:span 2/span 2;padding-bottom:0;width:100%}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs{gap:var(--g-space-6);margin-left:0;width:100%}}.b-packages .packages-tabs label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-1);position:relative}.b-packages .packages-tabs label:hover{color:var(--s-color-text-tertiary-hover)}.b-packages .packages-tabs label .b-tag--secondary{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs label .b-tag--secondary{display:inline}}.b-packages .packages-filters{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);grid-column:span 2/span 2}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-filters{grid-column:span 1/span 1}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters{justify-content:flex-end}}.b-packages .packages-filters>div{display:grid}.b-packages .packages-filters label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-0-5);grid-column:1/1;grid-row:1/1;justify-content:space-between}.b-packages .packages-filters label:hover>*{color:var(--s-color-text-tertiary-hover)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters label span{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-packages .packages-filters label span{display:inline}}.b-packages .packages-search{display:flex;font-size:var(--g-font-size-100);grid-column:span 2/span 2;position:relative}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 3/span 3}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 1/span 1}}.b-packages .range{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-gap:var(--g-space-2);color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);gap:var(--g-space-2)}.b-packages .range:before{color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-200);font-weight:var(--g-font-weight-bold);grid-column:1/-1;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);text-align:center;width:100%}.b-packages .range:after{content:"Add a package to your namespace to get started";display:none;font-size:var(--g-font-size-100);grid-column:1/-1;text-align:center}.b-packages .range:empty:before{content:"No packages found";display:block}.b-packages .range:empty:after{content:"Add a package to your namespace to get started";display:block}.b-packages article{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded);display:flex;flex-direction:column;gap:var(--g-space-6);padding:var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages article{gap:var(--g-space-2)}}.b-packages article .article-content{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded-sm);display:flex;flex-direction:column;height:100%;padding:var(--g-space-2);width:100%}.b-packages article .article-content .title{align-items:center;display:flex;gap:var(--g-space-2);margin-bottom:var(--g-space-1);overflow:hidden;width:100%}.b-packages article .article-content h3{font-size:var(--g-font-size-200);font-weight:var(--g-font-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article .article-content h3>a{color:var(--s-color-text-link-hover)}.b-packages article .article-content h3>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article .article-content>p{overflow:hidden;text-overflow:ellipsis;width:100%}.b-packages article .article-content>p>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article footer{display:flex;font-size:var(--g-font-size-50);gap:var(--g-space-1);justify-content:space-between;padding-bottom:var(--g-space-1);padding-left:var(--g-space-2);padding-right:var(--g-space-2)}.b-packages article footer time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article footer .size{text-align:right}.b-packages article,.b-packages li{display:none}.b-packages:has(input[value=packages]:checked) li{display:flex}.b-packages:has(input[value=packages]:checked) article{display:flex}.b-packages:has(input[value=realms]:checked) + .nav-theme-label:before{content:"System"}.b-footer .legal{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);margin-top:var(--g-space-3);padding-top:var(--g-space-3)}.b-footer .legal>nav{color:var(--s-color-text-secondary);display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3);margin-top:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .legal>nav{flex-direction:row}.b-footer .legal>nav>a+a:before{color:var(--s-color-text-quaternary);content:"|";margin-right:var(--g-space-3)}}.b-footer .legal>nav:nth-child(3){grid-column:span 2/span 2}.b-footer .legal>:last-child:not(ul),.b-footer .legal>nav li{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.b-footer .legal>:last-child:not(ul){flex-basis:100%}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .legal>:last-child:not(ul){flex-basis:auto;grid-column:span 1/span 1}}.b-footer a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-content-header{display:flex;flex-direction:column;gap:var(--g-space-3);grid-row:span 1/span 1;margin-bottom:var(--g-space-6);margin-top:var(--g-space-10)}@media (min-width:calc(820 / 16 * 1rem)){.b-content-header{grid-column:span 7/span 7;grid-row-start:1;justify-content:space-between;margin-top:var(--g-space-10)}}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header{align-items:center;flex-direction:row}}.b-content-header .title{align-items:center;display:flex;gap:var(--g-space-3)}.b-content-header .header-info{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-12);justify-content:space-between}.b-content-header .b-inline-btn>span{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header .b-inline-btn>span{display:inline}}.b-content-h1{font-size:var(--g-font-size-600);text-align:center}.b-content-h1,.b-content-h2{color:var(--s-color-text-primary);font-weight:var(--g-font-bold)}.b-content-h2{font-size:var(--g-font-size-400);margin-bottom:var(--g-space-4)}.b-btns{align-items:center;display:flex;gap:var(--g-space-1)}@media (min-width:calc(1020 / 16 * 1rem)){.b-btns{gap:var(--g-space-2)}}.b-btn{border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:inline-flex;gap:var(--g-space-1-5);min-width:-moz-max-content;min-width:max-content;padding:var(--g-space-1) var(--g-space-2)}.b-btn:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-btn .c-icon{margin-left:0;margin-right:0}.b-btn--secondary:hover{background-color:var(--s-color-bg-surface-primary)}.b-inline-btn{color:var(--s-color-text-tertiary);cursor:pointer}.b-inline-btn:hover{color:var(--s-color-text-tertiary-hover)}.b-switch input,.b-switch label:last-child{display:none}.b-switch input+label,.b-switch input:checked~label:last-child{display:block}.b-switch input:checked+label{display:none}.b-block-form,.b-inline-form{color:var(--s-color-text-tertiary);display:flex;flex-direction:column;gap:var(--g-space-2) var(--g-space-3)}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form,.b-inline-form{flex-direction:row}}.b-block-form{align-items:stretch}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form{flex-direction:column}}.b-input{border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:flex;font-size:var(--g-font-size-100);min-width:var(--g-space-48);overflow:hidden;position:relative}.b-input>svg{height:var(--g-space-4);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:var(--g-space-4)}.b-input>svg:first-child{left:var(--g-space-2)}.b-input>svg:last-child{right:var(--g-space-2)}.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:has(input:focus),.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input:has(input:focus)>label,.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input>label{align-items:center;background-color:var(--s-color-bg-surface-secondary);gap:var(--g-space-3);white-space:nowrap}.b-input>input,.b-input>label,.b-input>select{display:flex;padding:var(--g-space-1-5) var(--g-space-3)}.b-input>input,.b-input>select{color:inherit;outline:none;width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-input>input,.b-input>select{padding:var(--g-space-1-5) var(--g-space-2)}}.b-input>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-surface-secondary);cursor:pointer}.b-input>select:hover{background-color:var(--s-color-bg-surface-primary)}.b-input>input{background-color:var(--s-color-bg-base);border-left:none}.b-input>label+input{border-left:var(--s-border)}.b-list{margin-bottom:var(--g-space-10)}.b-list>li{border-bottom:var(--s-border);color:var(--s-color-text-tertiary)}.b-list>li:first-child{border-top:var(--s-border)}.b-list>li>a{align-items:center;display:flex;justify-content:space-between;padding:var(--g-space-2)}.b-list>li>a:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-list>li>a .c-icon{margin-left:0}.b-list .name{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:var(--s-color-text-secondary);margin-left:var(--g-space-1);max-width:100%;overflow:hidden;text-overflow:ellipsis}.b-user-sidebar{margin-top:var(--g-space-4)}.b-user-sidebar>*+*{margin-top:var(--g-space-8)}.b-user-sidebar .user-avatar{border:var(--s-border);border-radius:var(--s-rounded);height:var(--g-space-24);width:var(--g-space-24)}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .user-avatar{height:var(--g-space-36);width:var(--g-space-36)}}.b-user-sidebar .user-avatar img,.b-user-sidebar .user-avatar svg{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.b-user-sidebar .user-info{align-items:flex-start;display:flex;gap:var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info{flex-direction:column}}.b-user-sidebar .user-info>div:last-child{align-self:flex-end}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info>div:last-child{align-self:flex-start}}.b-user-sidebar .title{color:var(--s-color-text-primary);display:bock;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);line-height:var(--g-line-height-tight);text-transform:capitalize;word-break:break-all}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .title{font-size:var(--g-font-size-800)}}.b-user-sidebar .subtitle{color:var(--s-color-text-secondary);display:block;font-size:var(--g-font-size-100);line-height:var(--g-line-height-tight);margin-top:var(--g-space-2)}.b-user-sidebar>a{align-items:center;display:flex;justify-content:center}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar>a{display:inline-flex}}.b-sidebar{border-bottom:var(--s-border);grid-column:span 1/span 1;padding-bottom:var(--g-space-10);position:relative}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar{border-bottom:none;grid-column:span 3/span 3;grid-row:span 2/span 2;grid-row-start:1;height:100%;margin-bottom:0;order:2;padding-bottom:0}.b-sidebar+md-renderer:empty+*{grid-row-start:1;padding-top:var(--g-space-6)}.b-sidebar+md-renderer:empty+*,.b-sidebar+md-renderer:has(.b-btn:only-child)+*{grid-row-start:1;padding-top:var(--g-space-6)}}.b-sidebar:first-child{margin-top:var(--g-space-8)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar:first-child{margin-top:0}}.b-sidebar>div{padding-top:var(--g-space-2);position:sticky;top:var(--g-space-14)}.b-sidebar>div:has(.inner):not(:has(nav li)){display:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar>div{padding-bottom:var(--g-space-2)}}.b-sidebar .inner{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded-sm);max-height:100vh;overflow:scroll;scrollbar-width:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner{background-color:var(--g-color-transparent)}}.b-sidebar .inner>nav{display:none;font-size:var(--g-font-size-100);margin-top:var(--g-space-2);padding:var(--g-space-2) var(--g-space-4) var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner>nav{display:block;margin-top:0;padding-bottom:var(--g-space-28);padding-left:0;padding-right:0}.b-sidebar .inner>nav>*{padding-left:0}}.b-sidebar .b-expend-btn{align-items:center;background-color:var(--s-color-bg-base);border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;padding:var(--g-space-2) var(--g-space-4)}.b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .b-expend-btn{border:none;cursor:default;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-top:var(--g-space-10);padding:0}.b-sidebar .b-expend-btn,.b-sidebar .b-expend-btn:hover{background-color:var(--g-color-transparent)}}.b-sidebar .b-expend-btn:has(#toc-expend:checked)+nav{display:block}.b-sidebar .b-expend-btn>input{display:none}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon:before{content:"close"}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon>svg{transform:rotate(180deg)}.b-sidebar .wrapper-icon{align-items:center;display:flex;gap:var(--g-space-1-5)}.b-sidebar .wrapper-icon:before{content:"open"}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .wrapper-icon{display:none}}.dev-mode .b-sidebar .b-expend-btn{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.dev-mode .b-sidebar .b-expend-btn{background-color:var(--g-color-transparent)}}.dev-mode .b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-primary)}.b-source-code{font-family:var(--g-font-mono)}.b-source-code>pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);overflow:scroll;padding:var(--g-space-4) var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-source-code>pre{font-size:var(--g-font-size-200);padding:var(--g-space-8) var(--g-space-3)}}.b-source-code>pre a:hover{-webkit-text-decoration:none;text-decoration:none}[data-theme=dark] .b-source-code>pre{background-color:var(--s-color-bg-base)}.b-toc{list-style:none;margin-top:var(--g-space-2)}.b-toc>*+*{margin-bottom:var(--g-space-1-5);margin-top:var(--g-space-1-5)}.b-toc .b-toc{border-left:1px solid var(--s-color-border-secondary);margin-bottom:var(--g-space-4);padding-left:var(--g-space-4)}.b-toc a>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b-toc a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}main.dev-mode .b-toc a{word-break:break-all}.b-source-toc>.b-toc{margin-bottom:var(--g-space-4)}.b-source-toc>*+*{margin-top:var(--g-space-1-5)}.b-source-toc .accordion summary>svg{transform:rotate(-90deg)}.b-source-toc .accordion summary:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-source-toc .accordion[open] summary>svg{transform:rotate(0deg)}.b-source-toc .accordion>.b-toc{padding-left:var(--g-space-5)}.b-source-toc .accordion h3{font-size:var(--g-font-size-100);font-weight:var(--g-font-medium);margin-top:0}.b-action-overview{margin-bottom:var(--g-space-12)}.b-action-overview>p{font-size:var(--g-font-size-200)}.b-action-function{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);margin-bottom:var(--g-space-3);padding:var(--g-space-4)}.b-action-function .title{align-items:baseline;display:flex;flex-wrap:wrap;font-size:var(--g-font-size-50);gap:var(--g-space-1) var(--g-space-4);margin-bottom:var(--g-space-1)}.b-action-function>header{align-items:flex-start;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;margin-bottom:var(--g-space-4)}.b-action-function>header .signature>code{color:var(--s--text-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-action-function>header .signature{font-size:var(--g-font-size-50)}}.b-action-function>header h2{color:var(--s-color-text-primary);font-size:var(--g-font-size-300);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight)}.b-action-function .description{color:var(--s-color-text-secondary);font-size:var(--g-font-size-200)}.b-action-function .params{align-items:stretch;color:var(--s-color-text-tertiary);display:flex;flex-direction:column;font-size:var(--g-font-size-100);gap:var(--g-space-1);margin-bottom:var(--g-space-1);margin-top:var(--g-space-6);width:100%}.b-action-function .params label{background-color:var(--s-color-bg-surface-primary)}.b-action-function .params .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .params .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .b-alert{background-color:var(--s-color-bg-warning-weak);border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-left-color:var(--s-color-border-warning);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);color:var(--s-color-text-warning);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.b-action-function .b-alert>h1:first-child,.b-action-function .b-alert>h2:first-child,.b-action-function .b-alert>h3:first-child{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2)}.b-action-function .b-alert .b-btn,.b-action-function .b-alert label{background-color:var(--s-color-bg-warning-action);border:none;color:var(--s-color-bg-warning-weak);cursor:pointer}.b-action-function .b-alert .b-btn{margin-top:var(--g-space-4)}.b-code{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);position:relative}.b-code pre{color:var(--s-color-text-secondary);padding:var(--g-space-4);padding-right:var(--g-space-10);white-space:pre-wrap}.b-code .btn-copy{background-color:var(--g-color-transparent);color:var(--s-color-text-tertiary);cursor:pointer;padding:0;position:absolute;right:var(--g-space-2);top:var(--g-space-2)}.b-code .btn-copy:hover{color:var(--s-color-text-primary)}.b-action-eval{display:flex;flex-direction:column;gap:var(--g-space-4);margin-bottom:var(--g-space-8)}.b-action-eval .b-content-h2{margin-bottom:0}.b-action-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-action-eval-form .b-input--full{flex:1}.b-action-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-action-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-action-eval-result-title{font-size:var(--g-font-size-50);letter-spacing:.05em}.b-action-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-50)}.b-action-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-action-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-action-eval-history,.b-action-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-action-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-action-eval-history-entry+.b-action-eval-history-entry{margin-top:var(--g-space-1)}.b-action-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-action-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-action-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-action-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-packages{min-height:var(--g-space-96);padding-bottom:var(--g-space-24);scroll-margin-block-start:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages{grid-column:span 7/span 7}}.b-packages .title{color:var(--s-color-text-primary);display:block;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .title{font-size:var(--g-font-size-800)}}.b-packages nav{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--g-space-3);gap:var(--g-space-3);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages nav{border-bottom:var(--s-border);padding-bottom:var(--g-space-2)}}.b-packages .packages-tabs{border-bottom:var(--s-border);color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);gap:var(--g-space-4);grid-column:span 4/span 4;padding-bottom:var(--g-space-2);width:auto}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-tabs{border-bottom:none;font-size:var(--g-font-size-100);grid-column:span 2/span 2;padding-bottom:0;width:100%}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs{gap:var(--g-space-6);margin-left:0;width:100%}}.b-packages .packages-tabs label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-1);position:relative}.b-packages .packages-tabs label:hover{color:var(--s-color-text-tertiary-hover)}.b-packages .packages-tabs label .b-tag--secondary{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs label .b-tag--secondary{display:inline}}.b-packages .packages-filters{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);grid-column:span 2/span 2}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-filters{grid-column:span 1/span 1}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters{justify-content:flex-end}}.b-packages .packages-filters>div{display:grid}.b-packages .packages-filters label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-0-5);grid-column:1/1;grid-row:1/1;justify-content:space-between}.b-packages .packages-filters label:hover>*{color:var(--s-color-text-tertiary-hover)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters label span{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-packages .packages-filters label span{display:inline}}.b-packages .packages-search{display:flex;font-size:var(--g-font-size-100);grid-column:span 2/span 2;position:relative}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 3/span 3}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 1/span 1}}.b-packages .range{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-gap:var(--g-space-2);color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);gap:var(--g-space-2)}.b-packages .range:before{color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-200);font-weight:var(--g-font-weight-bold);grid-column:1/-1;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);text-align:center;width:100%}.b-packages .range:after{content:"Add a package to your namespace to get started";display:none;font-size:var(--g-font-size-100);grid-column:1/-1;text-align:center}.b-packages .range:empty:before{content:"No packages found";display:block}.b-packages .range:empty:after{content:"Add a package to your namespace to get started";display:block}.b-packages article{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded);display:flex;flex-direction:column;gap:var(--g-space-6);padding:var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages article{gap:var(--g-space-2)}}.b-packages article .article-content{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded-sm);display:flex;flex-direction:column;height:100%;padding:var(--g-space-2);width:100%}.b-packages article .article-content .title{align-items:center;display:flex;gap:var(--g-space-2);margin-bottom:var(--g-space-1);overflow:hidden;width:100%}.b-packages article .article-content h3{font-size:var(--g-font-size-200);font-weight:var(--g-font-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article .article-content h3>a{color:var(--s-color-text-link-hover)}.b-packages article .article-content h3>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article .article-content>p{overflow:hidden;text-overflow:ellipsis;width:100%}.b-packages article .article-content>p>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article footer{display:flex;font-size:var(--g-font-size-50);gap:var(--g-space-1);justify-content:space-between;padding-bottom:var(--g-space-1);padding-left:var(--g-space-2);padding-right:var(--g-space-2)}.b-packages article footer time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article footer .size{text-align:right}.b-packages article,.b-packages li{display:none}.b-packages:has(input[value=packages]:checked) li{display:flex}.b-packages:has(input[value=packages]:checked) article{display:flex}.b-packages:has(input[value=realms]:checked) li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval{display:flex;flex-direction:column;gap:var(--g-space-6);grid-column:1/-1;min-height:70vh}.b-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-eval-form .b-input--full{flex:1}.b-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-eval-result-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-eval-functions{list-style:disc;padding-left:var(--g-space-4)}.b-eval-functions,.b-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-eval-history-list{justify-content:flex-start}.b-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-eval-history-entry+.b-eval-history-entry{margin-top:var(--g-space-1)}.b-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From e44f0b659dbb82266a7e5ca27532155f2b42a53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 11 May 2026 15:26:55 +0200 Subject: [PATCH 26/40] feat(gnoweb): add edit link to ".gno" source files (#5631) Addresses milestone 1 (M1) from #5549 The "Edit" link opens the file being edited in the built-in playground within the package/realm fork mode. --- gno.land/pkg/gnoweb/components/view_playground.go | 2 ++ gno.land/pkg/gnoweb/components/view_source.go | 3 +++ gno.land/pkg/gnoweb/components/views/playground.html | 3 ++- gno.land/pkg/gnoweb/components/views/source.html | 8 ++++++++ .../pkg/gnoweb/frontend/js/controller-playground.ts | 8 ++++++++ gno.land/pkg/gnoweb/handler_http.go | 11 +++++++++++ .../pkg/gnoweb/public/js/controller-playground.js | 2 +- 7 files changed, 35 insertions(+), 2 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/view_playground.go b/gno.land/pkg/gnoweb/components/view_playground.go index 0806f07fa7e..d6ffa7657e2 100644 --- a/gno.land/pkg/gnoweb/components/view_playground.go +++ b/gno.land/pkg/gnoweb/components/view_playground.go @@ -13,6 +13,8 @@ type PlaygroundData struct { ChainId string // Domain is the node domain Domain string + // DefaultFile is the filename that should be focus on first load + DefaultFile string } func PlaygroundView(data PlaygroundData) *View { diff --git a/gno.land/pkg/gnoweb/components/view_source.go b/gno.land/pkg/gnoweb/components/view_source.go index f4ab71b4594..8137342780a 100644 --- a/gno.land/pkg/gnoweb/components/view_source.go +++ b/gno.land/pkg/gnoweb/components/view_source.go @@ -21,6 +21,7 @@ type SourceData struct { FileLines int FileCounter int FileDownload string + FileEdit string FileSource Component } @@ -65,6 +66,7 @@ type sourceViewParams struct { FileCounter int PkgPath string FileDownload string + FileEdit string ComponentTOC Component } @@ -114,6 +116,7 @@ func SourceView(data SourceData) *View { FileCounter: data.FileCounter, PkgPath: data.PkgPath, FileDownload: data.FileDownload, + FileEdit: data.FileEdit, } return NewTemplateView(SourceViewType, "renderSource", viewData) diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index d5d0ac853e5..f2238c0eb8a 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -7,7 +7,8 @@ data-playground-remote-value="{{ .Remote }}" data-playground-chain-id-value="{{ .ChainId }}" data-playground-domain-value="{{ .Domain }}" - {{ with .ForkFrom }}data-playground-fork-from-value="{{ . }}"{{ end }}> + {{ with .ForkFrom }}data-playground-fork-from-value="{{ . }}"{{ end }} + {{ with .DefaultFile }}data-playground-default-file-value="{{ . }}"{{ end }}>
diff --git a/gno.land/pkg/gnoweb/components/views/source.html b/gno.land/pkg/gnoweb/components/views/source.html index 0691ccb2e31..09874c6af50 100644 --- a/gno.land/pkg/gnoweb/components/views/source.html +++ b/gno.land/pkg/gnoweb/components/views/source.html @@ -22,6 +22,14 @@

{{ .FileName }}

Download + {{ with .FileEdit }} + + + + + Edit + + {{ end }}

diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 5433c3061e7..93da1affdcb 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -78,6 +78,7 @@ export class PlaygroundController extends BaseController { this._parseInitialCode(initialCodeEl.value); this._createEditor(); + this._switchToDefaultFile(); this._setupTabsScroll(); this.renderTabs(); @@ -155,6 +156,13 @@ export class PlaygroundController extends BaseController { } } + private _switchToDefaultFile(): void { + const defaultFile = this.getValue("default-file"); + if (defaultFile) { + this._switchToFile(defaultFile); + } + } + private _createEditor(): void { this.langCompartment = new Compartment(); this.themeCompartment = new Compartment(); diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index 6402f39df11..8179151662b 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -11,6 +11,7 @@ import ( "io" "log/slog" "net/http" + "net/url" "path" "slices" "sort" @@ -637,6 +638,14 @@ func (h *HTTPHandler) GetSourceView(ctx context.Context, gnourl *weburl.GnoURL) fileSizeStr := fmt.Sprintf("%.2f Kb", sizeKB) + var fileEdit string + if strings.HasSuffix(fileName, ".gno") { + editURL := *gnourl + editURL.WebQuery = url.Values{"fork": {""}} + editURL.Query = url.Values{"file": {fileName}} + fileEdit = editURL.EncodeWebURL() + } + return http.StatusOK, components.SourceView(components.SourceData{ PkgPath: gnourl.Path, Files: files, @@ -645,6 +654,7 @@ func (h *HTTPHandler) GetSourceView(ctx context.Context, gnourl *weburl.GnoURL) FileLines: fileLines, FileSize: fileSizeStr, FileDownload: gnourl.Path + "$download&file=" + fileName, + FileEdit: fileEdit, FileSource: fileSource, }) } @@ -813,6 +823,7 @@ func (h *HTTPHandler) GetForkView(ctx context.Context, gnourl *weburl.GnoURL) (i Remote: h.Static.RemoteHelp, ChainId: h.Static.ChainId, Domain: h.Static.Domain, + DefaultFile: gnourl.Query.Get("file"), }) } diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 77469e846f8..0827fdc944c 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -10,7 +10,7 @@ var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2, `))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var cp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var up=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];v.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)O[_++]=L[N],O[_++]=L[N+1]-H,O[_++]=L[N+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var bp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var vp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` `);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Bp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(Ka,0);var Du=jr((n,t)=>Ka(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Wp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),ju=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} From ffc403d7b7462014a1bcaa8f031ba4e1100365b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 11 May 2026 16:07:10 +0200 Subject: [PATCH 27/40] feat(gnoweb): support multiple file download in built-in playground (#5638) Adds support for downloading multiple playground files as ".tar", or as a single ".gno" file when only one file is available. Downloading multiple files is handy in case users want to use `gnokey` to run or deploy the code written in the playground. --- .../gnoweb/components/views/playground.html | 4 + .../frontend/js/controller-playground.ts | 87 +++++++++++++++++++ gno.land/pkg/gnoweb/handler_http.go | 2 +- .../gnoweb/public/js/controller-playground.js | 20 ++--- 4 files changed, 102 insertions(+), 11 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index f2238c0eb8a..c35c2339142 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -39,6 +39,10 @@

Share +

diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 93da1affdcb..798a78a7cc1 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -377,7 +377,94 @@ export class PlaygroundController extends BaseController { .catch(() => this._setOutput(`Share URL:\n${url}`)); } + public downloadFiles(): void { + // Make sure current file content is the latest when downloading + this.files[this.activeFile].content = this.codeEl.value; + + if (this.files.length === 1) { + this._triggerDownload( + new Blob([this.files[0].content], { type: "text/plain" }), + this.files[0].name, + ); + } else { + this._triggerDownload( + new Blob([createTar(this.files)], { type: "application/x-tar" }), + "playground-gno-source-code.tar", + ); + } + } + + private _triggerDownload(blob: Blob, filename: string): void { + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + a.click(); + URL.revokeObjectURL(url); + } + public clearOutput(): void { this._setOutput("// Run code to see output here"); } } + +function createTar(files: { name: string; content: string }[]): Uint8Array { + const encoder = new TextEncoder(); + const blocks: Uint8Array[] = []; + + for (const file of files) { + const data = encoder.encode(file.content); + + // TAR's numeric fields are ASCII octal strings + const timestamp = Math.floor(Date.now() / 1000).toString(8); + + // Unix Standard TAR header: 512-byte fixed-field block preceding each file's data. + // Spec: https://www.gnu.org/software/tar/manual/html_node/Standard.html + // Fields: https://en.wikipedia.org/wiki/Tar_(computing)#UStar_format + const header = new Uint8Array(512); + + header.set(encoder.encode(file.name).slice(0, 100), 0); + header.set(encoder.encode("0000644\0"), 100); // file mode + header.set(encoder.encode("0000000\0"), 108); // uid + header.set(encoder.encode("0000000\0"), 116); // gid + header.set( + encoder.encode(`${data.length.toString(8).padStart(11, "0")}\0`), + 124, + ); // file size + header.set(encoder.encode(`${timestamp.padStart(11, "0")}\0`), 136); // mtime + header.fill(0x20, 148, 156); // checksum placeholder (spaces) + header[156] = 0x30; // typeflag '0' = regular file + header.set(encoder.encode("ustar\0"), 257); // magic + header.set(encoder.encode("00"), 263); // version + + // Sum all 512 header bytes (the 8 checksum bytes count as spaces, already + // set above), then write the result as 6 octal digits + NUL + space + // back into the checksum field at offset 148. + let sum = 0; + for (let i = 0; i < 512; i++) sum += header[i]; + header.set(encoder.encode(`${sum.toString(8).padStart(6, "0")}\0 `), 148); + + // Round up to the next 512-byte boundary because TAR requires + // file data to be padded to a multiple of 512 bytes. + // Extra space is padded with zeros. + const padded = new Uint8Array(Math.ceil(data.length / 512) * 512); + padded.set(data); + + blocks.push(header); + blocks.push(padded); + } + + // EOF, marked by two zero blocks + blocks.push(new Uint8Array(1024)); + + // Concatenate all blocks into a single flat byte array. Each block is + // copied into its position in the output buffer using a running offset. + const total = blocks.reduce((n, b) => n + b.length, 0); + const out = new Uint8Array(total); + let off = 0; + for (const b of blocks) { + out.set(b, off); + off += b.length; + } + return out; +} diff --git a/gno.land/pkg/gnoweb/handler_http.go b/gno.land/pkg/gnoweb/handler_http.go index 8179151662b..a7f1d7d80e0 100644 --- a/gno.land/pkg/gnoweb/handler_http.go +++ b/gno.land/pkg/gnoweb/handler_http.go @@ -802,7 +802,7 @@ func (h *HTTPHandler) GetForkView(ctx context.Context, gnourl *weburl.GnoURL) (i // Collect all .gno files var allCode strings.Builder for _, fileName := range files { - if !strings.HasSuffix(fileName, ".gno") { + if !strings.HasSuffix(fileName, ".gno") && fileName != "gnomod.toml" { continue } file, _, err := h.Client.File(ctx, pkgPath, fileName) diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 0827fdc944c..8daef176cbc 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,16 +1,16 @@ -var Un=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:_h)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=eo(i);t=0&&Zr(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function _h(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=qh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:_h)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=Un(n,t);for(t+=eo(i);t=0&&Zr(Un(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function _h(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=qh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` `){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ne(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` `){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function qh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` -`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),Ut=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends Ut{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Uh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Uh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new j(this,t)}},j=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};j.reconfigure=j.define();j.appendConfig=j.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(j.reconfigure)?(e=null,i=l.value):l.is(j.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` -`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=j.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new ji(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new ji(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of jh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Uh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function jh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(Ui in Gt)Fe.hasOwnProperty(Ui)||(Fe[Ui]=Gt[Ui]);var Ui;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=j.define({map:(n,t)=>n.map(t)}),Ol=j.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],U=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof je)return t;return null}static get(t){return t.cmTile}},$e=class extends U{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var je=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=U.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},Ue=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends U{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=U.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=U.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=Ue.start(t,e||((i=this.cache.find(Ue))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,Ue,we,at,Ge,Yt,je];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=U.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Ue(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=U.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new je(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&U.get(e.text)&&l.cache.reused.set(U.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!U.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=U.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=U.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` -`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=U.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=U.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!_f(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=U.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Uf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=U.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var jl=mt.define();function Ul(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:jl.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Ul(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var jo=new Set;function rc(n){jo.has(n)||(jo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Uo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Uo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Us(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=U.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(jl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ul(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&U.get(i)||U.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=j.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var cp=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var up=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let jt=r[E];v.push(jt),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let jt=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=jt.length;for(;l.pos>gt;)Ft=b(Z.start,jt,Ft);Ht=new se(jt,H-Z.start,i),pt=Z.start-A}else{let jt=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>jt;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,jt,gt,Ft):c(O,jt,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)O[_++]=L[N],O[_++]=L[N+1]-H,O[_++]=L[N+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var bp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Uc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Uc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var vp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Ol=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!_f(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=Uf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||jf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function Uf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],jf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function rc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let Ut=r[E];v.push(Ut),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)O[_++]=L[N],O[_++]=L[N+1]-H,O[_++]=L[N+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Uc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Uc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&jc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function jc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Bp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Ur(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=jr(Eu,0);var Tu=jr(Ka,0);var Du=jr((n,t)=>Ka(n,t,Bu(t)),0);function Ur(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>Ur(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),ja=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ua(n={}){return[ja,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(ja,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&Ut.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,j.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Wp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),ju=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Uu=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Uu,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(jd)];import{BaseController as Ud}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends Ud{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),Ua(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=Ur(Eu,0);var Tu=Ur(Ka,0);var Du=Ur((n,t)=>Ka(n,t,Bu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),Uu=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var ju=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:ju,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Uu,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),Ud=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(Ud)];import{BaseController as jd}from"./controller.js";var Gd="gnomod.toml",Jd=`package main +`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends jd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} @@ -36,4 +36,4 @@ ${a.content}`).join(` `),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Yd){this._setOutput(`Error: code is too large to share via URL. Try reducing the code or splitting into a deployed package.`,!0);return}navigator.clipboard.writeText(l).then(()=>this._setOutput("Share URL copied to clipboard!")).catch(()=>this._setOutput(`Share URL: -${l}`))}clearOutput(){this._setOutput("// Run code to see output here")}};export{Vh as PlaygroundController}; +${l}`))}downloadFiles(){this.files[this.activeFile].content=this.codeEl.value,this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{Vh as PlaygroundController}; From c5a4a10c89b82df9101df9523cc01af52d44ec30 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Thu, 14 May 2026 14:25:02 +0200 Subject: [PATCH 28/40] chore: scroll to playground output when new output is assigned Done to bring output into view when the view is only the editor. --- gno.land/pkg/gnoweb/frontend/js/controller-playground.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 798a78a7cc1..992b19fe086 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -229,6 +229,7 @@ export class PlaygroundController extends BaseController { private _setOutput(text: string, isError: boolean = false): void { this.outputEl.textContent = text; this.outputEl.classList.toggle("u-color-danger", isError); + this.outputEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); } private _switchToFile(fileName: string): boolean { From 5ebc0b1c2f1f59af9cc3b0ad2b4f9c2ff7f12e16 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Fri, 15 May 2026 11:18:02 +0200 Subject: [PATCH 29/40] chore: fix typing and element reference issue in playground controller --- gno.land/pkg/gnoweb/frontend/js/controller-playground.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 992b19fe086..351b3def423 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -380,7 +380,7 @@ export class PlaygroundController extends BaseController { public downloadFiles(): void { // Make sure current file content is the latest when downloading - this.files[this.activeFile].content = this.codeEl.value; + this.files[this.activeFile].content = this._getCode(); if (this.files.length === 1) { this._triggerDownload( @@ -409,7 +409,7 @@ export class PlaygroundController extends BaseController { } } -function createTar(files: { name: string; content: string }[]): Uint8Array { +function createTar(files: { name: string; content: string }[]): Uint8Array { const encoder = new TextEncoder(); const blocks: Uint8Array[] = []; From 12d08db4aca13044ef1a8e81d23e1a0612a0b592 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Fri, 15 May 2026 11:41:13 +0200 Subject: [PATCH 30/40] ci: lint and make generate --- .../pkg/gnoweb/frontend/js/controller-playground.ts | 4 +++- .../pkg/gnoweb/public/js/controller-playground.js | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 351b3def423..553ac4a9cbf 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -409,7 +409,9 @@ export class PlaygroundController extends BaseController { } } -function createTar(files: { name: string; content: string }[]): Uint8Array { +function createTar( + files: { name: string; content: string }[], +): Uint8Array { const encoder = new TextEncoder(); const blocks: Uint8Array[] = []; diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 8daef176cbc..ebd0413cdb5 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -4,13 +4,13 @@ var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2, `,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of jh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Uh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function jh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` `}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Oo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Ol=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Bf(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Bf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Bo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Oo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Oo,gecko_version:Oo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Bl=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ol=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Bf(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Of(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Bf(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Of(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` `,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!_f(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=Uf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||jf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function Uf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],jf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function rc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Bc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Bc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:O,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let Ut=r[E];v.push(Ut),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,O,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)O[_++]=L[N],O[_++]=L[N+1]-H,O[_++]=L[N+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,O,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new B({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Uc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Uc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&jc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function jc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Ba.of(n),gu]}var mu=new B;function Nr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=Uf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||jf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function Uf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Bt)e(i).handlers.push(Bt[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],jf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Bt=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Bt.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Bt.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Bt.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Bt.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Bt.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Bt.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Bt.copy=Bt.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Bt.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function rc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Ol,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Ol;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Bo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2B&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=B,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(B,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Bc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Bc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Oc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Oc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Ot=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Ot.prototype.elementClass="";Ot.prototype.toDOM=void 0;Ot.prototype.mapMode=lt.TrackBefore;Ot.prototype.startSide=Ot.prototype.endSide=-1;Ot.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Ot{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},O=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};O.closedBy=new O({deserialize:n=>n.split(" ")});O.openedBy=new O({deserialize:n=>n.split(" ")});O.group=new O({deserialize:n=>n.split(" ")});O.isolate=new O({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});O.contextHash=new O({perNode:!0});O.lookAhead=new O({perNode:!0});O.mounted=new O({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[O.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(O.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(O.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends Bn{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:B,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let Ut=r[E];v.push(Ut),I.push(B-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=B-A;if(H-B<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,B,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(B,Ut,gt,Ft):c(B,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-B,Qr,Qr)}else Ht=g(ft,gt,Ft,H-B,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:B,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)B[_++]=L[N],B[_++]=L[N+1]-H,B[_++]=L[N+2]-H,B[_++]=_;v.push(new se(B,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,B,H;if(E>=0&&(B=v[E])instanceof G){if(!E&&B.type==A&&B.length==L)return B;(H=B.prop(O.lookAhead))&&(W=I[E]+B.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,B,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,B-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let B=[O.contextHash,W];E=E?[B].concat(E):[B]}if(L>25){let B=[O.lookAhead,L];E=E?[B].concat(E):[B]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,B={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){B.size=I,B.start=L,B.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(B.size=I,B.start=L,B.skip=W),B.size>4?B:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=B,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new O({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Uc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Uc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&jc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function jc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new O({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(O.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,On=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:On,lineComment:x(On),blockComment:x(On),docComment:x(On),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new O;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new O,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(O.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Bi=null,Oi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Bi;Bi=this;try{return t()}finally{Bi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Bi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Bi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Oi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Be=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new O;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(O.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Be{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Or(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Or(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Or(t.state),s=i!=Or(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Ba="()[]{}",Oa=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ba,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Oa);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Oa.of(n),gu]}var mu=new O;function Nr(n,t,e){let i=n.prop(t<0?O.openedBy:O.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Ba,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new O({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Oi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Oi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=Ur(Eu,0);var Tu=Ur(Ka,0);var Du=Ur((n,t)=>Ka(n,t,Bu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Bu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),Uu=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var ju=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Bd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:ju,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Uu,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Bd},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),Ud=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(Ud)];import{BaseController as jd}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends jd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=Ur(Eu,0);var Tu=Ur(Ka,0);var Du=Ur((n,t)=>Ka(n,t,Ou(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Bu(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Ou(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Bu(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Oe.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Oe(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Oe(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Oe=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?O.closedBy:O.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),Uu=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var ju=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(O.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Bd=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Be(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Od=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Be(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:ju,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Uu,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Bd},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Od},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Oh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Oh(n.indented,t,e,null,n.context)}function Bh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Oh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Bh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),Ud=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(Ud)];import{BaseController as jd}from"./controller.js";var Gd="gnomod.toml",Jd=`package main +`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends jd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} @@ -36,4 +36,4 @@ ${a.content}`).join(` `),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Yd){this._setOutput(`Error: code is too large to share via URL. Try reducing the code or splitting into a deployed package.`,!0);return}navigator.clipboard.writeText(l).then(()=>this._setOutput("Share URL copied to clipboard!")).catch(()=>this._setOutput(`Share URL: -${l}`))}downloadFiles(){this.files[this.activeFile].content=this.codeEl.value,this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{Vh as PlaygroundController}; +${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{Vh as PlaygroundController}; From d6733c5405476123f4420ad3915d0f4aa142c05b Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Fri, 15 May 2026 12:10:43 +0200 Subject: [PATCH 31/40] fix: avoid TAR Slip / Path Traversal issue --- .../frontend/js/controller-playground.ts | 44 ++++++++++++++++--- .../gnoweb/public/js/controller-playground.js | 26 +++++------ 2 files changed, 51 insertions(+), 19 deletions(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 553ac4a9cbf..30fb4cc43ac 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -140,17 +140,33 @@ export class PlaygroundController extends BaseController { this._scrollByPage(1); } + private _isValidFileName(name: string): boolean { + return name.endsWith(".gno") || name === GNOMOD_FILE; + } + private _parseInitialCode(initialCode: string): void { if (initialCode.includes("// --- ") && initialCode.includes(" ---")) { const parts = initialCode.split(/^\/\/ --- (.+?) ---$/m); for (let i = 1; i < parts.length; i += 2) { const name = parts[i].trim(); const content = (parts[i + 1] || "").trim(); - if (name) this.files.push({ name, content }); + + // Make sure file name has no path prefix + if (name.includes("/") || name.includes("\\") || name.includes("..")) { + console.warn( + `PlaygroundControler: rejected unsafe file name: "${name}"`, + ); + continue; + } + + if (name && this._isValidFileName(name)) { + this.files.push({ name, content }); + } } - if (this.files.length === 0) + if (this.files.length === 0) { this.files = [{ name: "main.gno", content: initialCode }]; + } } else { this.files = [{ name: "main.gno", content: initialCode }]; } @@ -269,14 +285,19 @@ export class PlaygroundController extends BaseController { const name = prompt("File name (e.g. main.gno or gnomod.toml):"); if (name == null) return; + // If a file with the same name exists, switch to it if (this._switchToFile(name)) return; - const isGnomod = name === GNOMOD_FILE; - if (!name.endsWith(".gno") && !isGnomod) return; + if (!this._isValidFileName(name)) { + console.error( + `PlaygroundController: invalid name, file not added: ${name}`, + ); + return; + } - const domain = this.getValue("domain") || "gno.land"; let content = DEFAULT_GNO_CONTENT; - if (isGnomod) { + if (name === GNOMOD_FILE) { + const domain = this.getValue("domain") || "gno.land"; content = `module = "${domain}/r/yourname/pkg"\ngno = "0.9"`; } @@ -416,6 +437,17 @@ function createTar( const blocks: Uint8Array[] = []; for (const file of files) { + if ( + file.name.includes("/") || + file.name.includes("\\") || + file.name.includes("..") + ) { + console.error( + `PlaygroundController: skipped file with unsafe name in tar: "${file.name}"`, + ); + continue; + } + const data = encoder.encode(file.content); // TAR's numeric fields are ASCII octal strings diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index ebd0413cdb5..f34b982be77 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,17 +1,17 @@ -var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:_h)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=Un(n,t);for(t+=eo(i);t=0&&Zr(Un(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function _h(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ne(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ne(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=qh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ne(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` -`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ne(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` -`){[t,e]=Ne(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function qh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` -`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ne(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function Kh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!$h(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Kh(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of jh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Uh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function jh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Gh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ie(r),!1)}return n}function Yh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Xh=[];function Ie(n){return n==null?Xh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Qh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Zh(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Qh.test(e)))return!0}return!1}function tf(n){return t=>{if(!/\S/.test(t))return St.Space;if(Zh(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ie(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ie(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` -`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return tf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?ef(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function ef(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` +var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=Un(n,t);for(t+=eo(i);t=0&&Zr(Un(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ie(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ie(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=Kh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ie(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +`){[t,e]=Ie(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ie(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` +`){[t,e]=Ie(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function Kh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ie(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function $h(n){return n>=56320&&n<57344}function Uh(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!Uh(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return $h(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Gh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Gh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Jh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ne(r),!1)}return n}function Xh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Qh=[];function Ne(n){return n==null?Qh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Zh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function tf(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Zh.test(e)))return!0}return!1}function ef(n){return t=>{if(!/\S/.test(t))return St.Space;if(tf(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ne(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ne(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return ef(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?nf(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function nf(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},nf=typeof navigator<"u"&&/Mac/.test(navigator.platform),sf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Bo(n){var t=nf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||sf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Oo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Oo,gecko_version:Oo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function rf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function of(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&lf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function lf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function af(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function hf(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=af(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function yf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function wf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Bl=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ol=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function No(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=xf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},kf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return kf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&rf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Cf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Il);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Af(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Mf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Il):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:of(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Af(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Il={class:"cm-line"};function Mf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Tf(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Bf(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Lf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Rf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Df(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Pf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Of(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(hf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Ns(i,t)}}function Df(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Bf(n,t,e){let i=Nl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Of(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Nf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Ff(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=wf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` -`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Wf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Vf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Hf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!_f(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(zf(t,i.node,i.offset)?e:0))}};function zf(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:Kf(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=qf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function qf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Nl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Kf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function $f(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&rc(t.contentDOM.ownerDocument)}handleEvent(t){!Qf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=Uf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||jf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function Uf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Bt)e(i).handlers.push(Bt[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],jf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Gf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Jf(t,e),this.dragging=Xf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Gf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Jf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Yf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Xf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Qf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Bt=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function Zf(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Bt.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Bt.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ec(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Nf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ec(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=ic(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function ic(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Bt.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Bt.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Yf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Bt.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Bt.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(Zf(n),!1)};function nc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function sc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Bt.copy=Bt.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=sc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(nc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Bt.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function rc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var lc=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=lc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function fc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function cc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,ac(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?cc:hc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!fc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:I}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,I,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function uc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function dc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var pc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),gc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&mc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function mc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||ff(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Ol,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(pc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Wf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Ff(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,Vf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>yc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=No(this,t))))return r.order;i||(i=No(this,t));let s=bf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Ol;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var yc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var bc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function wc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,kc=4e3;function Sc(n,t=bc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>wc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},kc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Cc(n,t,e,i){sr=t;let s=Bo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Ac(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Ac(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2B&&N.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=B,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(B,A==null,H,k==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Mc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Mc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Tc,Dc,Bc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Tc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Dc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Bc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Ec}var Oc=z.line({class:"cm-activeLine"}),Ec=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Oc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Ot=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Ot.prototype.elementClass="";Ot.prototype.toDOM=void 0;Ot.prototype.mapMode=lt.TrackBefore;Ot.prototype.startSide=Ot.prototype.endSide=-1;Ot.prototype.point=!0;var rn=M.define(),Lc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Rc(n){let t=[Pc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Pc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Lc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Ot{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Fc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Nc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Hc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Rc(),Fc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Wc.range(s)))}return F.of(t)});function sa(){return Vc}var zc=0,Si=class{constructor(t,e){this.from=t,this.to=e}},O=class{constructor(t={}){this.id=zc++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};O.closedBy=new O({deserialize:n=>n.split(" ")});O.openedBy=new O({deserialize:n=>n.split(" ")});O.group=new O({deserialize:n=>n.split(" ")});O.isolate=new O({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});O.contextHash=new O({perNode:!0});O.lookAhead=new O({perNode:!0});O.mounted=new O({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[O.mounted.id]}},_c=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):_c,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(O.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(O.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Kc(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends Bn{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function Kc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,I,L,W){let{id:E,start:B,end:H,size:N}=l,_=f,nt=h;if(N<0)if(l.next(),N==-1){let Ut=r[E];v.push(Ut),I.push(B-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let ft=a[E],Ht,Z,pt=B-A;if(H-B<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-N;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ni=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ni-s&&(p(gt,Ft,B,Ee,l.end,Ni,he,_,nt),Ee=gt.length,Ni=l.end),l.next()):W>2500?u(B,Ut,gt,Ft):c(B,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-B,Qr,Qr)}else Ht=g(ft,gt,Ft,H-B,_-H,nt)}v.push(Ht),I.push(pt)}function u(A,k,v,I){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:B,start:H,end:N,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;N-=3)B[_++]=L[N],B[_++]=L[N+1]-H,B[_++]=L[N+2]-H,B[_++]=_;v.push(new se(B,L[2]-H,i)),I.push(H-A)}}function d(A,k){return(v,I,L)=>{let W=0,E=v.length-1,B,H;if(E>=0&&(B=v[E])instanceof G){if(!E&&B.type==A&&B.length==L)return B;(H=B.prop(O.lookAhead))&&(W=I[E]+B.length+H)}return g(A,v,I,L,W,k)}}function p(A,k,v,I,L,W,E,B,H){let N=[],_=[];for(;A.length>I;)N.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],N,_,W-L,B-W,H)),k.push(L-v)}function g(A,k,v,I,L,W,E){if(W){let B=[O.contextHash,W];E=E?[B].concat(E):[B]}if(L>25){let B=[O.lookAhead,L];E=E?[B].concat(E):[B]}return new G(A,k,v,I,E)}function m(A,k){let v=l.fork(),I=0,L=0,W=0,E=v.end-s,B={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let N=v.size;if(v.id==k&&N>=0){B.size=I,B.start=L,B.skip=W,W+=4,I+=4,v.next();continue}let _=v.pos-N;if(N<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,I+=N,W+=nt}return(k<0||I==A)&&(B.size=I,B.start=L,B.skip=W),B.size>4?B:void 0}function b(A,k,v){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=B,k[--v]=W-A,k[--v]=L-A,k[--v]=I}else E==-3?h=I:E==-4&&(f=I);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new O({perNode:!0});var $c=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Uc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Uc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&jc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Gc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function jc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Gc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new O({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Jc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Yc(t)||De.empty,c=Jc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(O.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Yc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,On=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:On,lineComment:x(On),blockComment:x(On),docComment:x(On),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new O;function Xc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Qc=new O,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Qc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(O.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Bi=null,Oi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Bi;Bi=this;try{return t()}finally{Bi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Bi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Bi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Oi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,Zc=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,Zc,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var tu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?eu(n,e,t):null}var Be=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new O;function eu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=nu(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function iu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function nu(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(O.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>lu(o,!0,1,void 0,r&&!iu(o)?s.from:void 0)}return n.parent==null?su:null}function su(){return 0}var Rr=class n extends Be{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ru(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ru(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function ou(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function lu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?ou(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var au=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+au)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Or(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[hu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Or(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Or(t.state),s=i!=Or(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},hu=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),fu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Ba="()[]{}",Oa=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ba,maxScanDistance:Da,renderMatch:du})}}),cu=z.mark({class:"cm-matchingBracket"}),uu=z.mark({class:"cm-nonmatchingBracket"});function du(n){let t=[],e=n.matched?cu:uu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Oa);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),gu=[pu,fu];function Ea(n={}){return[Oa.of(n),gu]}var mu=new O;function Nr(n,t,e){let i=n.prop(t<0?O.openedBy:O.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(mu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Ba,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Nr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return yu(n,t,e,a,f,h,r)}}return bu(n,t,e,o,l.type,s,r)}function yu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function wu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function xu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Xc(t.languageData),i=wu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Cu(e,this),s=this,this.streamParser=i,this.stateAfter=new O({perNode:!0}),this.tokenTable=t.tokenTable?new In(i.tokenTable):Su}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Oi.get(),o=s[0].from,{state:l,tree:a}=vu(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Oi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},sf=typeof navigator<"u"&&/Mac/.test(navigator.platform),rf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Bo(n){var t=sf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||rf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Oo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Oo,gecko_version:Oo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function of(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function lf(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&af(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function af(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function hf(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function ff(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=hf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function bf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function xf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Bl=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ol=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function Io(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=vf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Sf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Sf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&of(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Af(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Nl);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Mf(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Tf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Nl):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:lf(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Mf(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Nl={class:"cm-line"};function Tf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Df(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Rf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Pf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Ns(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Is(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Bf(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Nf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Ef(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(ff(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Is(this.tile)}};function Is(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Is(i,t)}}function Bf(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Il(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Il(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Ef(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Hf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Wf(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=xf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Vf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function zf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Ff(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(_f(t,i.node,i.offset)?e:0))}};function _f(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:$f(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Uf(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Il(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function $f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function Uf(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&oc(t.contentDOM.ownerDocument)}handleEvent(t){!Zf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Gf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Bt)e(i).handlers.push(Bt[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Gf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Jf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Yf(t,e),this.dragging=Qf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Jf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Yf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Xf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Qf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Zf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Bt=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function tc(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Bt.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Bt.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ic(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Hf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ic(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=nc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function nc(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Bt.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Bt.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Xf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Bt.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Bt.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(tc(n),!1)};function sc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function rc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Bt.copy=Bt.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=rc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(sc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Bt.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function oc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var ac=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=ac)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function cc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function uc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,hc(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?uc:fc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!cc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:N}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,N,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function dc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function pc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var gc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),mc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&yc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function yc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||cf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Ol,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(gc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Vf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Wf(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,zf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>bc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=Io(this,t))))return r.order;i||(i=Io(this,t));let s=wf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Ol;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var bc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var wc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function xc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Sc=4e3;function Cc(n,t=wc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>xc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Sc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Ac(n,t,e,i){sr=t;let s=Bo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Mc(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2B&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=B,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(B,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Tc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Tc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Dc,Bc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Dc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Bc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Lc}var Ec=z.line({class:"cm-activeLine"}),Lc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Ec.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Ot=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Ot.prototype.elementClass="";Ot.prototype.toDOM=void 0;Ot.prototype.mapMode=lt.TrackBefore;Ot.prototype.startSide=Ot.prototype.endSide=-1;Ot.prototype.point=!0;var rn=M.define(),Rc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Pc(n){let t=[Nc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Nc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Rc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Ot{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Wc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Hc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Fc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Pc(),Wc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Vc.range(s)))}return F.of(t)});function sa(){return zc}var _c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},O=class{constructor(t={}){this.id=_c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};O.closedBy=new O({deserialize:n=>n.split(" ")});O.openedBy=new O({deserialize:n=>n.split(" ")});O.group=new O({deserialize:n=>n.split(" ")});O.isolate=new O({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});O.contextHash=new O({perNode:!0});O.lookAhead=new O({perNode:!0});O.mounted=new O({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[O.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(O.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(O.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return $c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends Bn{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function $c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:B,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(B-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=B-A;if(H-B<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,B,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(B,Ut,gt,Ft):c(B,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-B,Qr,Qr)}else Ht=g(ft,gt,Ft,H-B,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:B,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)B[_++]=L[I],B[_++]=L[I+1]-H,B[_++]=L[I+2]-H,B[_++]=_;v.push(new se(B,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,B,H;if(E>=0&&(B=v[E])instanceof G){if(!E&&B.type==A&&B.length==L)return B;(H=B.prop(O.lookAhead))&&(W=N[E]+B.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,B,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,B-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let B=[O.contextHash,W];E=E?[B].concat(E):[B]}if(L>25){let B=[O.lookAhead,L];E=E?[B].concat(E):[B]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,B={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){B.size=N,B.start=L,B.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(B.size=N,B.start=L,B.skip=W),B.size>4?B:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=B,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new O({perNode:!0});var Uc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Uc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Gc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Jc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Gc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Jc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new O({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Yc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Xc(t)||De.empty,c=Yc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(O.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Xc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,On=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:On,lineComment:x(On),blockComment:x(On),docComment:x(On),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new O;function Qc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Zc=new O,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Zc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(O.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Bi=null,Oi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Bi;Bi=this;try{return t()}finally{Bi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Bi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Bi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Oi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,tu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,tu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var eu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?iu(n,e,t):null}var Be=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new O;function iu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=su(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function nu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function su(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(O.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>au(o,!0,1,void 0,r&&!nu(o)?s.from:void 0)}return n.parent==null?ru:null}function ru(){return 0}var Rr=class n extends Be{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ou(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ou(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function lu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function au(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?lu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var hu=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+hu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Or(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[fu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Nr=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Or(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Or(t.state),s=i!=Or(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},fu=He.high(Dt.fromClass(Nr,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),cu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Ba="()[]{}",Oa=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ba,maxScanDistance:Da,renderMatch:pu})}}),uu=z.mark({class:"cm-matchingBracket"}),du=z.mark({class:"cm-nonmatchingBracket"});function pu(n){let t=[],e=n.matched?uu:du;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Oa);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),mu=[gu,cu];function Ea(n={}){return[Oa.of(n),mu]}var yu=new O;function Ir(n,t,e){let i=n.prop(t<0?O.openedBy:O.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(yu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Ba,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Ir(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return bu(n,t,e,a,f,h,r)}}return wu(n,t,e,o,l.type,s,r)}function bu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function xu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||vu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function vu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Qc(t.languageData),i=xu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Au(e,this),s=this,this.streamParser=i,this.stateAfter=new O({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Cu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Oi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Oi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],ku=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,t);var In=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Ia(this.extra,t)):0}},Su=new In(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Ia(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Cu(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Au=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Mu(n):i.block?Du(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Mu=Ur(Eu,0);var Tu=Ur(Ka,0);var Du=Ur((n,t)=>Ka(n,t,Ou(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Bu(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Ou(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Bu(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Lu=mt.define(),Ru=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Oe.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Oe(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Lu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Oe(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Pu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Ru)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Nu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Hu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Fu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Fu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Wu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Vu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Vu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var zu=/^(input\.type|delete)($|\.)/,Oe=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||zu.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return Nt(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var _u=n=>eh(n,!it(n)),qu=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Ku(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?O.closedBy:O.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Ku(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var $u=n=>Nt(n,t=>_n(n.state,t,!it(n))),Uu=n=>Nt(n,t=>_n(n.state,t,it(n)));function ih(n,t){return Nt(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var ju=n=>Nt(n,t=>ae(n,t,!0)),Gu=n=>Nt(n,t=>ae(n,t,!1)),Ju=n=>Nt(n,t=>ae(n,t,!it(n))),Yu=n=>Nt(n,t=>ae(n,t,it(n))),Xu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Qu=n=>Nt(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function Zu(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headZu(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(It(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var ed=n=>fh(n,!it(n)),id=n=>fh(n,it(n));var nd=n=>kt(n,t=>_n(n.state,t,!it(n))),sd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),rd=n=>kt(n,t=>ae(n,t,!0)),od=n=>kt(n,t=>ae(n,t,!1)),ld=n=>kt(n,t=>ae(n,t,!it(n))),ad=n=>kt(n,t=>ae(n,t,it(n))),hd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(It(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(It(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(It(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),cd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),ud=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},dd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(It(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(It(e,w.create(s,s.length-1))),!0)}var pd=n=>gh(n,!1),gd=n=>gh(n,!0),md=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(It(n,i)),!0):!1};function Ii(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ii(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),yd=n=>bh(n,!0);var bd=n=>Ii(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headIi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),xd=n=>Ii(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},kd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Sd=({state:n,dispatch:t})=>xh(n,t,!1),Cd=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Ad=({state:n,dispatch:t})=>vh(n,t,!1),Md=({state:n,dispatch:t})=>vh(n,t,!0),Td=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Dd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(O.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Bd=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Dd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Be(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Od=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Be(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Ld=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Xu,shift:hd},{key:"Ctrl-e",run:Qu,shift:fd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:bd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:kd},{key:"Ctrl-v",run:Kr}],Rd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:_u,shift:ed,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Ju,shift:ld,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Gu,shift:od,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:ju,shift:rd,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:cd},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yd,preventDefault:!0},{mac:"Mod-Backspace",run:wd,preventDefault:!0},{mac:"Mod-Delete",run:xd,preventDefault:!0}].concat(Ld.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:nd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Uu,shift:sd},{key:"Alt-ArrowUp",run:Sd},{key:"Shift-Alt-ArrowUp",run:Ad},{key:"Alt-ArrowDown",run:Cd},{key:"Shift-Alt-ArrowDown",run:Md},{key:"Mod-Alt-ArrowUp",run:pd},{key:"Mod-Alt-ArrowDown",run:gd},{key:"Escape",run:md},{key:"Mod-Enter",run:Bd},{key:"Alt-l",mac:"Ctrl-l",run:ud},{key:"Mod-i",run:dd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Od},{key:"Shift-Mod-k",run:Td},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Au},{key:"Alt-A",run:Tu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ed}].concat(Rd),Mh={key:"Tab",run:Sh,shift:Ch};var Pd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Nd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Pd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Nd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Oh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Oh(n.indented,t,e,null,n.context)}function Bh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Oh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Bh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Hd="#e5c07b",Rh="#e06c75",Fd="#56b6c2",Wd="#ffffff",$n="#abb2bf",Xr="#7d8799",Vd="#61afef",zd="#98c379",Ph="#d19a66",_d="#c678dd",qd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Kd="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:$n,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Kd},".cm-panels":{backgroundColor:qd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:$n}}},{dark:!0}),Ud=Ze.define([{tag:y.keyword,color:_d},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:Vd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Hd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Fd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:zd},{tag:y.invalid,color:Wd}]),Fh=[$d,Hn(Ud)];import{BaseController as jd}from"./controller.js";var Gd="gnomod.toml",Jd=`package main -`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Qd:Xd}var Vh=class extends jd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Wh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;let e=t===Gd;if(!t.endsWith(".gno")&&!e)return;let i=this.getValue("domain")||"gno.land",s=Jd;e&&(s=`module = "${i}/r/yourname/pkg" -gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:s}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],Su=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Na(Vr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Na(this.extra,t)):0}},Cu=new Nn(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Na(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Au(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Mu=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Tu(n):i.block?Bu(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Tu=Ur(Lu,0);var Du=Ur(Ka,0);var Bu=Ur((n,t)=>Ka(n,t,Eu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Eu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Ru=mt.define(),Pu=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Oe.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Oe(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Ru);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Oe(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Nu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Pu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Hu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Fu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Wu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Wu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Vu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=zu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function zu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var _u=/^(input\.type|delete)($|\.)/,Oe=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||_u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?O.closedBy:O.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;$u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Uu=n=>It(n,t=>_n(n.state,t,!it(n))),ju=n=>It(n,t=>_n(n.state,t,it(n)));function ih(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Gu=n=>It(n,t=>ae(n,t,!0)),Ju=n=>It(n,t=>ae(n,t,!1)),Yu=n=>It(n,t=>ae(n,t,!it(n))),Xu=n=>It(n,t=>ae(n,t,it(n))),Qu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Zu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function td(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headtd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var id=n=>fh(n,!it(n)),nd=n=>fh(n,it(n));var sd=n=>kt(n,t=>_n(n.state,t,!it(n))),rd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),od=n=>kt(n,t=>ae(n,t,!0)),ld=n=>kt(n,t=>ae(n,t,!1)),ad=n=>kt(n,t=>ae(n,t,!it(n))),hd=n=>kt(n,t=>ae(n,t,it(n))),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),cd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),ud=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),dd=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},pd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var gd=n=>gh(n,!1),md=n=>gh(n,!0),yd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),bd=n=>bh(n,!0);var wd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),vd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Sd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Cd=({state:n,dispatch:t})=>xh(n,t,!1),Ad=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Md=({state:n,dispatch:t})=>vh(n,t,!1),Td=({state:n,dispatch:t})=>vh(n,t,!0),Dd=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Bd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(O.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Bd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Be(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Ed=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Be(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Rd=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Qu,shift:fd},{key:"Ctrl-e",run:Zu,shift:cd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:wd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:Sd},{key:"Ctrl-v",run:Kr}],Pd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:nd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Xu,shift:hd,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Ia,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Ia,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Ju,shift:ld,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Gu,shift:od,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:ud},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:bd,preventDefault:!0},{mac:"Mod-Backspace",run:xd,preventDefault:!0},{mac:"Mod-Delete",run:vd,preventDefault:!0}].concat(Rd.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Uu,shift:sd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:rd},{key:"Alt-ArrowUp",run:Cd},{key:"Shift-Alt-ArrowUp",run:Md},{key:"Alt-ArrowDown",run:Ad},{key:"Shift-Alt-ArrowDown",run:Td},{key:"Mod-Alt-ArrowUp",run:gd},{key:"Mod-Alt-ArrowDown",run:md},{key:"Escape",run:yd},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:dd},{key:"Mod-i",run:pd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Ed},{key:"Shift-Mod-k",run:Dd},{key:"Shift-Mod-\\",run:ed},{key:"Mod-/",run:Mu},{key:"Alt-A",run:Du},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ld}].concat(Pd),Mh={key:"Tab",run:Sh,shift:Ch};var Nd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Hd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Nd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Hd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Oh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Oh(n.indented,t,e,null,n.context)}function Bh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Oh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Bh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Fd="#e5c07b",Rh="#e06c75",Wd="#56b6c2",Vd="#ffffff",$n="#abb2bf",Xr="#7d8799",zd="#61afef",_d="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Nh="#2c313a",Ih="#282c34",Yr="#353a42",$d="#3E4451",Hh="#528bff";var Ud=D.theme({"&":{color:$n,backgroundColor:Ih},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:$d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ih,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Nh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Nh,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:zd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Fd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Wd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:_d},{tag:y.invalid,color:Vd}]),Fh=[Ud,Hn(jd)];import{BaseController as Gd}from"./controller.js";var Wh="gnomod.toml",Jd=`package main +`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Vh(n){return n.endsWith(".toml")?Qd:Xd}var zh=class extends Gd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===Wh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Vh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Vh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=Jd;t===Wh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" +gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} Files: ${this.files.map(r=>r.name).join(", ")} @@ -36,4 +36,4 @@ ${a.content}`).join(` `),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Yd){this._setOutput(`Error: code is too large to share via URL. Try reducing the code or splitting into a deployed package.`,!0);return}navigator.clipboard.writeText(l).then(()=>this._setOutput("Share URL copied to clipboard!")).catch(()=>this._setOutput(`Share URL: -${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{Vh as PlaygroundController}; +${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){if(o.name.includes("/")||o.name.includes("\\")||o.name.includes("..")){console.error(`PlaygroundController: skipped file with unsafe name in tar: "${o.name}"`);continue}let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{zh as PlaygroundController}; From 6e85fa4d8894a74ad34ab587462978f48dbd7205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 18 May 2026 10:00:23 +0200 Subject: [PATCH 32/40] feat(gnoweb): change built-in playground output to support copy buttons (#5666) Changes playground output to optionally support copying single lines from the output, which can be useful when multiple commands are printed between text and links. Related to #5421 --- .../gnoweb/components/views/playground.html | 2 +- .../pkg/gnoweb/frontend/css/06-blocks.css | 42 ++++++++- .../frontend/js/controller-playground.ts | 87 +++++++++++++++---- gno.land/pkg/gnoweb/frontend/js/controller.ts | 4 + gno.land/pkg/gnoweb/frontend/js/utils.ts | 24 +++++ .../gnoweb/public/js/controller-playground.js | 32 +++---- gno.land/pkg/gnoweb/public/js/controller.js | 2 +- gno.land/pkg/gnoweb/public/js/index.js | 2 +- gno.land/pkg/gnoweb/public/js/utils.js | 2 +- gno.land/pkg/gnoweb/public/main.css | 2 +- 10 files changed, 156 insertions(+), 43 deletions(-) diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index c35c2339142..4c3f8d8eeaa 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -85,7 +85,7 @@

Output

-
// Run code to see output here
+
{{ end }} diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 539cc78b69c..7512a62d4a5 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2915,12 +2915,50 @@ main.dev-mode .b-toc a { font-family: var(--g-font-mono); font-size: var(--g-font-size-75); line-height: 1.6; - white-space: pre-wrap; - word-break: break-word; min-height: 80px; max-height: 300px; overflow-y: auto; background-color: var(--s-color-bg-base); + display: flex; + flex-direction: column; + gap: 0; +} + +.b-playground-output-item { + display: flex; + align-items: flex-start; + gap: var(--g-space-2); +} + +.b-playground-output-item-text { + flex: 1; + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + white-space: pre-wrap; + word-break: break-word; + color: inherit; +} + +.b-playground-output-copy-btn { + flex-shrink: 0; + display: flex; + align-items: center; + background: none; + border: none; + cursor: pointer; + padding: var(--g-space-1); + color: var(--s-color-fg-muted); + border-radius: var(--g-radius-1); + transition: + color 0.15s, + background-color 0.15s; +} + +.b-playground-output-copy-btn:hover { + color: var(--s-color-fg-default); + background-color: var(--s-color-bg-surface-secondary); } /* ========================================================================== diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 30fb4cc43ac..35826a104a2 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -24,7 +24,7 @@ import { keymap, lineNumbers, } from "@codemirror/view"; -import { BaseController } from "./controller.js"; +import { BaseController, makeCopyIcon } from "./controller.js"; interface PlaygroundFile { name: string; @@ -81,6 +81,7 @@ export class PlaygroundController extends BaseController { this._switchToDefaultFile(); this._setupTabsScroll(); this.renderTabs(); + this.clearOutput(); this.on("theme:changed", () => { this.view.dispatch({ @@ -242,12 +243,51 @@ export class PlaygroundController extends BaseController { }); } - private _setOutput(text: string, isError: boolean = false): void { - this.outputEl.textContent = text; - this.outputEl.classList.toggle("u-color-danger", isError); + private _resetOutput( + text: string, + copyable: boolean = false, + isError: boolean = false, + ): void { + while (this.outputEl.firstChild) { + this.outputEl.removeChild(this.outputEl.firstChild); + } + this._setOutput(text, copyable, isError); + } + + private _setOutput( + text: string, + copyable: boolean = false, + isError: boolean = false, + ): void { + const row = document.createElement("div"); + row.className = "b-playground-output-item"; + if (isError) row.classList.add("u-color-danger"); + + const pre = document.createElement("pre"); + pre.className = "b-playground-output-item-text"; + pre.textContent = text; + row.appendChild(pre); + + if (copyable) { + const btn = document.createElement("button"); + btn.className = "b-playground-output-copy-btn"; + btn.title = "Copy to clipboard"; + btn.setAttribute("aria-label", "Copy to clipboard"); + btn.setAttribute("data-controller", "copy"); + btn.setAttribute("data-action", "click->copy#copy"); + btn.setAttribute("data-copy-text-value", text); + btn.appendChild(makeCopyIcon()); + row.appendChild(btn); + } + + this.outputEl.appendChild(row); this.outputEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); } + private _setErrorOutput(text: string): void { + this._resetOutput(text, false, true); + } + private _switchToFile(fileName: string): boolean { this.files[this.activeFile].content = this._getCode(); const idx = this.files.findIndex((f) => f.name === fileName); @@ -311,7 +351,7 @@ export class PlaygroundController extends BaseController { public async runCode(): Promise { this.files[this.activeFile].content = this._getCode(); - this._setOutput("Running..."); + this._resetOutput("Running..."); const code = this._getCode(); const pkgMatch = code.match(/^package\s+(\w+)/m); @@ -330,32 +370,44 @@ export class PlaygroundController extends BaseController { }); const result = await resp.json(); if (result.error) { - this._setOutput(`Error: ${result.error}`, true); + this._setErrorOutput(`Error: ${result.error}`); } else { - this._setOutput(result.result); + this._resetOutput(result.result); } } catch { + this._resetOutput( + `Note: Server-side execution not available for scratch pad code.\n\nPackage: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo deploy and test:\n`, + ); this._setOutput( - `Note: Server-side execution not available for scratch pad code.\n\nPackage: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo deploy and test:\n gnokey maketx addpkg -pkgpath "${domain}/r/yourname/pkg" ...`, + ` gnokey maketx addpkg -pkgpath "${domain}/r/yourname/pkg" ...`, + true, ); } } else { + this._resetOutput( + `Package: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo run locally:`, + ); this._setOutput( - `Package: ${pkgName}\nFiles: ${this.files.map((f) => f.name).join(", ")}\n\nTo run locally:\n gno run ${this.files.map((f) => f.name).join(" ")}\n\nTo test:\n gno test .`, + ` gno run ${this.files.map((f) => f.name).join(" ")}`, + true, ); + this._setOutput("\n\nTo test:"); + this._setOutput(" gno test .", true); } } public runTests(): void { - this._setOutput( - "Testing requires a running gno node.\n\nTo test locally:\n gno test .", + this._resetOutput( + "Testing requires a running gno node.\n\nTo test locally:", ); + this._setOutput(" gno test .", true); } public formatCode(): void { - this._setOutput( - `Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:\n gno fmt -w ${this.files[this.activeFile].name}`, + this._resetOutput( + "Formatting requires server-side gno fmt (coming soon).\n\nTo format locally:", ); + this._setOutput(` gno fmt -w ${this.files[this.activeFile].name}`, true); } public async shareCode(): Promise { @@ -386,17 +438,16 @@ export class PlaygroundController extends BaseController { // Share compressed code const url = `${window.location.origin}/_/play?code=${encodeURIComponent(btoa(binary))}&z`; if (url.length > MAX_SHARE_URL_LENGTH) { - this._setOutput( + this._setErrorOutput( `Error: code is too large to share via URL.\n\nTry reducing the code or splitting into a deployed package.`, - true, ); return; } navigator.clipboard .writeText(url) - .then(() => this._setOutput("Share URL copied to clipboard!")) - .catch(() => this._setOutput(`Share URL:\n${url}`)); + .then(() => this._resetOutput("Share URL copied to clipboard!")) + .catch(() => this._resetOutput(`Share URL:\n${url}`)); } public downloadFiles(): void { @@ -426,7 +477,7 @@ export class PlaygroundController extends BaseController { } public clearOutput(): void { - this._setOutput("// Run code to see output here"); + this._resetOutput("// Run code to see output here"); } } diff --git a/gno.land/pkg/gnoweb/frontend/js/controller.ts b/gno.land/pkg/gnoweb/frontend/js/controller.ts index f53f40da6b8..7e6e5bb2741 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller.ts @@ -3,6 +3,8 @@ import { escapeShellSpecialChars, findAllInclusive, findFirstInclusive, + makeCopyIcon, + makeIcon, toCamelCase, toKebabCase, } from "./utils.js"; @@ -243,6 +245,8 @@ export { escapeShellSpecialChars, findAllInclusive, findFirstInclusive, + makeCopyIcon, + makeIcon, toCamelCase, toKebabCase, }; diff --git a/gno.land/pkg/gnoweb/frontend/js/utils.ts b/gno.land/pkg/gnoweb/frontend/js/utils.ts index b313c49dbd6..eaf7a51e247 100644 --- a/gno.land/pkg/gnoweb/frontend/js/utils.ts +++ b/gno.land/pkg/gnoweb/frontend/js/utils.ts @@ -45,3 +45,27 @@ export function findAllInclusive( ); return result; } + +export function makeIcon(icon: string): SVGSVGElement { + const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + svg.classList.add("c-icon"); + const use = document.createElementNS("http://www.w3.org/2000/svg", "use"); + use.setAttribute("href", `#ico-${icon}`); + svg.appendChild(use); + return svg; +} + +export function makeCopyIcon(): SVGSVGElement { + const svg = makeIcon("copy"); + svg.querySelector("use")?.setAttribute("data-copy-target", "icon"); + + const checkUse = document.createElementNS( + "http://www.w3.org/2000/svg", + "use", + ); + checkUse.setAttribute("href", "#ico-check"); + checkUse.setAttribute("data-copy-target", "icon"); + checkUse.classList.add("u-hidden", "u-color-valid"); + svg.appendChild(checkUse); + return svg; +} diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index f34b982be77..5eec8a25fc6 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -4,36 +4,32 @@ var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2, `,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ie(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function $h(n){return n>=56320&&n<57344}function Uh(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!Uh(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return $h(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Gh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Gh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Jh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ne(r),!1)}return n}function Xh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Qh=[];function Ne(n){return n==null?Qh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Zh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function tf(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Zh.test(e)))return!0}return!1}function ef(n){return t=>{if(!/\S/.test(t))return St.Space;if(tf(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ne(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ne(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` `}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return ef(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?nf(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function nf(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},sf=typeof navigator<"u"&&/Mac/.test(navigator.platform),rf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Bo(n){var t=sf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||rf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Oo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Oo,gecko_version:Oo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function of(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function lf(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&af(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function af(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function hf(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function ff(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=hf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function bf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function xf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Bl=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ol=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function Io(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=vf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Sf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Sf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&of(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Af(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Nl);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Mf(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Tf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Nl):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:lf(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Mf(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Nl={class:"cm-line"};function Tf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Df(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Of(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Rf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Pf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Ns(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Is(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Bf(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Nf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Ef(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(ff(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Is(this.tile)}};function Is(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Is(i,t)}}function Bf(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Il(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Of(n,t,e){let i=Il(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Ef(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Hf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Wf(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=xf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`;this.styleTag.textContent=o;let l=e.head||e;this.styleTag.parentNode!=l&&l.insertBefore(this.styleTag,l.firstChild)}}setNonce(t){this.styleTag&&this.styleTag.getAttribute("nonce")!=t&&this.styleTag.setAttribute("nonce",t)}};var Gt={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Fe={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},sf=typeof navigator<"u"&&/Mac/.test(navigator.platform),rf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Oo(n){var t=sf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||rf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function of(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function lf(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&af(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function af(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function hf(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function ff(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=hf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function bf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function xf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Ol=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function Io(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=vf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Sf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Sf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&of(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Af(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Nl);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Mf(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Tf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Nl):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:lf(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Mf(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Nl={class:"cm-line"};function Tf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Df(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Bf(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Rf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Pf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Ns(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Is(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Of(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Nf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Ef(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(ff(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Is(this.tile)}};function Is(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Is(i,t)}}function Of(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Il(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Bf(n,t,e){let i=Il(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Ef(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Hf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Wf(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=xf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` `,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Vf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function zf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Ff(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(_f(t,i.node,i.offset)?e:0))}};function _f(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:$f(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Uf(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Il(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function $f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function Uf(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&oc(t.contentDOM.ownerDocument)}handleEvent(t){!Zf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Gf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Bt)e(i).handlers.push(Bt[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Gf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Jf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Yf(t,e),this.dragging=Qf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Jf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Yf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Xf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Qf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Zf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Bt=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function tc(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Bt.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Bt.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ic(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Hf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ic(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=nc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function nc(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Bt.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Bt.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Xf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Bt.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Bt.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(tc(n),!1)};function sc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function rc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Bt.copy=Bt.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=rc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(sc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Bt.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function oc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var ac=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=ac)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function cc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function uc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,hc(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?uc:fc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!cc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:N}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,N,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function dc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function pc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var gc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),mc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&yc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function yc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||cf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Ol,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(gc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Vf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Wf(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,zf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>bc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=Io(this,t))))return r.order;i||(i=Io(this,t));let s=wf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Ol;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var bc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var wc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function xc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Sc=4e3;function Cc(n,t=wc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>xc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Sc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Ac(n,t,e,i){sr=t;let s=Bo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Mc(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2B&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=B,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(B,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Tc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Tc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Dc,Bc,Oc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Dc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Bc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Oc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var up=/x/.unicode!=null?"gu":"g";function ia(){return Lc}var Ec=z.line({class:"cm-activeLine"}),Lc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Ec.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var dp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Ot=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Ot.prototype.elementClass="";Ot.prototype.toDOM=void 0;Ot.prototype.mapMode=lt.TrackBefore;Ot.prototype.startSide=Ot.prototype.endSide=-1;Ot.prototype.point=!0;var rn=M.define(),Rc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Pc(n){let t=[Nc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Nc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Rc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Ot{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Wc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Hc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Fc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Pc(),Wc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Vc.range(s)))}return F.of(t)});function sa(){return zc}var _c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},O=class{constructor(t={}){this.id=_c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};O.closedBy=new O({deserialize:n=>n.split(" ")});O.openedBy=new O({deserialize:n=>n.split(" ")});O.group=new O({deserialize:n=>n.split(" ")});O.isolate=new O({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});O.contextHash=new O({perNode:!0});O.lookAhead=new O({perNode:!0});O.mounted=new O({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[O.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(O.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(O.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return $c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends Bn{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function $c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:B,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(B-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=B-A;if(H-B<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,B,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(B,Ut,gt,Ft):c(B,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-B,Qr,Qr)}else Ht=g(ft,gt,Ft,H-B,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:B,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)B[_++]=L[I],B[_++]=L[I+1]-H,B[_++]=L[I+2]-H,B[_++]=_;v.push(new se(B,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,B,H;if(E>=0&&(B=v[E])instanceof G){if(!E&&B.type==A&&B.length==L)return B;(H=B.prop(O.lookAhead))&&(W=N[E]+B.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,B,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,B-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let B=[O.contextHash,W];E=E?[B].concat(E):[B]}if(L>25){let B=[O.lookAhead,L];E=E?[B].concat(E):[B]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,B={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){B.size=N,B.start=L,B.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(B.size=N,B.start=L,B.skip=W),B.size>4?B:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=B,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var wp=new O({perNode:!0});var Uc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Uc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Gc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Jc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Gc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Jc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new O({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Yc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Xc(t)||De.empty,c=Yc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(O.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Xc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,On=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:On,lineComment:x(On),blockComment:x(On),docComment:x(On),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var kp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new O;function Qc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Zc=new O,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Zc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(O.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Bi=null,Oi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Bi;Bi=this;try{return t()}finally{Bi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Bi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Bi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Oi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,tu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,tu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var eu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?iu(n,e,t):null}var Be=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new O;function iu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=su(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function nu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function su(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(O.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>au(o,!0,1,void 0,r&&!nu(o)?s.from:void 0)}return n.parent==null?ru:null}function ru(){return 0}var Rr=class n extends Be{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ou(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ou(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function lu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function au(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?lu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var hu=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+hu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Or(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[fu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Nr=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Or(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Or(t.state),s=i!=Or(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},fu=He.high(Dt.fromClass(Nr,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),cu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Ba="()[]{}",Oa=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ba,maxScanDistance:Da,renderMatch:pu})}}),uu=z.mark({class:"cm-matchingBracket"}),du=z.mark({class:"cm-nonmatchingBracket"});function pu(n){let t=[],e=n.matched?uu:du;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Oa);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),mu=[gu,cu];function Ea(n={}){return[Oa.of(n),mu]}var yu=new O;function Ir(n,t,e){let i=n.prop(t<0?O.openedBy:O.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(yu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Ba,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Ir(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return bu(n,t,e,a,f,h,r)}}return wu(n,t,e,o,l.type,s,r)}function bu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function xu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||vu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function vu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Qc(t.languageData),i=xu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Au(e,this),s=this,this.streamParser=i,this.stateAfter=new O({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Cu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Oi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Oi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Il(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function $f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function Uf(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&oc(t.contentDOM.ownerDocument)}handleEvent(t){!Zf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Gf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Gf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Jf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Yf(t,e),this.dragging=Qf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Jf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Yf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Xf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Qf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Zf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function tc(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ic(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Hf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ic(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=nc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function nc(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Xf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(tc(n),!1)};function sc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function rc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=rc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(sc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function oc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var ac=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=ac)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function cc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function uc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,hc(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?uc:fc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!cc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:N}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,N,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function dc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function pc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var gc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),mc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&yc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function yc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||cf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(gc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Vf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Wf(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,zf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>bc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=Io(this,t))))return r.order;i||(i=Io(this,t));let s=wf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var bc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var wc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function xc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Sc=4e3;function Cc(n,t=wc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>xc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Sc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Ac(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Mc(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Tc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Tc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Dc,Oc,Bc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Dc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Oc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Bc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var dp=/x/.unicode!=null?"gu":"g";function ia(){return Lc}var Ec=z.line({class:"cm-activeLine"}),Lc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Ec.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var pp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Rc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Pc(n){let t=[Nc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Nc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Rc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Wc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Hc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Fc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Pc(),Wc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Vc.range(s)))}return F.of(t)});function sa(){return zc}var _c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=_c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return $c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function $c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:O,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(O-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,O,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)O[_++]=L[I],O[_++]=L[I+1]-H,O[_++]=L[I+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=N[E]+O.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,O,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){O.size=N,O.start=L,O.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(O.size=N,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var xp=new B({perNode:!0});var Uc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Uc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Gc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Jc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Gc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Jc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Yc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Xc(t)||De.empty,c=Yc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Xc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var Sp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Qc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Zc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Zc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,tu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,tu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var eu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?iu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function iu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=su(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function nu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function su(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>au(o,!0,1,void 0,r&&!nu(o)?s.from:void 0)}return n.parent==null?ru:null}function ru(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ou(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ou(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function lu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function au(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?lu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var hu=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+hu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[fu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Nr=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},fu=He.high(Dt.fromClass(Nr,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),cu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:pu})}}),uu=z.mark({class:"cm-matchingBracket"}),du=z.mark({class:"cm-nonmatchingBracket"});function pu(n){let t=[],e=n.matched?uu:du;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),mu=[gu,cu];function Ea(n={}){return[Ba.of(n),mu]}var yu=new B;function Ir(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(yu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Ir(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return bu(n,t,e,a,f,h,r)}}return wu(n,t,e,o,l.type,s,r)}function bu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function xu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||vu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function vu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Qc(t.languageData),i=xu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Au(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Cu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],Su=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Na(Vr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Na(this.extra,t)):0}},Cu=new Nn(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Na(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Au(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Ep={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Mu=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Tu(n):i.block?Bu(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Tu=Ur(Lu,0);var Du=Ur(Ka,0);var Bu=Ur((n,t)=>Ka(n,t,Eu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ou(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Eu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ou(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Ru=mt.define(),Pu=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Oe.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Oe(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Ru);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Oe(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Nu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Pu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Hu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Fu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Wu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Wu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Vu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=zu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function zu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var _u=/^(input\.type|delete)($|\.)/,Oe=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||_u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var Vp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?O.closedBy:O.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;$u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Uu=n=>It(n,t=>_n(n.state,t,!it(n))),ju=n=>It(n,t=>_n(n.state,t,it(n)));function ih(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Gu=n=>It(n,t=>ae(n,t,!0)),Ju=n=>It(n,t=>ae(n,t,!1)),Yu=n=>It(n,t=>ae(n,t,!it(n))),Xu=n=>It(n,t=>ae(n,t,it(n))),Qu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Zu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function td(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headtd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var id=n=>fh(n,!it(n)),nd=n=>fh(n,it(n));var sd=n=>kt(n,t=>_n(n.state,t,!it(n))),rd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),od=n=>kt(n,t=>ae(n,t,!0)),ld=n=>kt(n,t=>ae(n,t,!1)),ad=n=>kt(n,t=>ae(n,t,!it(n))),hd=n=>kt(n,t=>ae(n,t,it(n))),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),cd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),ud=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),dd=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},pd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var gd=n=>gh(n,!1),md=n=>gh(n,!0),yd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),bd=n=>bh(n,!0);var wd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),vd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Sd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Cd=({state:n,dispatch:t})=>xh(n,t,!1),Ad=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Md=({state:n,dispatch:t})=>vh(n,t,!1),Td=({state:n,dispatch:t})=>vh(n,t,!0),Dd=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Bd(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(O.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Od=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Bd(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Be(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Ed=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Be(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Rd=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Qu,shift:fd},{key:"Ctrl-e",run:Zu,shift:cd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:wd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:Sd},{key:"Ctrl-v",run:Kr}],Pd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:nd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Xu,shift:hd,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Ia,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Ia,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Ju,shift:ld,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Gu,shift:od,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:ud},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:bd,preventDefault:!0},{mac:"Mod-Backspace",run:xd,preventDefault:!0},{mac:"Mod-Delete",run:vd,preventDefault:!0}].concat(Rd.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Uu,shift:sd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:rd},{key:"Alt-ArrowUp",run:Cd},{key:"Shift-Alt-ArrowUp",run:Md},{key:"Alt-ArrowDown",run:Ad},{key:"Shift-Alt-ArrowDown",run:Td},{key:"Mod-Alt-ArrowUp",run:gd},{key:"Mod-Alt-ArrowDown",run:md},{key:"Escape",run:yd},{key:"Mod-Enter",run:Od},{key:"Alt-l",mac:"Ctrl-l",run:dd},{key:"Mod-i",run:pd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Ed},{key:"Shift-Mod-k",run:Dd},{key:"Shift-Mod-\\",run:ed},{key:"Mod-/",run:Mu},{key:"Alt-A",run:Du},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ld}].concat(Pd),Mh={key:"Tab",run:Sh,shift:Ch};var Nd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Hd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Nd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Hd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Oh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Oh(n.indented,t,e,null,n.context)}function Bh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Oh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Bh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Fd="#e5c07b",Rh="#e06c75",Wd="#56b6c2",Vd="#ffffff",$n="#abb2bf",Xr="#7d8799",zd="#61afef",_d="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Nh="#2c313a",Ih="#282c34",Yr="#353a42",$d="#3E4451",Hh="#528bff";var Ud=D.theme({"&":{color:$n,backgroundColor:Ih},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:$d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ih,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Nh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Nh,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:zd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Fd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Wd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:_d},{tag:y.invalid,color:Vd}]),Fh=[Ud,Hn(jd)];import{BaseController as Gd}from"./controller.js";var Wh="gnomod.toml",Jd=`package main -`,Yd=8e3,Xd=Li.define(Eh),Qd=Li.define(Lh);function Vh(n){return n.endsWith(".toml")?Qd:Xd}var zh=class extends Gd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===Wh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Vh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Vh(t))})}_setOutput(t,e=!1){this.outputEl.textContent=t,this.outputEl.classList.toggle("u-color-danger",e),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=Jd;t===Wh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" -gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._setOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setOutput(`Error: ${o.error}`,!0):this._setOutput(o.result)}catch{this._setOutput(`Note: Server-side execution not available for scratch pad code. +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],Su=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Na(Vr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Na(this.extra,t)):0}},Cu=new Nn(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Na(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Au(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Lp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Mu=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Tu(n):i.block?Ou(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Tu=Ur(Lu,0);var Du=Ur(Ka,0);var Ou=Ur((n,t)=>Ka(n,t,Eu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Bu(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Eu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Bu(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Ru=mt.define(),Pu=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Ru);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Nu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Pu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Hu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Fu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Wu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Wu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Vu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=zu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function zu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var _u=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||_u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var zp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;$u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Uu=n=>It(n,t=>_n(n.state,t,!it(n))),ju=n=>It(n,t=>_n(n.state,t,it(n)));function ih(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Gu=n=>It(n,t=>ae(n,t,!0)),Ju=n=>It(n,t=>ae(n,t,!1)),Yu=n=>It(n,t=>ae(n,t,!it(n))),Xu=n=>It(n,t=>ae(n,t,it(n))),Qu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Zu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function td(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headtd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var id=n=>fh(n,!it(n)),nd=n=>fh(n,it(n));var sd=n=>kt(n,t=>_n(n.state,t,!it(n))),rd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),od=n=>kt(n,t=>ae(n,t,!0)),ld=n=>kt(n,t=>ae(n,t,!1)),ad=n=>kt(n,t=>ae(n,t,!it(n))),hd=n=>kt(n,t=>ae(n,t,it(n))),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),cd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),ud=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),dd=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},pd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var gd=n=>gh(n,!1),md=n=>gh(n,!0),yd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),bd=n=>bh(n,!0);var wd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),vd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Sd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Cd=({state:n,dispatch:t})=>xh(n,t,!1),Ad=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Md=({state:n,dispatch:t})=>vh(n,t,!1),Td=({state:n,dispatch:t})=>vh(n,t,!0),Dd=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Od(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Bd=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Od(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Ed=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Rd=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Qu,shift:fd},{key:"Ctrl-e",run:Zu,shift:cd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:wd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:Sd},{key:"Ctrl-v",run:Kr}],Pd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:nd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Xu,shift:hd,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Ia,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Ia,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Ju,shift:ld,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Gu,shift:od,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:ud},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:bd,preventDefault:!0},{mac:"Mod-Backspace",run:xd,preventDefault:!0},{mac:"Mod-Delete",run:vd,preventDefault:!0}].concat(Rd.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Uu,shift:sd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:rd},{key:"Alt-ArrowUp",run:Cd},{key:"Shift-Alt-ArrowUp",run:Md},{key:"Alt-ArrowDown",run:Ad},{key:"Shift-Alt-ArrowDown",run:Td},{key:"Mod-Alt-ArrowUp",run:gd},{key:"Mod-Alt-ArrowDown",run:md},{key:"Escape",run:yd},{key:"Mod-Enter",run:Bd},{key:"Alt-l",mac:"Ctrl-l",run:dd},{key:"Mod-i",run:pd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Ed},{key:"Shift-Mod-k",run:Dd},{key:"Shift-Mod-\\",run:ed},{key:"Mod-/",run:Mu},{key:"Alt-A",run:Du},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ld}].concat(Pd),Mh={key:"Tab",run:Sh,shift:Ch};var Nd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Hd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Nd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Hd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Fd="#e5c07b",Rh="#e06c75",Wd="#56b6c2",Vd="#ffffff",$n="#abb2bf",Xr="#7d8799",zd="#61afef",_d="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Nh="#2c313a",Ih="#282c34",Yr="#353a42",$d="#3E4451",Hh="#528bff";var Ud=D.theme({"&":{color:$n,backgroundColor:Ih},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:$d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ih,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Nh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Nh,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:zd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Fd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Wd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:_d},{tag:y.invalid,color:Vd}]),Fh=[Ud,Hn(jd)];import{BaseController as Gd,makeCopyIcon as Jd}from"./controller.js";var Wh="gnomod.toml",Yd=`package main +`,Xd=8e3,Qd=Li.define(Eh),Zd=Li.define(Lh);function Vh(n){return n.endsWith(".toml")?Zd:Qd}var zh=class extends Gd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.clearOutput(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===Wh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Vh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Vh(t))})}_resetOutput(t,e=!1,i=!1){for(;this.outputEl.firstChild;)this.outputEl.removeChild(this.outputEl.firstChild);this._setOutput(t,e,i)}_setOutput(t,e=!1,i=!1){let s=document.createElement("div");s.className="b-playground-output-item",i&&s.classList.add("u-color-danger");let r=document.createElement("pre");if(r.className="b-playground-output-item-text",r.textContent=t,s.appendChild(r),e){let o=document.createElement("button");o.className="b-playground-output-copy-btn",o.title="Copy to clipboard",o.setAttribute("aria-label","Copy to clipboard"),o.setAttribute("data-controller","copy"),o.setAttribute("data-action","click->copy#copy"),o.setAttribute("data-copy-text-value",t),o.appendChild(Jd()),s.appendChild(o)}this.outputEl.appendChild(s),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_setErrorOutput(t){this._resetOutput(t,!1,!0)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=Yd;t===Wh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" +gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._resetOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setErrorOutput(`Error: ${o.error}`):this._resetOutput(o.result)}catch{this._resetOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} Files: ${this.files.map(r=>r.name).join(", ")} To deploy and test: - gnokey maketx addpkg -pkgpath "${s}/r/yourname/pkg" ...`)}else this._setOutput(`Package: ${i} +`),this._setOutput(` gnokey maketx addpkg -pkgpath "${s}/r/yourname/pkg" ...`,!0)}else this._resetOutput(`Package: ${i} Files: ${this.files.map(r=>r.name).join(", ")} -To run locally: - gno run ${this.files.map(r=>r.name).join(" ")} +To run locally:`),this._setOutput(` gno run ${this.files.map(r=>r.name).join(" ")}`,!0),this._setOutput(` -To test: - gno test .`)}runTests(){this._setOutput(`Testing requires a running gno node. +To test:`),this._setOutput(" gno test .",!0)}runTests(){this._resetOutput(`Testing requires a running gno node. -To test locally: - gno test .`)}formatCode(){this._setOutput(`Formatting requires server-side gno fmt (coming soon). +To test locally:`),this._setOutput(" gno test .",!0)}formatCode(){this._resetOutput(`Formatting requires server-side gno fmt (coming soon). -To format locally: - gno fmt -w ${this.files[this.activeFile].name}`)}async shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(a=>`// --- ${a.name} --- +To format locally:`),this._setOutput(` gno fmt -w ${this.files[this.activeFile].name}`,!0)}async shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(a=>`// --- ${a.name} --- ${a.content}`).join(` -`),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Yd){this._setOutput(`Error: code is too large to share via URL. +`),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Xd){this._setErrorOutput(`Error: code is too large to share via URL. -Try reducing the code or splitting into a deployed package.`,!0);return}navigator.clipboard.writeText(l).then(()=>this._setOutput("Share URL copied to clipboard!")).catch(()=>this._setOutput(`Share URL: -${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([Zd(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._setOutput("// Run code to see output here")}};function Zd(n){let t=new TextEncoder,e=[];for(let o of n){if(o.name.includes("/")||o.name.includes("\\")||o.name.includes("..")){console.error(`PlaygroundController: skipped file with unsafe name in tar: "${o.name}"`);continue}let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{zh as PlaygroundController}; +Try reducing the code or splitting into a deployed package.`);return}navigator.clipboard.writeText(l).then(()=>this._resetOutput("Share URL copied to clipboard!")).catch(()=>this._resetOutput(`Share URL: +${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([tp(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._resetOutput("// Run code to see output here")}};function tp(n){let t=new TextEncoder,e=[];for(let o of n){if(o.name.includes("/")||o.name.includes("\\")||o.name.includes("..")){console.error(`PlaygroundController: skipped file with unsafe name in tar: "${o.name}"`);continue}let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{zh as PlaygroundController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller.js b/gno.land/pkg/gnoweb/public/js/controller.js index 69ab5a24fbb..9c357acdd95 100644 --- a/gno.land/pkg/gnoweb/public/js/controller.js +++ b/gno.land/pkg/gnoweb/public/js/controller.js @@ -1 +1 @@ -function b(r,t=250){let e;return function(...n){e!==void 0&&clearTimeout(e),e=setTimeout(()=>r.apply(this,n),t)}}function f(r){return r.replace(/([$`"\\!|&;<>*?{}()'])/g,"\\$1").replace(/\n/g,"\\n")}function m(r){return r.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function a(r){return r=r.replace(/-([a-z])/g,(t,e)=>e.toUpperCase()),r.charAt(0).toLowerCase()+r.slice(1)}function o(r,t){return r.matches(t)?r:r.querySelector(t)}function l(r,t){let e=[];return r.matches(t)&&e.push(r),e.push(...Array.from(r.querySelectorAll(t))),e}var d=class{element;initialized=!1;DOM={};controllerName;controllerKebabName;constructor(t){this.element=t,this.controllerName=a(this.getControllerName()),this.controllerKebabName=m(this.controllerName),this.init()}init(){this.initialized||(this.connect(),this.setupActions(),this.initialized=!0)}initializeDOM(t){return this.DOM={el:this.element,...t},t}getDOMElement(t){return Array.isArray(this.DOM[t])?this.DOM[t][0]:this.DOM[t]}getDOMArray(t){let e=this.DOM[t];return e?Array.isArray(e)?e:[e]:[]}getTarget(t,e){let n=e||this.element,s=`[data-${this.controllerKebabName}-target="${t}"]`;return o(n,s)}getTargets(t,e){let n=e||this.element;return l(n,`[data-${this.controllerKebabName}-target="${t}"]`)}getGlobalTarget(t){return document.querySelector(`[data-${this.controllerKebabName}-target="${t}"]`)}setupActions(){l(this.element,"[data-action]").forEach(e=>{let n=e.getAttribute("data-action");if(n){let[s,i]=n.split("->"),[p,h]=i.split("#");if(p===this.controllerKebabName){let c=this[h];typeof c=="function"&&e.addEventListener(s,u=>{let g=this.extractActionParams(e);u.params=g,c.call(this,u)})}}})}extractActionParams(t){let e={};for(let[n,s]of Object.entries(t.dataset))if(n.startsWith(this.controllerName)&&n.endsWith("Param")){let i=a(n.slice(this.controllerName.length,-5));e[i]=this.parseParamValue(s)}return e}parseParamValue(t){if(t==null||t.trim()==="")return"";let e=t.trim();if(/^(true|false)$/i.test(e))return e.toLowerCase()==="true";if(/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(e)){let n=Number(e);if(!Number.isNaN(n)&&Number.isFinite(n))return n}if(/^(null|undefined)$/i.test(e))return e.toLowerCase()==="null"?null:void 0;if(/^[{[]/.test(e)||/^".*"$/.test(e))try{return JSON.parse(e)}catch{}return t}getValue(t,e){let n=`data-${this.controllerKebabName}-${t}-value`,s=e||this.element,i=o(s,`[${n}]`);return i&&i.getAttribute(n)||""}setValue(t,e,n){let s=`data-${this.controllerKebabName}-${t}-value`;(n||this.element).setAttribute(s,e)}hasValue(t,e){let n=`data-${this.controllerKebabName}-${t}-value`,s=e||this.element;return o(s,`[${n}]`)!==null}on(t,e){document.addEventListener(t,e)}dispatch(t,e={}){let n=new CustomEvent(t,{detail:e,bubbles:!0});document.dispatchEvent(n)}getControllerName(){let t=this.element.getAttribute("data-controller");return t||this.constructor.name.replace(/^_/,"").replace(/Controller$/,"")}};export{d as BaseController,b as debounce,f as escapeShellSpecialChars,l as findAllInclusive,o as findFirstInclusive,a as toCamelCase,m as toKebabCase}; +function f(n,e=250){let t;return function(...r){t!==void 0&&clearTimeout(t),t=setTimeout(()=>n.apply(this,r),e)}}function E(n){return n.replace(/([$`"\\!|&;<>*?{}()'])/g,"\\$1").replace(/\n/g,"\\n")}function m(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function a(n){return n=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),n.charAt(0).toLowerCase()+n.slice(1)}function i(n,e){return n.matches(e)?n:n.querySelector(e)}function c(n,e){let t=[];return n.matches(e)&&t.push(n),t.push(...Array.from(n.querySelectorAll(e))),t}function d(n){let e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.classList.add("c-icon");let t=document.createElementNS("http://www.w3.org/2000/svg","use");return t.setAttribute("href",`#ico-${n}`),e.appendChild(t),e}function v(){let n=d("copy");n.querySelector("use")?.setAttribute("data-copy-target","icon");let e=document.createElementNS("http://www.w3.org/2000/svg","use");return e.setAttribute("href","#ico-check"),e.setAttribute("data-copy-target","icon"),e.classList.add("u-hidden","u-color-valid"),n.appendChild(e),n}var p=class{element;initialized=!1;DOM={};controllerName;controllerKebabName;constructor(e){this.element=e,this.controllerName=a(this.getControllerName()),this.controllerKebabName=m(this.controllerName),this.init()}init(){this.initialized||(this.connect(),this.setupActions(),this.initialized=!0)}initializeDOM(e){return this.DOM={el:this.element,...e},e}getDOMElement(e){return Array.isArray(this.DOM[e])?this.DOM[e][0]:this.DOM[e]}getDOMArray(e){let t=this.DOM[e];return t?Array.isArray(t)?t:[t]:[]}getTarget(e,t){let r=t||this.element,s=`[data-${this.controllerKebabName}-target="${e}"]`;return i(r,s)}getTargets(e,t){let r=t||this.element;return c(r,`[data-${this.controllerKebabName}-target="${e}"]`)}getGlobalTarget(e){return document.querySelector(`[data-${this.controllerKebabName}-target="${e}"]`)}setupActions(){c(this.element,"[data-action]").forEach(t=>{let r=t.getAttribute("data-action");if(r){let[s,o]=r.split("->"),[g,h]=o.split("#");if(g===this.controllerKebabName){let l=this[h];typeof l=="function"&&t.addEventListener(s,u=>{let b=this.extractActionParams(t);u.params=b,l.call(this,u)})}}})}extractActionParams(e){let t={};for(let[r,s]of Object.entries(e.dataset))if(r.startsWith(this.controllerName)&&r.endsWith("Param")){let o=a(r.slice(this.controllerName.length,-5));t[o]=this.parseParamValue(s)}return t}parseParamValue(e){if(e==null||e.trim()==="")return"";let t=e.trim();if(/^(true|false)$/i.test(t))return t.toLowerCase()==="true";if(/^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(t)){let r=Number(t);if(!Number.isNaN(r)&&Number.isFinite(r))return r}if(/^(null|undefined)$/i.test(t))return t.toLowerCase()==="null"?null:void 0;if(/^[{[]/.test(t)||/^".*"$/.test(t))try{return JSON.parse(t)}catch{}return e}getValue(e,t){let r=`data-${this.controllerKebabName}-${e}-value`,s=t||this.element,o=i(s,`[${r}]`);return o&&o.getAttribute(r)||""}setValue(e,t,r){let s=`data-${this.controllerKebabName}-${e}-value`;(r||this.element).setAttribute(s,t)}hasValue(e,t){let r=`data-${this.controllerKebabName}-${e}-value`,s=t||this.element;return i(s,`[${r}]`)!==null}on(e,t){document.addEventListener(e,t)}dispatch(e,t={}){let r=new CustomEvent(e,{detail:t,bubbles:!0});document.dispatchEvent(r)}getControllerName(){let e=this.element.getAttribute("data-controller");return e||this.constructor.name.replace(/^_/,"").replace(/Controller$/,"")}};export{p as BaseController,f as debounce,E as escapeShellSpecialChars,c as findAllInclusive,i as findFirstInclusive,v as makeCopyIcon,d as makeIcon,a as toCamelCase,m as toKebabCase}; diff --git a/gno.land/pkg/gnoweb/public/js/index.js b/gno.land/pkg/gnoweb/public/js/index.js index cf820979f05..f36302b542f 100644 --- a/gno.land/pkg/gnoweb/public/js/index.js +++ b/gno.land/pkg/gnoweb/public/js/index.js @@ -1 +1 @@ -function b(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function M(i){return i=i.replace(/-([a-z])/g,(g,h)=>h.toUpperCase()),i.charAt(0).toLowerCase()+i.slice(1)}(()=>{let i="/public/js/controller-",g=new Map,h=(()=>{let e=document.querySelectorAll('script[src*="index.js"]');for(let n of e){let o=n.getAttribute("src")?.match(/[?&]v=([^&]+)/);if(o)return o[1]}return""})(),v=async(e,n)=>{if(n.length===0)return;let o=b(e);if(!/^[a-z0-9-]+$/.test(o)){console.error(`\u274C Invalid controller name: ${e}`);return}let u=M(e),c=u.charAt(0).toUpperCase()+u.slice(1),f=h?`?v=${h}`:"",s=`${i}${o}.js${f}`,t=g.get(s);t||(t=import(s),g.set(s,t));let l;try{l=await t}catch(r){g.delete(s),console.error(`\u274C Failed to load ${s}:`,r);return}let d,m=l.default;if(typeof m=="function")d=/^\s*class\b/.test(Function.prototype.toString.call(m))?a=>new m(a):m;else{let r=l[`${c}Controller`];r&&(d=a=>new r(a))}if(typeof d!="function"){console.error(`\u274C Invalid controller export for ${e}. Expected default or named class "${c}Controller"`);return}let E=`data-controller-initialized-${o}`,p=n.filter(r=>!r.hasAttribute(E));p.length!==0&&p.forEach(r=>{try{d(r),r.setAttribute(E,"1")}catch(a){console.error(`\u274C Controller runtime error for ${e}:`,a,r)}})},L=e=>{let n=new Map;return e.querySelectorAll("[data-controller]").forEach(o=>{let u=o.getAttribute("data-controller");u&&u.split(/\s+/).filter(Boolean).forEach(c=>{let f=n.get(c)||[];f.push(o),n.set(c,f)})}),n},T=async()=>{let e=L(document);e.size!==0&&(await Promise.all(Array.from(e.entries()).map(([n,o])=>v(n,o))),document.dispatchEvent(new CustomEvent("controllers:ready",{detail:{names:Array.from(e.keys())}})))},w=()=>{let e=new Map,n=!1,o=()=>{if(n=!1,e.size===0)return;let s=[];for(let[t,l]of e)s.push(v(t,[...l]));e.clear(),Promise.all(s).catch(t=>console.error("Observer batch error:",t))},u=()=>{n||(n=!0,queueMicrotask(o))},c=s=>{if(!s.querySelector?.("[data-controller]"))return;let t=L(s);for(let[l,d]of t){let E=`data-controller-initialized-${b(l)}`,p=d.filter(a=>!a.hasAttribute(E));if(p.length===0)continue;let r=e.get(l)??new Set;p.forEach(a=>r.add(a)),e.set(l,r)}t.size&&u()};new MutationObserver(s=>{for(let t of s)t.type==="childList"?t.addedNodes.forEach(l=>{l.nodeType===1&&c(l)}):t.type==="attributes"&&t.target instanceof HTMLElement&&c(t.target)}).observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-controller"]})};document.addEventListener("DOMContentLoaded",async()=>{await T(),w()})})(); +function w(a){return a.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function L(a){return a=a.replace(/-([a-z])/g,(g,h)=>h.toUpperCase()),a.charAt(0).toLowerCase()+a.slice(1)}(()=>{let a="/public/js/controller-",g=new Map,h=(()=>{let e=document.querySelectorAll('script[src*="index.js"]');for(let n of e){let o=n.getAttribute("src")?.match(/[?&]v=([^&]+)/);if(o)return o[1]}return""})(),v=async(e,n)=>{if(n.length===0)return;let o=w(e);if(!/^[a-z0-9-]+$/.test(o)){console.error(`\u274C Invalid controller name: ${e}`);return}let u=L(e),i=u.charAt(0).toUpperCase()+u.slice(1),f=h?`?v=${h}`:"",s=`${a}${o}.js${f}`,t=g.get(s);t||(t=import(s),g.set(s,t));let c;try{c=await t}catch(r){g.delete(s),console.error(`\u274C Failed to load ${s}:`,r);return}let d,m=c.default;if(typeof m=="function")d=/^\s*class\b/.test(Function.prototype.toString.call(m))?l=>new m(l):m;else{let r=c[`${i}Controller`];r&&(d=l=>new r(l))}if(typeof d!="function"){console.error(`\u274C Invalid controller export for ${e}. Expected default or named class "${i}Controller"`);return}let E=`data-controller-initialized-${o}`,p=n.filter(r=>!r.hasAttribute(E));p.length!==0&&p.forEach(r=>{try{d(r),r.setAttribute(E,"1")}catch(l){console.error(`\u274C Controller runtime error for ${e}:`,l,r)}})},b=e=>{let n=new Map;return e.querySelectorAll("[data-controller]").forEach(o=>{let u=o.getAttribute("data-controller");u&&u.split(/\s+/).filter(Boolean).forEach(i=>{let f=n.get(i)||[];f.push(o),n.set(i,f)})}),n},y=async()=>{let e=b(document);e.size!==0&&(await Promise.all(Array.from(e.entries()).map(([n,o])=>v(n,o))),document.dispatchEvent(new CustomEvent("controllers:ready",{detail:{names:Array.from(e.keys())}})))},M=()=>{let e=new Map,n=!1,o=()=>{if(n=!1,e.size===0)return;let s=[];for(let[t,c]of e)s.push(v(t,[...c]));e.clear(),Promise.all(s).catch(t=>console.error("Observer batch error:",t))},u=()=>{n||(n=!0,queueMicrotask(o))},i=s=>{if(!s.querySelector?.("[data-controller]"))return;let t=b(s);for(let[c,d]of t){let E=`data-controller-initialized-${w(c)}`,p=d.filter(l=>!l.hasAttribute(E));if(p.length===0)continue;let r=e.get(c)??new Set;p.forEach(l=>r.add(l)),e.set(c,r)}t.size&&u()};new MutationObserver(s=>{for(let t of s)t.type==="childList"?t.addedNodes.forEach(c=>{c.nodeType===1&&i(c)}):t.type==="attributes"&&t.target instanceof HTMLElement&&i(t.target)}).observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-controller"]})};document.addEventListener("DOMContentLoaded",async()=>{await y(),M()})})(); diff --git a/gno.land/pkg/gnoweb/public/js/utils.js b/gno.land/pkg/gnoweb/public/js/utils.js index 8c7f177b097..74deccf1722 100644 --- a/gno.land/pkg/gnoweb/public/js/utils.js +++ b/gno.land/pkg/gnoweb/public/js/utils.js @@ -1 +1 @@ -function i(e,t=250){let n;return function(...r){n!==void 0&&clearTimeout(n),n=setTimeout(()=>e.apply(this,r),t)}}function u(e){return e.replace(/([$`"\\!|&;<>*?{}()'])/g,"\\$1").replace(/\n/g,"\\n")}function s(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function l(e){return e=e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase()),e.charAt(0).toLowerCase()+e.slice(1)}function a(e,t){return e.matches(t)?e:e.querySelector(t)}function o(e,t){let n=[];return e.matches(t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}export{i as debounce,u as escapeShellSpecialChars,o as findAllInclusive,a as findFirstInclusive,l as toCamelCase,s as toKebabCase}; +function c(e,t=250){let n;return function(...r){n!==void 0&&clearTimeout(n),n=setTimeout(()=>e.apply(this,r),t)}}function i(e){return e.replace(/([$`"\\!|&;<>*?{}()'])/g,"\\$1").replace(/\n/g,"\\n")}function o(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function u(e){return e=e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase()),e.charAt(0).toLowerCase()+e.slice(1)}function a(e,t){return e.matches(t)?e:e.querySelector(t)}function l(e,t){let n=[];return e.matches(t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}function s(e){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.classList.add("c-icon");let n=document.createElementNS("http://www.w3.org/2000/svg","use");return n.setAttribute("href",`#ico-${e}`),t.appendChild(n),t}function p(){let e=s("copy");e.querySelector("use")?.setAttribute("data-copy-target","icon");let t=document.createElementNS("http://www.w3.org/2000/svg","use");return t.setAttribute("href","#ico-check"),t.setAttribute("data-copy-target","icon"),t.classList.add("u-hidden","u-color-valid"),e.appendChild(t),e}export{c as debounce,i as escapeShellSpecialChars,l as findAllInclusive,a as findFirstInclusive,p as makeCopyIcon,s as makeIcon,u as toCamelCase,o as toKebabCase}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index be3f9551f63..c2fb6a11ab8 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -3,4 +3,4 @@ li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.doc-example{background:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);margin-bottom:var(--g-space-3);margin-top:var(--g-space-3);overflow:hidden}.doc-example>summary{color:var(--s-color-text-secondary);cursor:pointer;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);padding:var(--g-space-2) var(--g-space-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.doc-example>summary:hover{background:var(--s-color-bg-surface-secondary)}.doc-example>pre{border-radius:0;border-top:var(--s-border-secondary);font-size:var(--g-font-size-100);margin-bottom:0;margin-top:0;overflow-x:auto;padding:var(--g-space-3)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);display:flex;flex-direction:column;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);gap:0;line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2)}.b-playground-output-item{align-items:flex-start;display:flex;gap:var(--g-space-2)}.b-playground-output-item-text{color:inherit;flex:1;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;white-space:pre-wrap;word-break:break-word}.b-playground-output-copy-btn{align-items:center;background:none;border:none;border-radius:var(--g-radius-1);color:var(--s-color-fg-muted);cursor:pointer;display:flex;flex-shrink:0;padding:var(--g-space-1);transition:color .15s,background-color .15s}.b-playground-output-copy-btn:hover{background-color:var(--s-color-bg-surface-secondary);color:var(--s-color-fg-default)}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.doc-example{background:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);margin-bottom:var(--g-space-3);margin-top:var(--g-space-3);overflow:hidden}.doc-example>summary{color:var(--s-color-text-secondary);cursor:pointer;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);padding:var(--g-space-2) var(--g-space-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.doc-example>summary:hover{background:var(--s-color-bg-surface-secondary)}.doc-example>pre{border-radius:0;border-top:var(--s-border-secondary);font-size:var(--g-font-size-100);margin-bottom:0;margin-top:0;overflow-x:auto;padding:var(--g-space-3)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From 29208c41326d02ae8851933a66553623ea281886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 18 May 2026 11:04:58 +0200 Subject: [PATCH 33/40] feat(gnoweb): change build-in playground run view to use CodeMirror (#5674) The new built-in Playground changes include a run view where Gno code for run TXs can be written. This PR changes the textarea for a CodeMirror editor, the same used by the Playground, same configuration. The `gnokey` commands copy buttons were moved into "inline" copy icons to follow Gnoweb patterns. Related to #5421 --- .../gnoweb/components/views/playground.html | 6 +- gno.land/pkg/gnoweb/components/views/run.html | 35 ++-- .../pkg/gnoweb/frontend/css/06-blocks.css | 21 --- .../pkg/gnoweb/frontend/js/code-editor.ts | 126 +++++++++++++++ .../frontend/js/controller-playground.ts | 149 ++++-------------- .../pkg/gnoweb/frontend/js/controller-run.ts | 75 ++------- gno.land/pkg/gnoweb/public/js/code-editor.js | 12 ++ .../gnoweb/public/js/controller-playground.js | 30 ++-- .../pkg/gnoweb/public/js/controller-run.js | 17 +- gno.land/pkg/gnoweb/public/main.css | 2 +- 10 files changed, 231 insertions(+), 242 deletions(-) create mode 100644 gno.land/pkg/gnoweb/frontend/js/code-editor.ts create mode 100644 gno.land/pkg/gnoweb/public/js/code-editor.js diff --git a/gno.land/pkg/gnoweb/components/views/playground.html b/gno.land/pkg/gnoweb/components/views/playground.html index 4c3f8d8eeaa..d796b923c43 100644 --- a/gno.land/pkg/gnoweb/components/views/playground.html +++ b/gno.land/pkg/gnoweb/components/views/playground.html @@ -73,10 +73,8 @@

-
-
- -
+
+
diff --git a/gno.land/pkg/gnoweb/components/views/run.html b/gno.land/pkg/gnoweb/components/views/run.html index 601cddc9a5f..298ead399ca 100644 --- a/gno.land/pkg/gnoweb/components/views/run.html +++ b/gno.land/pkg/gnoweb/components/views/run.html @@ -27,16 +27,7 @@

Run Script

-
- -
+
@@ -83,13 +74,15 @@

Generated Commands

Dry Run

simulates without broadcasting -
+
+ +
-

     
@@ -97,13 +90,15 @@

Dry Run

Execute

broadcasts and runs on-chain -
+
+ +
-

     
diff --git a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css index 7512a62d4a5..493a350fc0c 100644 --- a/gno.land/pkg/gnoweb/frontend/css/06-blocks.css +++ b/gno.land/pkg/gnoweb/frontend/css/06-blocks.css @@ -2838,12 +2838,6 @@ main.dev-mode .b-toc a { min-height: 300px; resize: vertical; overflow: hidden; -} - -.b-playground-code { - flex: 1; - display: flex; - min-height: 300px; & .cm-editor { flex: 1; @@ -3152,21 +3146,6 @@ main.dev-mode .b-toc a { color: var(--s-color-text-primary); } -.b-run-copy-btn { - margin-inline-start: auto; -} - -.b-run-command-pre { - background-color: var(--s-color-bg-base); - border-radius: var(--s-rounded); - padding: var(--g-space-4); - font-size: var(--g-font-size-100); - color: var(--s-color-text-secondary); - white-space: pre-wrap; - word-break: break-word; - min-height: var(--g-space-12); -} - /* ========================================================================== DOC EXAMPLE — collapsible code block in doc-context markdown rendering ========================================================================== */ diff --git a/gno.land/pkg/gnoweb/frontend/js/code-editor.ts b/gno.land/pkg/gnoweb/frontend/js/code-editor.ts new file mode 100644 index 00000000000..03101f131f2 --- /dev/null +++ b/gno.land/pkg/gnoweb/frontend/js/code-editor.ts @@ -0,0 +1,126 @@ +import { + defaultKeymap, + history, + historyKeymap, + indentWithTab, +} from "@codemirror/commands"; +import { + bracketMatching, + defaultHighlightStyle, + indentOnInput, + indentUnit, + StreamLanguage, + syntaxHighlighting, +} from "@codemirror/language"; +import { go } from "@codemirror/legacy-modes/mode/go"; +import { toml } from "@codemirror/legacy-modes/mode/toml"; +import { Compartment, EditorState, type Extension } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; +import { + drawSelection, + EditorView, + highlightActiveLine, + highlightActiveLineGutter, + keymap, + lineNumbers, +} from "@codemirror/view"; + +const goLang = StreamLanguage.define(go); +const tomlLang = StreamLanguage.define(toml); + +function languageFromFilename(name: string): StreamLanguage { + return name.endsWith(".toml") ? tomlLang : goLang; +} + +function themeFor(isDarkMode: boolean): Extension { + return isDarkMode + ? oneDark + : syntaxHighlighting(defaultHighlightStyle, { fallback: true }); +} + +export function isDarkMode(): boolean { + return document.documentElement.getAttribute("data-theme") === "dark"; +} + +export interface CodeEditorOptions { + parent: HTMLElement; + content: string; + fileName: string; + isDarkMode: boolean; + onRun?: () => void; +} + +export class CodeEditor { + readonly view: EditorView; + private readonly langCompartment = new Compartment(); + private readonly themeCompartment = new Compartment(); + + constructor(opts: CodeEditorOptions) { + const extensions: Extension[] = [ + lineNumbers(), + highlightActiveLine(), + highlightActiveLineGutter(), + drawSelection(), + history(), + indentOnInput(), + indentUnit.of("\t"), + bracketMatching(), + this.langCompartment.of(languageFromFilename(opts.fileName)), + this.themeCompartment.of(themeFor(opts.isDarkMode)), + ]; + + if (opts.onRun) { + const runHandler = opts.onRun; + extensions.push( + keymap.of([ + { + key: "Mod-Enter", + preventDefault: true, + run: () => { + runHandler(); + return true; + }, + }, + ]), + ); + } + + extensions.push( + keymap.of([indentWithTab, ...historyKeymap, ...defaultKeymap]), + ); + + this.view = new EditorView({ + parent: opts.parent, + state: EditorState.create({ + doc: opts.content, + extensions, + }), + }); + } + + getCode(): string { + return this.view.state.doc.toString(); + } + + setCode(text: string): void { + this.view.dispatch({ + changes: { from: 0, to: this.view.state.doc.length, insert: text }, + }); + } + + setLanguage(fileName: string): void { + this.view.dispatch({ + effects: this.langCompartment.reconfigure(languageFromFilename(fileName)), + }); + } + + changeTheme(isDarkMode: boolean): void { + this.view.dispatch({ + effects: this.themeCompartment.reconfigure(themeFor(isDarkMode)), + }); + } + + focus(): void { + this.view.focus(); + } +} diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 35826a104a2..32d0de7b2ae 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -1,29 +1,4 @@ -import { - defaultKeymap, - history, - historyKeymap, - indentWithTab, -} from "@codemirror/commands"; -import { - bracketMatching, - defaultHighlightStyle, - indentOnInput, - indentUnit, - StreamLanguage, - syntaxHighlighting, -} from "@codemirror/language"; -import { go } from "@codemirror/legacy-modes/mode/go"; -import { toml } from "@codemirror/legacy-modes/mode/toml"; -import { Compartment, EditorState } from "@codemirror/state"; -import { oneDark } from "@codemirror/theme-one-dark"; -import { - drawSelection, - EditorView, - highlightActiveLine, - highlightActiveLineGutter, - keymap, - lineNumbers, -} from "@codemirror/view"; +import { CodeEditor, isDarkMode } from "./code-editor.js"; import { BaseController, makeCopyIcon } from "./controller.js"; interface PlaygroundFile { @@ -38,56 +13,53 @@ const DEFAULT_GNO_CONTENT = "package main\n"; // It stays under the 8192-byte default limit of common web servers (nginx, Apache). const MAX_SHARE_URL_LENGTH = 8_000; -const goLang = StreamLanguage.define(go); -const tomlLang = StreamLanguage.define(toml); - -function languageFromFilename(name: string): StreamLanguage { - return name.endsWith(".toml") ? tomlLang : goLang; -} - export class PlaygroundController extends BaseController { private declare files: PlaygroundFile[]; private declare activeFile: number; - private declare mountEl: HTMLElement; + private declare editorEl: HTMLElement; private declare outputEl: HTMLElement; private declare tabsEl: HTMLElement; private declare tabsWrapEl: HTMLElement; private declare prevBtnEl: HTMLButtonElement; private declare nextBtnEl: HTMLButtonElement; - private declare view: EditorView; - private declare langCompartment: Compartment; - private declare themeCompartment: Compartment; + private declare editor: CodeEditor; protected connect(): void { const initialCodeEl = this.getTarget("initial-code") as HTMLTextAreaElement; this.files = []; this.activeFile = 0; - this.mountEl = this.getTarget("code") as HTMLElement; + this.editorEl = this.getTarget("editor") as HTMLElement; this.outputEl = this.getTarget("output") as HTMLElement; this.tabsEl = this.getTarget("tabs") as HTMLElement; this.tabsWrapEl = this.getTarget("tabs-wrap") as HTMLElement; this.prevBtnEl = this.getTarget("prev-button") as HTMLButtonElement; this.nextBtnEl = this.getTarget("next-button") as HTMLButtonElement; - if (!this.mountEl || !this.outputEl || !this.tabsEl || !initialCodeEl) + if (!this.editorEl || !this.outputEl || !this.tabsEl || !initialCodeEl) return; - this.mountEl.addEventListener("focusin", () => + this.editorEl.addEventListener("focusin", () => this._scrollActiveTabIntoView(), ); this._parseInitialCode(initialCodeEl.value); - this._createEditor(); + + this.editor = new CodeEditor({ + parent: this.editorEl, + content: this.files[0].content, + fileName: this.files[0].name, + isDarkMode: isDarkMode(), + onRun: () => this.runCode(), + }); + + this.on("theme:changed", () => { + this.editor.changeTheme(isDarkMode()); + }); + this._switchToDefaultFile(); this._setupTabsScroll(); this.renderTabs(); this.clearOutput(); - - this.on("theme:changed", () => { - this.view.dispatch({ - effects: this.themeCompartment.reconfigure(this._getCodeEditorTheme()), - }); - }); } private _setupTabsScroll(): void { @@ -180,69 +152,6 @@ export class PlaygroundController extends BaseController { } } - private _createEditor(): void { - this.langCompartment = new Compartment(); - this.themeCompartment = new Compartment(); - - const runOnEnter = keymap.of([ - { - key: "Mod-Enter", - preventDefault: true, - run: () => { - this.runCode(); - return true; - }, - }, - ]); - - this.view = new EditorView({ - parent: this.mountEl, - state: EditorState.create({ - doc: this.files[0].content, - extensions: [ - lineNumbers(), - highlightActiveLine(), - highlightActiveLineGutter(), - drawSelection(), - history(), - indentOnInput(), - indentUnit.of("\t"), - bracketMatching(), - this.langCompartment.of(languageFromFilename(this.files[0].name)), - this.themeCompartment.of(this._getCodeEditorTheme()), - runOnEnter, - keymap.of([indentWithTab, ...historyKeymap, ...defaultKeymap]), - ], - }), - }); - } - - private _isDarkMode(): boolean { - return document.documentElement.getAttribute("data-theme") === "dark"; - } - - private _getCodeEditorTheme() { - return this._isDarkMode() - ? oneDark - : syntaxHighlighting(defaultHighlightStyle, { fallback: true }); - } - - private _getCode(): string { - return this.view.state.doc.toString(); - } - - private _setCode(text: string): void { - this.view.dispatch({ - changes: { from: 0, to: this.view.state.doc.length, insert: text }, - }); - } - - private _setLanguage(name: string): void { - this.view.dispatch({ - effects: this.langCompartment.reconfigure(languageFromFilename(name)), - }); - } - private _resetOutput( text: string, copyable: boolean = false, @@ -289,12 +198,12 @@ export class PlaygroundController extends BaseController { } private _switchToFile(fileName: string): boolean { - this.files[this.activeFile].content = this._getCode(); + this.files[this.activeFile].content = this.editor.getCode(); const idx = this.files.findIndex((f) => f.name === fileName); if (idx >= 0) { this.activeFile = idx; - this._setCode(this.files[idx].content); - this._setLanguage(this.files[idx].name); + this.editor.setCode(this.files[idx].content); + this.editor.setLanguage(this.files[idx].name); this.renderTabs(); } return idx >= 0; @@ -341,19 +250,19 @@ export class PlaygroundController extends BaseController { content = `module = "${domain}/r/yourname/pkg"\ngno = "0.9"`; } - this.files[this.activeFile].content = this._getCode(); + this.files[this.activeFile].content = this.editor.getCode(); this.files.push({ name, content }); this.activeFile = this.files.length - 1; - this._setCode(this.files[this.activeFile].content); - this._setLanguage(this.files[this.activeFile].name); + this.editor.setCode(this.files[this.activeFile].content); + this.editor.setLanguage(this.files[this.activeFile].name); this.renderTabs(); } public async runCode(): Promise { - this.files[this.activeFile].content = this._getCode(); + this.files[this.activeFile].content = this.editor.getCode(); this._resetOutput("Running..."); - const code = this._getCode(); + const code = this.editor.getCode(); const pkgMatch = code.match(/^package\s+(\w+)/m); const pkgName = pkgMatch ? pkgMatch[1] : "main"; const domain = this.getValue("domain") || "gno.land"; @@ -411,7 +320,7 @@ export class PlaygroundController extends BaseController { } public async shareCode(): Promise { - this.files[this.activeFile].content = this._getCode(); + this.files[this.activeFile].content = this.editor.getCode(); const code = this.files.length === 1 @@ -452,7 +361,7 @@ export class PlaygroundController extends BaseController { public downloadFiles(): void { // Make sure current file content is the latest when downloading - this.files[this.activeFile].content = this._getCode(); + this.files[this.activeFile].content = this.editor.getCode(); if (this.files.length === 1) { this._triggerDownload( diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-run.ts b/gno.land/pkg/gnoweb/frontend/js/controller-run.ts index dce0830ca54..00a489afd49 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-run.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-run.ts @@ -1,3 +1,4 @@ +import { CodeEditor, isDarkMode } from "./code-editor.js"; import { BaseController } from "./controller.js"; export class RunController extends BaseController { @@ -5,20 +6,21 @@ export class RunController extends BaseController { private declare pkgAlias: string; private declare remote: string; private declare chainId: string; - private declare codeEl: HTMLTextAreaElement; + private declare editorEl: HTMLElement; private declare keyEl: HTMLInputElement; private declare gasWantedEl: HTMLInputElement; private declare gasFeeEl: HTMLInputElement; private declare sendEl: HTMLInputElement; private declare dryRunCmdEl: HTMLElement; private declare executeCmdEl: HTMLElement; + private declare editor: CodeEditor; protected connect(): void { this.pkgPath = this.getValue("pkg-path"); this.pkgAlias = this.getValue("pkg-alias") || "pkg"; this.remote = this.getValue("remote"); this.chainId = this.getValue("chain-id"); - this.codeEl = this.getTarget("code") as HTMLTextAreaElement; + this.editorEl = this.getTarget("editor") as HTMLElement; this.keyEl = this.getTarget("key") as HTMLInputElement; this.gasWantedEl = this.getTarget("gasWanted") as HTMLInputElement; this.gasFeeEl = this.getTarget("gasFee") as HTMLInputElement; @@ -26,11 +28,19 @@ export class RunController extends BaseController { this.dryRunCmdEl = this.getTarget("dryRunCmd") as HTMLElement; this.executeCmdEl = this.getTarget("executeCmd") as HTMLElement; - if (!this.codeEl || !this.dryRunCmdEl || !this.executeCmdEl) return; + if (!this.editorEl || !this.dryRunCmdEl || !this.executeCmdEl) return; - this.codeEl.value = this._buildTemplate(); + this.editor = new CodeEditor({ + parent: this.editorEl, + content: this._buildTemplate(), + fileName: "script.gno", + isDarkMode: isDarkMode(), + }); + + this.on("theme:changed", () => { + this.editor.changeTheme(isDarkMode()); + }); - this._setupKeyboardShortcuts(); this._setupInputListeners(); this._updateCommands(); } @@ -47,18 +57,6 @@ func main() { `; } - private _setupKeyboardShortcuts(): void { - this.codeEl.addEventListener("keydown", (e: KeyboardEvent) => { - if (e.key === "Tab" && !e.shiftKey) { - e.preventDefault(); - const start = this.codeEl.selectionStart; - const end = this.codeEl.selectionEnd; - this.codeEl.value = `${this.codeEl.value.substring(0, start)}\t${this.codeEl.value.substring(end)}`; - this.codeEl.selectionStart = this.codeEl.selectionEnd = start + 1; - } - }); - } - private _setupInputListeners(): void { const update = (): void => this._updateCommands(); this.keyEl.addEventListener("input", update); @@ -94,37 +92,12 @@ func main() { this.executeCmdEl.textContent = this._buildCmd(false); } - private _copyToClipboard(text: string, btn: HTMLElement): void { - navigator.clipboard - .writeText(text) - .then(() => { - const span = btn.querySelector("span"); - if (!span) return; - const orig = span.textContent; - span.textContent = "Copied!"; - setTimeout(() => { - span.textContent = orig; - }, 1500); - }) - .catch(() => { - // fallback: select the pre element content - const pre = btn.closest(".b-run-command-block")?.querySelector("pre"); - if (pre) { - const sel = window.getSelection(); - const range = document.createRange(); - range.selectNodeContents(pre); - sel?.removeAllRanges(); - sel?.addRange(range); - } - }); - } - public resetCode(): void { - this.codeEl.value = this._buildTemplate(); + this.editor.setCode(this._buildTemplate()); } public downloadCode(): void { - const blob = new Blob([this.codeEl.value], { type: "text/plain" }); + const blob = new Blob([this.editor.getCode()], { type: "text/plain" }); const url = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; @@ -132,18 +105,4 @@ func main() { a.click(); URL.revokeObjectURL(url); } - - public copyDryRun(event: Event): void { - this._copyToClipboard( - this._buildCmd(true), - event.currentTarget as HTMLElement, - ); - } - - public copyExecute(event: Event): void { - this._copyToClipboard( - this._buildCmd(false), - event.currentTarget as HTMLElement, - ); - } } diff --git a/gno.land/pkg/gnoweb/public/js/code-editor.js b/gno.land/pkg/gnoweb/public/js/code-editor.js new file mode 100644 index 00000000000..225c424d426 --- /dev/null +++ b/gno.land/pkg/gnoweb/public/js/code-editor.js @@ -0,0 +1,12 @@ +var Gn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=io[i])e=i+1;else return!0;if(e==t)return!1}}function Zr(n){return n>=127462&&n<=127487}var eo=8205;function no(n,e,t=!0,i=!0){return(t?so:Kh)(n,e,i)}function so(n,e,t){if(e==n.length)return e;e&&ro(n.charCodeAt(e))&&oo(n.charCodeAt(e-1))&&e--;let i=$n(n,e);for(e+=to(i);e=0&&Zr($n(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Kh(n,e,t){for(;e>0;){let i=so(n,e-2,t);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function to(n){return n<65536?1:2}var R=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=Nt(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),Rt.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Nt(this,e,t);let i=[];return this.decompose(e,t,i,0),Rt.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new ut(this),r=new ut(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new ut(this,e)}iterRange(e,t=this.length){return new zi(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new ce(e):Rt.from(ce.split(e,[]))}},ce=class n extends R{constructor(e,t=jh(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new Jn(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new n(lo(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=Nt(this,e,t);let s=Vi(this.text,Vi(i.text,lo(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new n(s,r):Rt.from(n.split(s,[]),r)}sliceString(e,t=this.length,i=` +`){[e,t]=Nt(this,e,t);let s="";for(let r=0,o=0;r<=t&&oe&&o&&(s+=i),er&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new n(i,s)),i=[],s=-1);return s>-1&&t.push(new n(i,s)),t}},Rt=class n extends R{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=Nt(this,e,t),i.lines=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` +`){[e,t]=Nt(this,e,t);let s="";for(let r=0,o=0;re&&r&&(s+=i),eo&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new ce(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ce&&a&&(p=f[f.length-1])instanceof ce&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ce(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of e)c(d);return u(),l.length==1?l[0]:new n(l,t)}};R.empty=new ce([""],0);function jh(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Vi(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r=t&&(a>i&&(l=l.slice(0,i-s)),s0?1:(e instanceof ce?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ce?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof ce){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ce?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},zi=class{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new ut(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ut.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}};function Nt(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Q(n,e,t=!0,i=!0){return no(n,e,t,i)}function Uh(n){return n>=56320&&n<57344}function $h(n){return n>=55296&&n<56320}function uo(n,e){let t=n.charCodeAt(e);if(!$h(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Uh(i)?(t-55296<<10)+(i-56320)+65536:t}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,le=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(le||(le={})),Ge=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-s);r+=l}else{if(i!=le.Simple&&h>=e&&(i==le.TrackDel&&se||i==le.TrackBefore&&se))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i=0&&s<=t&&l>=e)return st?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},se=class n extends Ge{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return Qn(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length0&&Ze(i,t,r.text),r.forward(f),l+=f}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>t)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${t})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&te(s,c-o,-1),te(s,u-c,g),Ze(r,s,p),o=u}}return h(e),a(!l),l}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length=0&&t<=0&&t==n[s+1]?n[s]+=e:s>=0&&e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function Ze(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,f,c),s=h,r=f}}}function Qn(n,e,t,i=!1){let s=[],r=i?[]:null,o=new dt(n),l=new dt(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);te(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var dt=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?R.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?R.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Lt=class n{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return w.range(e,t,void 0,void 0,i);let s=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return w.range(this.anchor,s,void 0,void 0,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(e.anchor,e.head)}static create(e,t,i){return new n(e,t,i)}},w=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Lt.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),t=e.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function mo(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=as++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:hs),!!e.static,e.enables)}of(e){return new Pt([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pt(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pt(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}};function hs(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}var Pt=class{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=as++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((t=e[c.id])!==null&&t!==void 0?t:1)&1)==0&&f.push(e[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=Ui(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ce?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let f=0;fi===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Hi).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}}init(e){return[this,Hi.of({field:this,create:e})]}get extension(){return this}},ft={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return e=>new Ki(e,n)}var Ht={highest:ni(ft.highest),high:ni(ft.high),default:ni(ft.default),low:ni(ft.low),lowest:ni(ft.lowest)},Ki=class{constructor(e,t){this.inner=e,this.prec=t}},pt=class n{of(e){return new ri(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},ri=class{constructor(e,t){this.compartment=e,this.inner=t}},ji=class n{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of _h(e,t,o))u instanceof Ce?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Gh(m,p,d))}}let c=h.map(u=>u(l));return new n(e,o,c,l,a,r)}};function _h(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Ki)r(o.inner,o.prec);else if(o instanceof Ce)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pt)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,ft.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,ft.default),i.reduce((o,l)=>o.concat(l))}function si(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function Ui(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var yo=M.define(),es=M.define({combine:n=>n.some(e=>e),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),ko=M.define(),vo=M.define({combine:n=>n.length?n[0]:!1}),me=class{constructor(e,t){this.type=e,this.value=t}static define(){return new ts}},ts=class{of(e){return new me(this,e)}},is=class{constructor(e){this.map=e}of(e){return new $(this,e)}},$=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new is(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}};$.reconfigure=$.define();$.appendConfig=$.define();var X=class n{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,t.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(e,t,i,s,r,o){return new n(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};X.time=me.define();X.userEvent=me.define();X.addToHistory=me.define();X.remote=me.define();function Jh(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(e,It(r),!1)}return n}function Xh(n){let e=n.startState,t=e.facet(ko),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=So(i,ns(e,r,n.changes.newLength),!0))}return i==n?n:X.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Qh=[];function It(n){return n==null?Qh:Array.isArray(n)?n:[n]}var Se=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(Se||(Se={})),Zh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function ef(n){if(ss)return ss.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||Zh.test(t)))return!0}return!1}function tf(n){return e=>{if(!/\S/.test(e))return Se.Space;if(ef(e))return Se.Word;for(let t=0;t-1)return Se.Word;return Se.Other}}var U=class n{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is($.reconfigure)?(t=null,i=l.value):l.is($.appendConfig)&&(t=null,i=It(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=ji.resolve(i,s,this),r=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(es)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:w.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=It(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:w.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=ji.resolve(e.extensions||[],new Map),i=e.doc instanceof R?e.doc:R.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||Yn)),s=e.selection?e.selection instanceof w?e.selection:w.single(e.selection.anchor,e.selection.head):w.single(0);return mo(s,i.length),t.staticFacet(es)||(s=s.asSingle()),new n(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(vo)}phrase(e,...t){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return tf(t.length?t[0]:"")}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=Q(t,o,!1);if(r(t.slice(a,o))!=Se.Word)break;o=a}for(;ln.length?n[0]:4});U.lineSeparator=bo;U.readOnly=vo;U.phrases=M.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});U.languageData=yo;U.changeFilter=wo;U.transactionFilter=xo;U.transactionExtender=ko;pt.reconfigure=$.define();function mt(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}var We=class{eq(e){return this==e}range(e,t=e){return oi.create(e,t,this)}};We.prototype.startSide=We.prototype.endSide=0;We.prototype.point=!1;We.prototype.mapMode=le.TrackDel;function fs(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var oi=class n{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new n(e,t,i)}};function rs(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var os=class n{constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new n(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(rs)),this.isEmpty)return t.length?n.of(t):this;let l=new $i(this,null,-1).goto(0),a=0,h=[],f=new gt;for(;l.value||a=0){let c=t[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return li.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return li.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ct(o,a,r),f=new ct(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=999999999);let r=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),o=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ct(r,l,0).goto(i),h=new ct(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new ct(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new gt;for(let s of e instanceof oi?[e]:t?nf(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=n.empty;s=s.nextLayer)t=new n(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}};F.empty=new F([],[],null,-1);function nf(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(rs);e=i}return n}F.empty.nextLayer=F.empty;var gt=class n{finishChunk(e){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(F.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function ho(n,e,t){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new $i(o,t,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)_n(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)_n(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),_n(this.heap,0)}}};function _n(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}var ct=class{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Fi(this.active,e),Fi(this.activeTo,e),Fi(this.activeRank,e),this.minActive=co(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t0;)t++;Wi(this.active,t,i),Wi(this.activeTo,t,s),Wi(this.activeRank,t,r),e&&Wi(e,t,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}};function fo(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-t.to,u=c||n.endSide-t.endSide,d=u<0?n.to+a:t.to,p=Math.min(d,o);if(n.point||t.point?(n.point&&t.point&&fs(n.point,t.point)&&ls(n.activeForPoint(n.to),t.activeForPoint(t.to))||r.comparePoint(l,p,n.point,t.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,t.active)&&r.compareRange(l,p,n.active,t.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&t.next()}}function ls(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;i--)n[i+1]=n[i];n[e]=t}function co(n,e){let t=-1,i=1e9;for(let s=0;s=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},ye=class{constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=To[Mo]||1;return To[Mo]=e+1,cs+e.toString(36)}static mount(e,t,i){let s=e[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(e,r),s.mount(Array.isArray(t)?t:[t],e)}},Do=new Map,ds=class{constructor(e,t){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return e[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[us]=this}mount(e,t){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},sf=typeof navigator<"u"&&/Mac/.test(navigator.platform),rf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)_e[48+Y]=_e[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)_e[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)_e[Y]=String.fromCharCode(Y+32),Ft[Y]=String.fromCharCode(Y);var Y;for(Gi in _e)Ft.hasOwnProperty(Gi)||(Ft[Gi]=_e[Gi]);var Gi;function Oo(n){var e=sf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||rf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Ft:_e)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}var re=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},ks=/Edge\/(\d+)/.exec(re.userAgent),ll=/MSIE \d/.test(re.userAgent),vs=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(re.userAgent),vn=!!(ll||vs||ks),Bo=!vn&&/gecko\/(\d+)/i.test(re.userAgent),ps=!vn&&/Chrome\/(\d+)/.exec(re.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!vn&&/Apple Computer/.test(re.vendor),Lo=Ss&&(/Mobile\/\w+/.test(re.userAgent)||re.maxTouchPoints>2),S={mac:Lo||/Mac/.test(re.platform),windows:/Win/.test(re.platform),linux:/Linux|X11/.test(re.platform),ie:vn,ie_version:ll?xs.documentMode||6:vs?+vs[1]:ks?+ks[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(re.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(re.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(re.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(re.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var ln=Object.create(null);function fr(n,e,t){if(n==e)return!0;n||(n=ln),e||(e=ln);let i=Object.keys(n),s=Object.keys(e);if(i.length-(t&&i.indexOf(t)>-1?1:0)!=s.length-(t&&s.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(s.indexOf(r)==-1||n[r]!==e[r]))return!1;return!0}function of(n,e){for(let t=n.attributes.length-1;t>=0;t--){let i=n.attributes[t].name;e[i]==null&&n.removeAttribute(i)}for(let t in e){let i=e[t];t=="style"?n.style.cssText=i:n.getAttribute(t)!=i&&n.setAttribute(t,i)}}function Ro(n,e,t){let i=!1;if(e)for(let s in e)t&&s in t||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(i=!0,s=="style"?n.style.cssText=t[s]:n.setAttribute(s,t[s]));return i}function lf(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new vt(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new vt(e,i,s,t,e.widget||null,!0)}static line(e){return new wi(e)}static set(e,t=!1){return F.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(e){let{start:t,end:i}=al(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?hr(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||ln}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&fr(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};bi.prototype.point=!1;var wi=class n extends z{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&fr(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};wi.prototype.mapMode=le.TrackBefore;wi.prototype.point=!0;var vt=class n extends z{constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?le.TrackBefore:le.TrackAfter:le.TrackDel}get type(){return this.startSide!=this.endSide?ee.WidgetRange:this.startSide<=0?ee.WidgetBefore:ee.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&af(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};vt.prototype.point=!0;function al(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function af(n,e){return n==e||!!(n&&e&&n.compare(e))}function Kt(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}var an=class n extends We{constructor(e,t){super(),this.tagName=e,this.attributes=t}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&fr(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||ln)}static set(e,t=!1){return F.of(e,t)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Cs(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function fi(n,e){if(!e.anchorNode)return!1;try{return Cs(n,e.anchorNode)}catch{return!1}}function tn(n){return n.nodeType==3?ki(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,e,t,i){return t?Po(n,e,t,i,-1)||Po(n,e,t,i,1):!1}function it(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:Xe(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=it(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?Xe(n):0}else return!1}}function Xe(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}function hf(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function ff(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=hf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")e.top0&&e.bottom>u.bottom+b&&(b=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(b=e.bottom-u.bottom+o,t<0&&e.top-b0&&e.right>u.right+m&&(m=e.right-u.right+r)):e.right>u.right-r&&(m=e.right-u.right+r,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,e=!0){let t=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==t.body||(!e||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),e&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?Xe(t):0),i,Math.min(e.focusOffset,i?Xe(i):0))}set(e,t,i,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=s}},bt=null;S.safari&&S.safari_version>=26&&(bt=!1);function cl(n){if(n.setActive)return n.setActive();if(bt)return n.focus(bt);let e=[];for(let t=n;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(n.focus(bt==null?{get preventScroll(){return bt={preventScroll:!0},!0}}:void 0),!bt){bt=!1;for(let t=0;tMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=Xe(t)}else if(t.parentNode&&!hn(t))i=it(t),t=t.parentNode;else return null}}function pl(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.fromt:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;g-=3)if(Ve[g+1]==-d){let m=Ve[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Ve[g]]=b),l=g;break}}else{if(Ve.length==189)break;Ve[l++]=c,Ve[l++]=u,Ve[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Ve[m+2];if(b&2)break;if(g)Ve[m+2]|=2;else{if(b&4)break;Ve[m+2]|=4}}}}}function bf(n,e,t,i){for(let s=0,r=i;s<=t.length;s++){let o=s?t[s-1].to:n,l=sa;)p==m&&(p=t[--g].from,m=g?t[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,e,t,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=e,h=0;aa&&o.push(new xe(a,g.from,d));let m=g.direction==St!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==t||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):ae;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;e:for(;;)if(h&&p==r[h-1].to){if(c)break e;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==e)break e;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break e;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=e==St?0:1;return Ds(n,s,s,t,0,n.length,i),i}function bl(n){return[new xe(0,n,0)]}var wl="";function xf(n,e,t,i,s){var r;let o=i.head-n.from,l=xe.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(s,t);if(o==h){let u=l+=s?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!s,t),h=a.side(s,t)}let f=Q(n.text,o,a.forward(s,t));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(e=>e)}),Tl=M.define({combine:n=>n.some(e=>e)}),Dl=M.define(),ui=class n{constructor(e,t,i,s,r,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(w.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},_i=$.define({map:(n,e)=>n.map(e)}),Ol=$.define();function Me(n,e,t){let i=n.facet(Sl);i.length?i[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var Je=M.define({combine:n=>n.length?n[0]:!0}),vf=0,Vt=M.define({combine(n){return n.filter((e,t)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return n.define((i,s)=>new e(i,s),t)}},di=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(Me(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){Me(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){Me(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),vi=M.define(),Ll=M.define();function No(n,e){let t=n.state.facet(Ll);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,f=o-e.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=kf(e.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let e=0,t=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:i,bottom:s}}var ai=M.define(),Te=class n{constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Te(r,o,l,a))),this.changedRanges=s}static create(e,t,i){return new n(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Sf=[],G=class{constructor(e,t,i=0){this.dom=e,this.length=t,this.flags=i,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Sf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&of(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let i=t;for(let s of this.children){if(s==e)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let i=it(this.dom),s=this.length?e>0:t>0;return new ze(this.parent.dom,i+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof $t)return e;return null}static get(e){return e.cmTile}},Ut=class extends G{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,i=null,s,r=e?.node==t?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,s=i?i.nextSibling:t.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==t)for(;s&&s!=l.dom;)s=Ho(s);else t.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:t.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var $t=class extends Ut{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=G.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!t.length)return;i=i.parent,i.breakAfter&&r++,s=t.pop()}else{let o=i.children[s++];if(o instanceof Ye)t.push(s),i=o,s=0;else{let l=r+o.length,a=e(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(e,t){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(e>=a&&e<=h){if(l.isWidget()&&t>=-1&&t<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(ae||e==a&&(t>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=e-a)}}),!i&&!r)throw new Error("No tile at position "+e);return i&&t<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Ye=class n extends Ut{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let i=new n(t||document.createElement(e.tagName),e);return t||(i.flags|=4),i}},Gt=class n extends Ut{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,i){let s=new n(t||document.createElement("div"),e);return(!t||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,t,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(t>0||i&&Af(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?S.chrome||S.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(e,t){let i=new n(t||document.createTextNode(e),e);return t||(i.flags|=2),i}},Ct=class n extends G{constructor(e,t,i,s){super(e,t,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,i){let s=this.widget.coordsAt(this.dom,e,t);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?r.length-1:0;o=r[a],!(e>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!e)break;i&&i.break(),e--,o=!1}else if(r==s.children.length){if(!e&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(t>0?a.length<=e:a.length=0;l--){let a=t.marks[l],h=s.lastChild;if(h instanceof ae&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=G.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=ae.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=G.get(e.text);r&&this.cache.reused.set(r,2);let o=new wt(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,t,i){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let r=this.ensureMarks(t,i);!s&&!(e.flags&16)&&r.append(this.getBuffer(1)),r.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,i){this.flushBuffer(),this.ensureMarks(t,i).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var i;e||(e=Il);let s=Gt.start(e,t||((i=this.cache.find(Gt))===null||i===void 0?void 0:i.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var i;let s=this.curLine;for(let r=e.length-1;r>=0;r--){let o=e[r],l;if(t>0&&(l=s.lastChild)&&l instanceof ae&&l.mark.eq(o))s=l,t--;else{let a=ae.of(o,(i=this.cache.find(ae,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,t=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Fo(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ct(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=new Es(e.from,e.to,e.value,e.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-t.rank||this.wrappers[i-1].to-t.to)<0;)i--;this.wrappers.splice(i,0,t)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let i of this.wrappers){let s=t.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||e===void 0?void 0:e.dom);t.append(r),t=r}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),i=this.cache.find(_t,void 0,1);return i&&(i.flags=t),i||new _t(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(e,s.length);return r?null:s.slice(0,l)}let t=Math.min(this.text.length,this.textOff+e),i=this.text.slice(this.textOff,t);return this.textOff=t,i}},un=[Ct,Gt,wt,ae,_t,Ye,$t];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,i=this.buckets[t];i.length<6?i.push(e):i[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,i=2){let s=e.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!t||t(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let i=t&&this.getCompositionContext(t.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;t&&l.fromA<=t.range.fromA&&l.toA>=t.range.toA?(this.forward(l.fromA,t.range.fromA,t.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof ae&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof ae&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,e,t,{point:(l,a,h,f,c,u)=>{if(h instanceof vt){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?nt.block:nt.inline),p=Mf(h),g=this.cache.findWidget(d,a-l,p)||Ct.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Tf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(e,t,i=1){t-e<=10?this.old.advance(t-e,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(e){let t=[],i=null;for(let s=e.parentNode;;s=s.parentNode){let r=G.get(s);if(s==this.view.contentDOM)break;r instanceof ae?t.push(r):r?.isLine()?i=r:r instanceof Ye||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new Gt(s,Il):i||t.push(ae.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:lf(s)}),s)))}return{line:i,marks:t}}};function Fo(n,e){let t=i=>{for(let s of i.children)if((e?s.isText():s.length)||t(s))return!0;return!1};return t(n)}function Mf(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var Il={class:"cm-line"};function Tf(n,e){let t=e.spec.attributes,i=e.spec.class;return!t&&!i||(n||(n={class:"cm-line"}),t&&hr(t,n),i&&(n.class+=" "+i)),n}function Df(n){let e=[];for(let t=n.parents.length;t>1;t--){let i=t==n.parents.length?n.tile:n.parents[t].tile;i instanceof ae&&e.push(i.mark)}return e}function gs(n){let e=G.get(n);return e&&e.setDOM(n.cloneNode()),n}var nt=class extends kt{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};nt.inline=new nt("span");nt.block=new nt("div");var ms=new class extends kt{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new $t(e,e.contentDOM),this.updateInner([new Te(0,0,0,e.state.doc.length)],null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!Nf(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?Bf(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Te(f,c,e.changes.mapPos(f,-1),e.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Rf(o,this.decorations,e.changes);a.length&&(i=Te.extendWithRanges(i,a));let h=Pf(l,this.blockWrappers,e.changes);return h.length&&(i=Te.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(t||e.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&G.get(t.text)&&l.cache.reused.set(G.get(t.text),2),this.tile=l.run(e,t),Ns(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||t||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Of(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new ze(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&If(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Ef(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new ze(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new ze(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new ze(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&ci(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=xi(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(t.head+t.assoc,t.assoc);i.collapse(f.node,f.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let c=e.observer.selectionRange;e.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=t.from&&i.collapse(s,r)}posFromDOM(e,t){let i=this.tile.nearest(e);if(!i)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(e==i.dom)r=i.dom.childNodes[t];else{let o=Xe(e)==0?0:t==0?-1:1;for(;;){let l=e.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?r=e:r=e.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!G.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?e==i.dom?s+t:s+(t?i.length:0):s}domAtPos(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.domPosFor(e,t):i.domIn(s,t)}inlineDOMNearPos(e,t){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=e)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=e&&(i=h,s=e-f,r=c=e&&!o&&(o=h,l=e-f,a=f>e),f>e&&o)return!0}}),!i&&!o?this.domAtPos(e,t):(r&&o?i=null:a&&i&&(o=null),i&&t<0||!o?i.domIn(s,t):o.domIn(l,t))}coordsAt(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t)}lineAt(e,t){let{tile:i}=this.tile.resolveBlock(e,t);return i.isLine()?i:null}coordsForChar(e){let{tile:t,offset:i}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==j.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Ye)m>i&&f(g,u,b);else if(u>=i&&(h>0&&t.push(-h),t.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?tn(T):[];if(P.length){let A=P[P.length-1],v=a?A.right-b.left:b.right-A.left;v>l&&(l=v,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?j.RTL:j.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=tn(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(e)return e;let t=document.createElement("div"),i,s,r;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=tn(t.firstChild)[0];i=t.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,t.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=i,t.push(F.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof r=="function"?r(this.view):r)}scrollIntoView(e){var t;if(e.isSnapshot){let f=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=f.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,e.range,e))return!0}catch(c){Me(this.view.state,c,"scroll handler")}let{range:i}=e,s=this.coordsAt(i.head,(t=i.assoc)!==null&&t!==void 0?t:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(ff(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Ns(this.tile)}};function Ns(n,e){let t=e?.get(n);if(t!=1){t==null&&n.destroy();for(let i of n.children)Ns(i,e)}}function Of(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Nl(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=dl(t.focusNode,t.focusOffset),s=pl(t.focusNode,t.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=G.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=G.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Bf(n,e,t){let i=Nl(n,t);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc;return{range:new Te(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Ef(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{ie.from&&(t=!0)}),t}var pi=class extends kt{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Hf(n,e,t=1){let i=n.charCategorizer(e),s=n.doc.lineAt(e),r=e-s.from;if(s.length==0)return w.cursor(e);r==0?t=1:r==s.length&&(t=-1);let o=r,l=r;t<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-t.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Ao(o,r,n.state.tabSize)}function Fs(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>e)break;if(!(r.toe)return r;(!s||r.type==ee.Text&&(s.type!=r.type||(t<0?r.frome)))&&(s=r)}}return s||i}return i}function Wf(n,e,t,i){let s=Fs(n,e.head,e.assoc||-1),r=!i||s.type!=ee.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:t==(l==j.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,t?-1:1)}return w.cursor(t?s.to:s.from,t?-1:1)}function Wo(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=xf(s,r,o,l,t),f=wl;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!t)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Vf(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==Se.Space&&(s=o),s==o}}function zf(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return w.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(t?g>a.bottom:gl:C{if(e>r&&es(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:w.cursor(i,in.viewState.docHeight)return new we(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==ee.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(t)return null;if(h.type==ee.Text){let c=Ff(n,s,h,o,l);return new we(c,c==h.from?1:-1)}}if(h.type!=ee.Text)return a<(h.top+h.bottom)/2?new we(h.from,1):new we(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(e,t,i,s){this.view=e,this.x=t,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;t:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(e,t);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(e,t)}let u=(o?this.dirAt(e[h],1):this.baseDir)==j.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(e,t){let i=[];for(let r=0;r{let o=i[r]-t,l=i[r+1]-t;return ki(e.dom,o,l).getClientRects()});return s.after?new we(i[s.i+1],-1):new we(i[s.i],1)}scanTile(e,t){if(!e.length)return new we(t,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,t);if(l.isComposite())return this.scanTile(l,t)}let i=[t];for(let l=0,a=t;l{let a=e.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:ki(a.dom,0,a.length)).getClientRects()}),r=e.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new we(i[s.i+1],-1):new we(o,1)}},Wt="\uFFFF",zs=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(U.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Wt}readRange(e,t){if(!e)return this;let i=e.parentNode;for(let s=e;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=G.get(s),l=s.nextSibling;if(l==t){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=G.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!Kf(l,t)&&this.lineBreak(),s=l}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){let t=G.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(qf(e,i.node,i.offset)?t:0))}};function qf(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Fl(e.docView.tile,t,i,0))){let a=r||o?[]:Uf(e),h=new zs(a,e);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=$f(a,this.bounds.from)}else{let a=e.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(e.contentDOM,a.anchorNode)?l.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=e.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(e.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(h,-1),d=0;u&&(d=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,e,t,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;at)return Fl(c,e,t,h);if(u>=e&&s==-1&&(s=a,r=h),h>t&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,e){let t,{newSel:i}=e,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,h=r.from,f=null;(o===8||S.android&&e.text.length=l&&r.to<=a&&(e.typeOver||c!=e.text)&&c.slice(0,r.from-l)==e.text.slice(0,r.from-l)&&c.slice(r.to-l)==e.text.slice(u=e.text.length-(c.length-(r.to-l)))?t={from:r.from,to:r.to,insert:R.of(e.text.slice(r.from-l,u).split(Wt))}:(d=Vl(c,e.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&e.text.slice(d.from,d.toB)==Wt+Wt&&d.toB--,t={from:l+d.from,to:l+d.toA,insert:R.of(e.text.slice(d.from,d.toB).split(Wt))})}else i&&(!n.hasFocus&&s.facet(Je)||gn(i,r))&&(i=null);if(!t&&!i)return!1;if((S.mac||S.android)&&t&&t.from==t.to&&t.from==r.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:t.from,to:t.to,insert:R.of([t.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?t={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&t&&t.from==t.to&&t.from==r.head&&t.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:r.from,to:r.to,insert:R.of([" "])}),t)return mr(n,t,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(vi).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,e,t,i=-1){if(S.ios&&n.inputState.flushIOSKey(e))return!0;let s=n.state.selection.main;if(S.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&n.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&jt(n.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.lengths.head)&&jt(n.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&jt(n.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=jf(n,e,t));return n.state.facet(Cl).some(a=>a(n,e.from,e.to,r,l))||n.dispatch(l()),!0}function jf(n,e,t){let i,s=n.state,r=s.selection.main,o=-1;if(e.from==e.to&&e.fromr.to){let a=e.fromc(n)),h,a);e.from==f&&(o=f)}if(o>-1)i={changes:e,selection:w.cursor(e.from+e.insert.length,-1)};else if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=r.frome.to?s.sliceDoc(e.to,r.to):"";i=s.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=r.to+10&&e.to>=r.to-10){let f=n.state.sliceDoc(e.from,e.to),c,u=t&&Nl(n,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-e.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:e.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Uf(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new pn(t,i)),(s!=t||r!=i)&&e.push(new pn(s,r))),e}function $f(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?w.single(t+e,i+e):null}function gn(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var Ks=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,S.safari&&e.contentDOM.addEventListener("input",()=>null),S.gecko&&oc(e.contentDOM.ownerDocument)}handleEvent(e){!Zf(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,t);for(let s of i.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=Gf(e),i=this.handlers,s=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&ql.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return S.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&!e.shiftKey&&((t=zl.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||_f.indexOf(e.key)>-1&&e.ctrlKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(s){Me(t.state,s)}}}function Gf(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&t(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(Vo(i.value,a))}}for(let i in Oe)t(i).handlers.push(Oe[i]);for(let i in he)t(i).observers.push(he[i]);return e}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],_f="dthko",ql=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Jf(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var js=class{constructor(e,t,i,s){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=fl(e.contentDOM),this.atoms=e.state.facet(vi).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(U.allowMultipleSelections)&&Yf(e,t),this.dragging=Qf(e,t)&&Ul(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Jf(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);e.clientX-a.left<=s+Ji?t=-Yi(s-e.clientX):e.clientX+a.right>=o-Ji&&(t=Yi(e.clientX-o)),e.clientY-a.top<=r+Ji?i=-Yi(r-e.clientY):e.clientY+a.bottom>=l-Ji&&(i=Yi(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,i=Hl(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Yf(n,e){let t=n.state.facet(xl);return t.length?t[0](e):S.mac?e.metaKey:e.ctrlKey}function Xf(n,e){let t=n.state.facet(kl);return t.length?t[0](e):S.mac?!e.altKey:!e.ctrlKey}function Qf(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function Zf(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=G.get(t))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(e))return!1;return!0}var Oe=Object.create(null),he=Object.create(null),Kl=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function ec(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),jl(n,t.value)},50)}function Cn(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}function jl(n,e){e=Cn(n.state,ur,e);let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(Us!=null&&t.selection.ranges.every(a=>a.empty)&&Us==r.toString()){let a=-1;i=t.changeByRange(h=>{let f=t.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}he.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};he.wheel=he.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Oe.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);he.touchstart=(n,e)=>{let t=n.inputState,i=e.targetTouches[0];t.lastTouchTime=Date.now(),i&&(t.lastTouchX=i.clientX,t.lastTouchY=i.clientY),t.setSelectionOrigin("select.pointer")};he.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Oe.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(vl))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=ic(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new js(n,e,t,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,e,t,i){if(i==1)return w.cursor(e,t);if(i==2)return Hf(n.state,e,t);{let s=n.docView.lineAt(e,t),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(Ko+1)%3:1}function ic(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),i=Ul(e),s=n.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(t.pos!=a.pos&&!o){let c=zo(n,t.pos,t.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=nc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function nc(n,e){for(let t=0;t=e)return w.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Oe.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let s=n.docView.tile.nearest(e.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=t.to||o<=t.from)&&(t=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Oe.dragend=n=>(n.inputState.draggedContent=null,!1);function Uo(n,e,t,i){if(t=Cn(n.state,ur,t),!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Xf(n,e)?{from:r.from,to:r.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Oe.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),s=0,r=()=>{++s==t.length&&Uo(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return Uo(n,e,i,!0),!0}return!1};Oe.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Kl?null:e.clipboardData;return t?(jl(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(ec(n),!1)};function sc(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function rc(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,e.join(n.lineBreak)),ranges:t,linewise:i}}var Us=null;Oe.copy=Oe.cut=(n,e)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:i,linewise:s}=rc(n.state);if(!t&&!s)return!1;Us=s?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Kl?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(sc(n,t),!1)};var $l=me.define();function Gl(n,e){let t=[];for(let i of n.facet(Al)){let s=i(n,e);s&&t.push(s)}return t.length?n.update({effects:t,annotations:$l.of(!0)}):null}function _l(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Gl(n.state,e);t?n.dispatch(t):n.update([])}},10)}he.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),_l(n)};he.blur=n=>{n.observer.clearSelectionRange(),_l(n)};he.compositionstart=he.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};he.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};he.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Oe.beforeinput=(n,e)=>{var t,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let r=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==e.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>he.compositionend(n,e),20),!1};var $o=new Set;function oc(n){$o.has(n)||($o.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Go=["pre-wrap","normal","pre-line","break-spaces"],Jt=!1;function _o(){Jt=!1}var $s=class{constructor(e){this.lineWrapping=e,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Go.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,a=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>nn&&(Jt=!0),this.height=e)}replace(e,t,i){return n.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,K.ByPosNoHeight,i.setDoc(t),0,0),d=u.to>=h?u:r.lineAt(h,K.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,K.ByPos,i,s,r))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},be=class n extends yn{constructor(e,t,i){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(e,t){return new Ae(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof tt&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof tt?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ue.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},tt=class n extends ue{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,r=s-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,s);if(t.lineWrapping){let h=s+(e0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(e>0){let r=i[0];r instanceof n?i[0]=new n(e+r.length):i.unshift(new n(e-1),null)}return ue.of(i)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1;for(s.from>t&&o.push(new n(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new be(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(e,l));let h=ue.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(e,t).perLine)>=nn)&&(Jt=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},_s=class extends ue{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return el))return h;let f=t==K.ByPosNoHeight?K.ByPosNoHeight:K.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,s,r);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Jo(r,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e2*t.size||t.size>2*e.size?ue.of(this.break?[e,null,t]:[e,t]):(this.left=mn(this.left,e),this.right=mn(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof tt&&(i=n[e+1])instanceof tt&&n.splice(e-1,3,new tt(t.length+1+i.length))}var ac=5,Js=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof be?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new be(i-this.pos,-1,0)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=ac)&&this.addLineDeco(s,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new be(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let i=new tt(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof be)return e;let t=new be(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof be)&&!this.isCovered?this.nodes.push(new be(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function cc(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function uc(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var mi=class{constructor(e,t,i,s){this.from=e,this.to=t,this.size=i,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new $s(i),this.stateDeco=Xo(t),this.heightMap=ue.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(t.doc),[new Te(0,0,0,t.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new zt(r,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(hi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=e.changedRanges,r=Te.extendWithRanges(s,hc(i,this.stateDeco,e?e.changes:se.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);_o(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Jt)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?j.RTL:j.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:v}=hl(t,l);(A>.005&&Math.abs(this.scaleX-A)>.005||v>.005&&Math.abs(this.scaleY-v)>.005)&&(this.scaleX=A,this.scaleY=v,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||e.win);let g=(this.printing?uc:fc)(t,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!cc(e.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),a){let A=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:v,charWidth:k,textHeight:I}=e.docView.measureTextSize();o=v>0&&s.refresh(r,v,k,I,Math.max(5,T/k),A),o&&(e.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),_o();for(let v of this.viewports){let k=v.from==this.viewport.from?A:e.docView.measureVisibleLineHeights(v);this.heightMap=(o?ue.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Te(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Gs(v.from,k))}Jt&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new zt(s.lineAt(o-i*1e3,K.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,K.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,K.ByPos,r,0,0),u;t.y=="center"?u=(c.top+c.bottom)/2-f/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=j.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=t.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let v of e)v.from>=f.from&&v.fromf.from&&a(f.from,d,f,c),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let i=[];F.spans(t,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||hi(this.heightMap.lineAt(e,K.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||hi(this.heightMap.lineAt(this.scaler.fromDOM(e),K.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return hi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},zt=class{constructor(e,t){this.from=e,this.to=t}};function dc(n,e,t){let i=[],s=n,r=0;return F.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}function pc(n,e){for(let t of n)if(e(t))return t}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let e=n.facet(Sn).filter(i=>typeof i!="function"),t=n.facet(gr).filter(i=>typeof i!="function");return t.length&&e.push(F.join(t)),e}var Qs=class n{constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,K.ByPos,e,0,0).top,f=t.lineAt(a,K.ByPos,e,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=tt.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}};function hi(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new Ae(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(s=>hi(s,e)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),er=ye.newName(),Jl=ye.newName(),Yl=ye.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function tr(n,e,t){return new ye(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}var gc=tr("."+er,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),mc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&e.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(e),e.state.facet(Je)&&(e.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Je)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=xi(e.root);if(!t)return!1;let i=S.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&yc(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&jt(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!gn(this.view.state.selection,t.newSel.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let i=Qo(t,e.previousSibling||e.target.previousSibling,-1),s=Qo(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Je)!=e.state.facet(Je)&&(e.view.contentDOM.editContext=e.state.facet(Je)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,e,t){for(;e;){let i=G.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function Zo(n,e){let t=e.startContainer,i=e.startOffset,s=e.endContainer,r=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([t,i,s,r]=[s,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}}function yc(n,e){if(e.getComposedRanges){let s=e.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let t=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?Zo(n,t):null}var nr=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let s=e.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(e.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||e.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!e.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(e,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(t.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,t+=f,this.to+=f;return}else s=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}t+=f}),s&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||cf(e.parent)||document,this.viewState=new bn(this,e.state||U.create(e)),e.scrollTo&&e.scrollTo.is(_i)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Vt).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new Ks(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof X?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let u of e){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation($l))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Gl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet(U.phrases)!=this.state.facet(U.phrases))return this.setState(r);s=cn.create(this,r,e),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(_i)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(t||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Me(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&jt(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,e),this.plugins=e.facet(Vt).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Vt),i=e.state.facet(Vt);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Me(this.state,p),el}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,t?t.flags|=a:t=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Os))l(t)}get themeClasses(){return er+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let e=tl(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Je)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),tl(this,pr,t);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,t),r=Ro(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let e=this.state.facet(n.cspNonce);ye.mount(this.root,this.styleModules.concat(gc).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;ti.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return ys(this,e,Wo(this,e,t,i))}moveByGroup(e,t){return ys(this,e,Wo(this,e,t,i=>Vf(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return w.cursor(r.side(t,s)+e.from,r.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,i=!0){return Wf(this,e,t,i)}moveVertically(e,t,i){return ys(this,e,zf(this,e,t,i))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let i=Ws(this,e,t);return i&&i.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Ws(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[xe.find(r,e-s.from,-1,t)];return fn(i,o.dir==j.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Ml)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>bc)return bl(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||yl(r.isolates,i=No(this,e))))return r.order;i||(i=No(this,e));let s=wf(e.text,t,i);return this.bidiCache.push(new wn(e.from,e.to,t,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||S.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var i,s,r,o;return _i.of(new ui(typeof e=="number"?w.cursor(e):e,(i=t.y)!==null&&i!==void 0?i:"nearest",(s=t.x)!==null&&s!==void 0?s:"nearest",(r=t.yMargin)!==null&&r!==void 0?r:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return _i.of(new ui(w.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return De.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return De.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=ye.newName(),s=[Zi.of(i),ai.of(tr(`.${i}`,e))];return t&&t.dark&&s.push(Zs.of(!0)),s}static baseTheme(e){return Ht.lowest(ai.of(tr("."+er,e,Xl)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&G.get(i)||G.get(e);return((t=s?.root)===null||t===void 0?void 0:t.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Je;D.mouseSelectionStyle=vl;D.dragMovesSelection=kl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=vi;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let e=5,t=5;for(let i of n)typeof i=="number"?e=t=i:{x:e,y:t}=i;return{x:e,y:t}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=$.define();var bc=4096,el={},wn=class n{constructor(e,t,i,s,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:j.LTR;for(let r=Math.max(0,e.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,t)}return t}var wc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function xc(n,e){let t=n.split(/-(?!$)/),i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),t}var et=null,Sc=4e3;function Cc(n,e=wc){let t=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>xc(b,e));for(let b=1;b{let P=et={view:T,prefix:C,scope:o};return setTimeout(()=>{et==P&&(et=null)},Sc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=t[h]||(t[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[e]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}var sr=null;function Ac(n,e,t,i){sr=e;let s=Oo(e),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;et&&et.view==t&&et.scope==i&&(l=et.prefix+" ",ql.indexOf(e.keyCode)<0&&(h=!0,et=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(t)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+en(s,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(S.windows&&e.ctrlKey&&e.altKey)&&!(S.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=_e[e.keyCode])&&p!=s?(u(d[l+en(p,e,!0)])||e.shiftKey&&(g=Ft[e.keyCode])!=s&&g!=p&&u(d[l+en(g,e,!1)]))&&(a=!0):o&&e.shiftKey&&u(d[l+en(s,e,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&e.stopPropagation(),sr=null,a}var xt=class n{constructor(e,t,i,s,r){this.className=e,this.left=t,this.top=i,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(e);return[new n(t,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Mc(e,t,i)}};function Ql(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==j.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,e,t,i){let s=n.coordsAtPos(e,t*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mc(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),s=Math.min(t.to,n.viewport.to),r=n.textDirection==j.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==ee.Text?d:null,m=p.type==ee.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(t.from,t.to,g));{let A=g?T(t.from,null,g):P(d,!1),v=m?T(null,t.to,m):P(p,!0),k=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=ne)break;pe>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pe,ne),v==null&&pe>=H,He.dir)}if(q=fe.to+1,q>=ne)break}return W.length==0&&E(O,A==null,H,v==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,v){let k=l.top+(v?A.top:A.bottom);return{top:k,bottom:k,horizontal:[]}}}function Tc(n,e){return n.constructor==e.constructor&&n.eq(e)}var rr=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(sn)!=e.state.facet(sn)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(sn);for(;t!Tc(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[i].constructor&&s.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[De.define(e=>new rr(e,n)),sn.of(n)]}var Yt=M.define({combine(n){return mt(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function ea(n={}){return[Yt.of(n),Dc,Oc,Bc,Tl.of(!0)]}function ta(n){return n.startState.facet(Yt)!=n.state.facet(Yt)}var Dc=Zl({above:!0,markers(n){let{state:e}=n,t=e.facet(Yt),i=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty||t.drawRangeCursor&&!(r&&S.ios&&t.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xt.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=ta(n);return t&&sl(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){sl(e.state,n)},class:"cm-cursorLayer"});function sl(n,e){e.style.animationDuration=n.facet(Yt).cursorBlinkRate+"ms"}var Oc=Zl({above:!1,markers(n){let e=[],{main:t,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xt.forRange(n,"cm-selectionBackground",s))e.push(r);if(S.ios&&!t.empty&&n.state.facet(Yt).iosSelectionHandles){for(let s of xt.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(t.from,1)))e.push(s);for(let s of xt.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(t.to,1)))e.push(s)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||ta(n)},class:"cm-selectionLayer"}),Bc=Ht.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var ap=/x/.unicode!=null?"gu":"g";function ia(){return Lc}var Ec=z.line({class:"cm-activeLine"}),Lc=De.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>e&&(t.push(Ec.range(s.from)),e=s.from)}return z.set(t)}},{decorations:n=>n.decorations});var hp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Be=class extends We{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Be.prototype.elementClass="";Be.prototype.toDOM=void 0;Be.prototype.mapMode=le.TrackBefore;Be.prototype.startSide=Be.prototype.endSide=-1;Be.prototype.point=!0;var rn=M.define(),Rc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(e=>e)});function Pc(n){let e=[Ic];return n&&n.fixed===!1&&e.push(or.of(!0)),e}var Ic=De.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(e=>new xn(n,e)),this.fixed=!n.state.facet(or);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==ee.Text&&o){lr(t,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==ee.Text){lr(t,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(on),t=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let i=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==j.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var ar=class{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=F.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:s}=this,r=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let l=new kn(e,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,i);this.height=t.bottom,this.i++}line(e,t,i){let s=[];lr(this.cursor,s,t.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),s=i?[i]:null;for(let r of e.state.facet(Rc)){let o=r(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},xn=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,s)&&s.preventDefault()});this.markers=rl(t.markers(e)),t.initialSpacer&&(this.spacer=new kn(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=rl(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!F.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},kn=class{constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Nc(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Be{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,e){return n.state.facet(qt).formatNumber(e,n.state)}var Wc=on.compute([qt],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Hc)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new yi(ws(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,i)=>{for(let s of e.state.facet(Fc)){let r=s(e,t,i);if(r)return r}return null},lineMarkerChange:e=>e.startState.facet(qt)!=e.state.facet(qt),initialSpacer(e){return new yi(ws(e,ol(e.state.doc.lines)))},updateSpacer(e,t){let i=ws(t.view,ol(t.view.state.doc.lines));return i==e.number?e:new yi(i)},domEventHandlers:n.facet(qt).domEventHandlers,side:"before"}));function na(n={}){return[qt.of(n),Pc(),Wc]}function ol(n){let e=9;for(;e{let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>t&&(t=s,e.push(Vc.range(s)))}return F.of(e)});function sa(){return zc}var qc=0,Si=class{constructor(e,t){this.from=e,this.to=t}},B=class{constructor(e={}){this.id=qc++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=oe.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var At=class{constructor(e,t,i,s=!1){this.tree=e,this.overlay=t,this.parser=i,this.bracketed=s}static get(e){return e&&e.props&&e.props[B.mounted.id]}},Kc=Object.create(null),oe=class n{constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Kc,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new n(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(B.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}};oe.none=new oe("",Object.create(null),0,8);var Dn=class n{constructor(e){this.types=e;for(let t=0;t0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Sr(oe.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new n(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new n(oe.none,t,i,s)))}static build(e){return Uc(e)}};_.empty=new _(oe.none,[],[],0);var yr=class n{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},st=class n{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return oe.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function Ci(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?l.length:-1;e!=h;e+=t){let f=l[e],c=a[e]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof _&&(u=At.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof st){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,t,i-c,s);if(d>-1)return new Ai(new wr(o,f,e,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||vr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=At.get(f))&&!d.overlay)return new n(d.tree,c,e,o);let p=new n(f,c,e,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?f.children.length-1:0,t,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=At.get(this._tree))&&s.overlay){let r=e-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((t>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,e,t=e.length-1){for(let i=n;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}var wr=class{constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new _(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let e=0,t=n[0];for(let r=1;rt.from||o.to=e){let l=new qe(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,e,t,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~J.EnterBracketed,e instanceof qe)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof qe?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof st||!l.type.isAnonymous||vr(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}};function vr(n){return n.children.some(e=>e instanceof st||!e.type.isAnonymous||vr(e))}function Uc(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new yr(t,t.length):t,a=i.types,h=0,f=0;function c(A,v,k,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,ne=h;if(N<0)if(l.next(),N==-1){let $e=r[E];k.push($e),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let fe=a[E],He,Z,pe=O-A;if(H-O<=s&&(Z=m(l.pos-v,L))){let $e=new Uint16Array(Z.size-Z.skip),ge=l.pos-Z.size,Fe=$e.length;for(;l.pos>ge;)Fe=b(Z.start,$e,Fe);He=new st($e,H-Z.start,i),pe=Z.start-A}else{let $e=l.pos-N;l.next();let ge=[],Fe=[],ht=E>=o?E:-1,Et=0,Ni=H;for(;l.pos>$e;)ht>=0&&l.id==ht&&l.size>=0?(l.end<=Ni-s&&(p(ge,Fe,O,Et,l.end,Ni,ht,q,ne),Et=ge.length,Ni=l.end),l.next()):W>2500?u(O,$e,ge,Fe):c(O,$e,ge,Fe,ht,W+1);if(ht>=0&&Et>0&&Et-1&&Et>0){let Qr=d(fe,ne);He=Sr(fe,ge,Fe,0,ge.length,0,H-O,Qr,Qr)}else He=g(fe,ge,Fe,H-O,q-H,ne)}k.push(He),I.push(pe)}function u(A,v,k,I){let L=[],W=0,E=-1;for(;l.pos>v;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;k.push(new st(O,L[2]-H,i)),I.push(H-A)}}function d(A,v){return(k,I,L)=>{let W=0,E=k.length-1,O,H;if(E>=0&&(O=k[E])instanceof _){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,k,I,L,W,v)}}function p(A,v,k,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(v.pop()+k-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),v.push(L-k)}function g(A,v,k,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new _(A,v,k,I,E)}function m(A,v){let k=l.fork(),I=0,L=0,W=0,E=k.end-s,O={size:0,start:0,skip:0};e:for(let H=k.pos-A;k.pos>H;){let N=k.size;if(k.id==v&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,k.next();continue}let q=k.pos-N;if(N<0||q=o?4:0,fe=k.start;for(k.next();k.pos>q;){if(k.size<0)if(k.size==-3||k.size==-4)ne+=4;else break e;else k.id>=o&&(ne+=4);k.next()}L=fe,I+=N,W+=ne}return(v<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,v,k){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)k=b(A,v,k)}v[--k]=O,v[--k]=W-A,v[--k]=L-A,v[--k]=I}else E==-3?h=I:E==-4&&(f=I);return k}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(e=n.length)!==null&&e!==void 0?e:C.length?T[0]+C[0].length:0;return new _(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,e){if(!n.isAnonymous||e instanceof st||e.type!=n)return 1;let t=la.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof _)){t=1;break}t+=Tn(n,i)}la.set(e,t)}return t}function Sr(n,e,t,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;v+=k}if(T==P+1){if(v>f){let k=p[P];d(k.children,k.positions,0,k.children.length,g[P]+C);continue}c.push(p[P])}else{let k=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,k,null,a))}u.push(A+C-r)}}return d(e,t,i,s,0),(l||a)(c,u,o)}var Mt=class n{constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new n(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}},kr=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var gp=new B({perNode:!0});var $c=0,Ee=class n{constructor(e,t,i,s){this.name=e,this.set=t,this.base=i,this.modified=s,this.id=$c++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),t)for(let r of t.set)s.set.push(r);return s}static defineModifier(e){let t=new Rn(e);return i=>i.modified.indexOf(t)>-1?i:Rn.get(i.base||i,i.modified.concat(t).sort((s,r)=>s.id-r.id))}},Gc=0,Rn=class n{constructor(e){this.name=e,this.instances=[],this.id=Gc++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&_c(t,l.modified));if(i)return i;let s=[],r=new Ee(e.name,s,e,t);for(let l of t)l.instances.push(r);let o=Jc(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function _c(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function Jc(n){let e=[[]];for(let t=0;ti.length-t.length)}function ua(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new Dt(i,o,a>0?r.slice(0,a):null);e[h]=f.sort(e[h])}}return da.add(e)}var da=new B({combine(n,e){let t,i,s;for(;n||e;){if(!n||e&&n.depth>=e.depth?(s=e,e=e.next):(s=n,n=n.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let r=new Dt(s.tags,s.mode,s.context);t?t.next=r:i=r,t=r}return i}}),Dt=class{constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Yc(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}function pa(n,e,t,i=0,s=n.length){let r=new Ar(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Xc(e)||Dt.empty,c=Yc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(t,l),h),f.opaque)return;let u=e.tree&&e.tree.prop(B.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=e.firstChild();for(let m=0,b=l;;m++){let C=m=T||!e.nextSibling())););if(!C||T>i)break;b=C.to+l,b>t&&(this.highlightRange(d.cursor(),Math.max(t,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&e.parent()}else if(e.firstChild()){u&&(s="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function Xc(n){let e=n.type.prop(da);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var x=Ee.define,Bn=x(),rt=x(),fa=x(rt),ca=x(rt),ot=x(),En=x(ot),Cr=x(ot),Ue=x(),Tt=x(Ue),Ke=x(),je=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:rt,variableName:x(rt),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(rt),labelName:x(rt),namespace:x(rt),macroName:x(rt),literal:ot,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(ot),regexp:x(ot),escape:x(ot),color:x(ot),url:x(ot),keyword:Ke,self:x(Ke),null:x(Ke),atom:x(Ke),unit:x(Ke),modifier:x(Ke),operatorKeyword:x(Ke),controlKeyword:x(Ke),definitionKeyword:x(Ke),moduleKeyword:x(Ke),operator:je,derefOperator:x(je),arithmeticOperator:x(je),logicOperator:x(je),bitwiseOperator:x(je),compareOperator:x(je),updateOperator:x(je),definitionOperator:x(je),typeOperator:x(je),controlOperator:x(je),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:Ue,heading:Tt,heading1:x(Tt),heading2:x(Tt),heading3:x(Tt),heading4:x(Tt),heading5:x(Tt),heading6:x(Tt),contentSeparator:x(Ue),list:x(Ue),quote:x(Ue),emphasis:x(Ue),strong:x(Ue),link:x(Ue),monospace:x(Ue),strikethrough:x(Ue),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Ee.defineModifier("definition"),constant:Ee.defineModifier("constant"),function:Ee.defineModifier("function"),standard:Ee.defineModifier("standard"),local:Ee.defineModifier("local"),special:Ee.defineModifier("special")};for(let n in y){let e=y[n];e instanceof Ee&&(e.name=n)}var bp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xt=new B;function Qc(n){return M.define({combine:n?e=>e.concat(n):void 0})}var Zc=new B,de=class{constructor(e,t,i=[],s=""){this.data=e,this.name=s,U.prototype.hasOwnProperty("tree")||Object.defineProperty(U.prototype,"tree",{get(){return Re(this)}}),this.parser=t,this.extension=[Qt.of(this),U.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xt);if(!h)return[];let f=r.facet(h),c=a.type.prop(Zc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(e,t,i=-1){return ga(e,t,i).type.prop(Xt)==this.data}findRegions(e){let t=e.facet(Qt);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xt)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xt)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},Oi=null,Bi=class n{constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new n(e,t,[],_.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=_.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Mt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=Oi;Oi=this;try{return e()}finally{Oi=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=ma(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Mt.applyChanges(i,a),s=_.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=e.mapPos(h.from,1),c=e.mapPos(h.to,-1);fe.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new _(oe.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return Oi}};function ma(n,e,t){return Mt.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var Ei=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=Bi.create(e.facet(Qt).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new n(i)}};de.state=Ce.define({create:Ei.init,update(n,e){for(let t of e.effects)if(t.is(de.setState))return t.value;return e.startState.facet(Qt)!=e.state.facet(Qt)?Ei.init(e.state):n.apply(e)}});var va=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(va=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,eu=De.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(de.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(de.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=va(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:de.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>Me(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qt=M.define({combine(n){return n.length?n[0]:null},enables:n=>[de.state,eu,D.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]});var tu=M.define(),ei=M.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function lt(n){let e=n.facet(ei);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function ti(n,e){let t="",i=n.tabSize,s=n.facet(ei)[0];if(s==" "){for(;e>=i;)t+=" ",e-=i;s=" "}for(let r=0;r=e?iu(n,t,e):null}var Ot=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=lt(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return yt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function iu(n,e,t){let i=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,t)}function Ca(n,e,t){for(let i=n;i;i=i.next){let s=su(i.node);if(s)return s(Rr.create(e,t,i))}return 0}function nu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function su(n){let e=n.type.prop(Sa);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>au(o,!0,1,void 0,r&&!nu(o)?s.from:void 0)}return n.parent==null?ru:null}function ru(){return 0}var Rr=class n extends Ot{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new n(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ou(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ou(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function lu(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(t.to-r.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}function au(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?lu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}var hu=200;function Aa(){return U.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+hu)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ti(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Zt=class n{constructor(e,t){this.specs=e;let i;function s(l){let a=ye.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof de?l=>l.prop(Xt)==o.data:o?l=>l==o:void 0,this.style=Tr(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new ye(i):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let e=n.facet(Pr);return e.length?e:n.facet(Ma)}function Hn(n,e){let t=[fu],i;return n instanceof Zt&&(n.module&&t.push(D.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(Ma.of(n)):i?t.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):t.push(Pr.of(n)),t}var Ir=class{constructor(e){this.markCache=Object.create(null),this.tree=Re(e.state),this.decorations=this.buildDeco(e,Br(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=Re(e.state),i=Br(e.state),s=i!=Br(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return z.none;let i=new gt;for(let{from:s,to:r}of e.visibleRanges)pa(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},fu=Ht.high(De.fromClass(Ir,{decorations:n=>n.decorations})),Ta=Zt.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),cu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return mt(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:pu})}}),uu=z.mark({class:"cm-matchingBracket"}),du=z.mark({class:"cm-nonmatchingBracket"});function pu(n){let e=[],t=n.matched?uu:du;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}function ya(n){let e=[],t=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Le(n,i.head,-1,t)||i.head>0&&Le(n,i.head-1,1,t)||t.afterCursor&&(Le(n,i.head,1,t)||i.headn.decorations}),mu=[gu,cu];function Ea(n={}){return[Ba.of(n),mu]}var yu=new B;function Nr(n,e,t){let i=n.prop(e<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function Hr(n){let e=n.type.prop(yu);return e?e(n.node):n}function Le(n,e,t,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Re(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=Nr(a.type,t,r);if(h&&a.from0?e>=f.from&&ef.from&&e<=f.to))return bu(n,e,t,a,f,h,r)}}return wu(n,e,t,o,l.type,s,r)}function bu(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(t<0?f.childBefore(i.from):f.childAfter(i.to)))do if(t<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},f=n.doc.iterRange(e,t>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;t<0&&(u+=d.length);let p=e+u*t;for(let g=t>0?0:d.length-1,m=t>0?d.length:-1;g!=m;g+=t){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==t>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}t>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,e,t,i=0,s=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,e.length);return s(r)==s(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function xu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||ku,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function ku(n){if(typeof n!="object")return n;let e={};for(let t in n){let i=n[t];e[t]=i instanceof Array?i.slice():i}return e}var wa=new WeakMap,Li=class n extends de{constructor(e){let t=Qc(e.languageData),i=xu(e),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(t,r,[],e.name),this.topNode=Au(t,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=e.tokenTable?new In(i.tokenTable):Cu}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:i}=e.options;i&&(t=wa.get(e.state),t!=null&&t1e4)return null;for(;r=i&&t+e.length<=s&&e.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=t+e.positions[o],h=l instanceof _&&a=e.length)return e;!s&&t==0&&e.type==n.topNode&&(s=!0);for(let r=e.children.length-1;r>=0;r--){let o=e.positions[r],l=e.children[r],a;if(ot&&Wr(n,r.tree,0-r.offset,t,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,t+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?lt(s):4),tree:_.empty}}var Fr=class{constructor(e,t,i,s){this.lang=e,this.input=t,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=vu(e,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(lt(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let e=Bi.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(t,this.chunkStart+512);for(e&&(i=Math.min(i,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`&&(t="");else{let i=t.indexOf(` +`);i>-1&&(t=t.slice(0,i))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),i=e+t.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(t=t.slice(0,r-(i-t.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);t+=l,i=o+l.length}return{line:t,end:i}}skipGapsTo(e,t,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=e+t;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;t+=o-s}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(t,s,1),t+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=i:this.chunk.push(e,t,i,r),s}parseLine(e){let{line:t,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(t,e?e.state.tabSize:4,e?lt(e.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[oe.none],Su=new Dn(Ri),xa=[],ka=Object.create(null),Pa=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Ia(Vr,e);var In=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Pa)}resolve(e){return e?this.table[e]||(this.table[e]=Ia(this.extra,e)):0}},Cu=new In(Vr);function Er(n,e){xa.indexOf(n)>-1||(xa.push(n),console.warn(e))}function Ia(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+t.map(l=>l.id),r=ka[s];if(r)return r.id;let o=ka[s]=oe.define({id:Ri.length,name:i,props:[ua({[i]:t})]});return Ri.push(o),o.id}function Au(n,e){let t=oe.define({id:Ri.length,name:"Document",props:[Xt.add(()=>n),Sa.add(()=>i=>e.getIndent(i))],top:!0});return Ri.push(t),t}var Tp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:j.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:j.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Mu=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=Gr(n.state,t.from);return i.line?Tu(n):i.block?Ou(n):!1};function $r(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}var Tu=$r(Lu,0);var Du=$r(ja,0);var Ou=$r((n,e)=>ja(n,e,Eu(e)),0);function Gr(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var Pi=50;function Bu(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-t.length;return f.slice(u,u+e.length)==e&&c.slice(p,p+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(f.charAt(u+e.length))?1:0},close:{pos:s-d-t.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Eu(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to);s.from>i.from&&s.from==t.to&&(s=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}function ja(n,e,t=e.selection.ranges){let i=t.map(r=>Gr(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>Bu(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=me.define(),Ru=me.define(),Pu=M.define(),Ua=M.define({combine(n){return mt(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(i,s)=>e(i,s)||t(i,s)})}}),$a=Ce.define({create(){return Bt.empty},update(n,e){let t=e.state.facet(Ua),i=e.annotation(qr);if(i){let a=Pe.fromTransaction(e,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,t.minDepth,a):f=Ya(f,e.startState.selection),new Bt(h==0?i.rest:f,h==0?f:i.rest)}let s=e.annotation(Ru);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(X.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=Pe.fromTransaction(e),o=e.annotation(X.time),l=e.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Bt(n.done.map(Pe.fromJSON),n.undone.map(Pe.fromJSON))}});function Ga(n={}){return[$a,Ua.of(n),D.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?_a:e.inputType=="historyRedo"?Kr:null;return i?(e.preventDefault(),i(t)):!1}})]}function Vn(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field($a,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}var _a=Vn(0,!1),Kr=Vn(1,!1),Iu=Vn(0,!0),Nu=Vn(1,!0);var Pe=class n{constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new n(e.changes&&se.fromJSON(e.changes),[],e.mapped&&Ge.fromJSON(e.mapped),e.startSelection&&w.fromJSON(e.startSelection),e.selectionsAfter.map(w.fromJSON))}static fromTransaction(e,t){let i=ke;for(let s of e.startState.facet(Pu)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,ke)}static selection(e){return new n(void 0,ke,void 0,void 0,e)}};function Wn(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}function Hu(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Fu(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function Ja(n,e){return n.length?e.length?n.concat(e):n:e}var ke=[],Wu=200;function Ya(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-Wu));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),Wn(n,n.length-1,1e9,t.setSelAfter(i)))}else return[Pe.selection([e])]}function Vu(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function zr(n,e){if(!n.length)return n;let t=n.length,i=ke;for(;t;){let s=zu(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[Pe.selection(i)]:ke}function zu(n,e,t){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):ke,t);if(!n.changes)return Pe.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pe(s,$.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}var qu=/^(input\.type|delete)($|\.)/,Bt=class n{constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||qu.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):zn(t,e))}function ie(n){return n.textDirectionAt(n.state.selection.main.head)==j.LTR}var Za=n=>Qa(n,!ie(n)),eh=n=>Qa(n,ie(n));function th(n,e){return Ne(n,t=>t.empty?n.moveByGroup(t,e):zn(t,e))}var Ku=n=>th(n,!ie(n)),ju=n=>th(n,ie(n));var Np=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Uu(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function qn(n,e,t){let i=Re(n).resolveInner(e.head),s=t?B.closedBy:B.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;Uu(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?Le(n,i.from,1):Le(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,w.cursor(l,t?-1:1)}var $u=n=>Ne(n,e=>qn(n.state,e,!ie(n))),Gu=n=>Ne(n,e=>qn(n.state,e,ie(n)));function ih(n,e){return Ne(n,t=>{if(!t.empty)return zn(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):zn(o,e));if(s.eq(i.selection))return!1;let r;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),jr=n=>oh(n,!0);function at(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var _u=n=>Ne(n,e=>at(n,e,!0)),Ju=n=>Ne(n,e=>at(n,e,!1)),Yu=n=>Ne(n,e=>at(n,e,!ie(n))),Xu=n=>Ne(n,e=>at(n,e,ie(n))),Qu=n=>Ne(n,e=>w.cursor(n.lineBlockAt(e.head).from,1)),Zu=n=>Ne(n,e=>w.cursor(n.lineBlockAt(e.head).to,-1));function ed(n,e,t){let i=!1,s=ii(n.selection,r=>{let o=Le(n,r.head,-1)||Le(n,r.head,1)||r.head>0&&Le(n,r.head-1,1)||r.headed(n,e,!1);function ve(n,e){let t=ii(n.state.selection,i=>{let s=e(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return t.eq(n.state.selection)?!1:(n.dispatch(Ie(n.state,t)),!0)}function lh(n,e){return ve(n,t=>n.moveByChar(t,e))}var ah=n=>lh(n,!ie(n)),hh=n=>lh(n,ie(n));function fh(n,e){return ve(n,t=>n.moveByGroup(t,e))}var id=n=>fh(n,!ie(n)),nd=n=>fh(n,ie(n));var sd=n=>ve(n,e=>qn(n.state,e,!ie(n))),rd=n=>ve(n,e=>qn(n.state,e,ie(n)));function ch(n,e){return ve(n,t=>n.moveVertically(t,e))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,e){return ve(n,t=>n.moveVertically(t,e,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),od=n=>ve(n,e=>at(n,e,!0)),ld=n=>ve(n,e=>at(n,e,!1)),ad=n=>ve(n,e=>at(n,e,!ie(n))),hd=n=>ve(n,e=>at(n,e,ie(n))),fd=n=>ve(n,e=>w.cursor(n.lineBlockAt(e.head).from)),cd=n=>ve(n,e=>w.cursor(n.lineBlockAt(e.head).to)),Wa=({state:n,dispatch:e})=>(e(Ie(n,{anchor:0})),!0),Va=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.selection.main.anchor,head:0})),!0),qa=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),ud=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),dd=({state:n,dispatch:e})=>{let t=Kn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:w.create(t),userEvent:"select"})),!0},pd=({state:n,dispatch:e})=>{let t=ii(n.selection,i=>{let s=Re(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(Ie(n,t)),!0)};function gh(n,e){let{state:t}=n,i=t.selection,s=t.selection.ranges.slice();for(let r of t.selection.ranges){let o=t.doc.lineAt(r.head);if(e?o.to0)for(let l=r;;){let a=n.moveVertically(l,e);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Ie(t,w.create(s,s.length-1))),!0)}var gd=n=>gh(n,!1),md=n=>gh(n,!0),yd=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=w.create([t.main]):t.main.empty||(i=w.create([w.cursor(t.main.head)])),i?(e(Ie(n,i)),!0):!1};function Ii(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(r);ao&&(t="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(e,e,(s,r)=>{se&&(e=t?r:s)});return e}var mh=(n,e,t)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(t&&!e&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,e)=>Ii(n,t=>{let i=t.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t.head&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=Q(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=t.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),bd=n=>bh(n,!0);var wd=n=>Ii(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headIi(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),kd=n=>Ii(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},Sd=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Kn(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}function xh(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of Kn(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Cd=({state:n,dispatch:e})=>xh(n,e,!1),Ad=({state:n,dispatch:e})=>xh(n,e,!0);function kh(n,e,t){if(n.readOnly)return!1;let i=[];for(let r of Kn(n))t?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return e(n.update({changes:s,selection:n.selection.map(s,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Md=({state:n,dispatch:e})=>kh(n,e,!1),Td=({state:n,dispatch:e})=>kh(n,e,!0),Dd=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(Kn(e).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Od(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=Re(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var Ka=vh(!1),Bd=vh(!0);function vh(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&Od(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new Ot(e,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=yt(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Ed=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new Ot(n,{overrideIndentation:r=>{let o=t[r];return o??-1}}),s=_r(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ti(n,a);(h!=f||l.fromn.readOnly?!1:(e(n.update(_r(n,(t,i)=>{i.push({from:t.from,insert:n.facet(ei)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(_r(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=yt(s,n.tabSize),o=0,l=ti(n,Math.max(0,r-lt(n)));for(;o(n.setTabFocusMode(),!0);var Rd=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:eh,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Qu,shift:fd},{key:"Ctrl-e",run:Zu,shift:cd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:Ur},{key:"Ctrl-k",run:wd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:vd},{key:"Ctrl-t",run:Sd},{key:"Ctrl-v",run:jr}],Pd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Ku,shift:id,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowRight",run:eh,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ju,shift:nd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Xu,shift:hd,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Na,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:qa},{mac:"Ctrl-ArrowDown",run:jr,shift:Fa},{key:"PageUp",run:Na,shift:Ha},{key:"PageDown",run:jr,shift:Fa},{key:"Home",run:Ju,shift:ld,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:_u,shift:od,preventDefault:!0},{key:"Mod-End",run:Va,shift:qa},{key:"Enter",run:Ka,shift:Ka},{key:"Mod-a",run:ud},{key:"Backspace",run:Ur,shift:Ur,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:bd,preventDefault:!0},{mac:"Mod-Backspace",run:xd,preventDefault:!0},{mac:"Mod-Delete",run:kd,preventDefault:!0}].concat(Rd.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:$u,shift:sd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Gu,shift:rd},{key:"Alt-ArrowUp",run:Cd},{key:"Shift-Alt-ArrowUp",run:Md},{key:"Alt-ArrowDown",run:Ad},{key:"Shift-Alt-ArrowDown",run:Td},{key:"Mod-Alt-ArrowUp",run:gd},{key:"Mod-Alt-ArrowDown",run:md},{key:"Escape",run:yd},{key:"Mod-Enter",run:Bd},{key:"Alt-l",mac:"Ctrl-l",run:dd},{key:"Mod-i",run:pd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Ed},{key:"Shift-Mod-k",run:Dd},{key:"Shift-Mod-\\",run:td},{key:"Mod-/",run:Mu},{key:"Alt-A",run:Du},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ld}].concat(Pd),Mh={key:"Tab",run:Sh,shift:Ch};var Id={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Nd={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qe;function jn(n,e){var t=n.next();if(t=='"'||t=="'"||t=="`")return e.tokenize=Hd(t),e.tokenize(n,e);if(/[\d\.]/.test(t))return t=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):t=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(t))return Qe=t,null;if(t=="/"){if(n.eat("*"))return e.tokenize=Dh,Dh(n,e);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(t))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Id.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qe="case"),"keyword"):Nd.propertyIsEnumerable(i)?"atom":"variable"}function Hd(n){return function(e,t){for(var i=!1,s,r=!1;(s=e.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(t.tokenize=jn),"string"}}function Dh(n,e){for(var t=!1,i;i=n.next();){if(i=="/"&&t){e.tokenize=jn;break}t=i=="*"}return"comment"}function Bh(n,e,t,i,s){this.indented=n,this.column=e,this.type=t,this.align=i,this.prev=s}function Jr(n,e,t){return n.context=new Bh(n.indented,e,t,null,n.context)}function Oh(n){if(n.context.prev){var e=n.context.type;return(e==")"||e=="]"||e=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,e){var t=e.context;if(n.sol()&&(t.align==null&&(t.align=!1),e.indented=n.indentation(),e.startOfLine=!0,t.type=="case"&&(t.type="}")),n.eatSpace())return null;Qe=null;var i=(e.tokenize||jn)(n,e);return i=="comment"||(t.align==null&&(t.align=!0),Qe=="{"?Jr(e,n.column(),"}"):Qe=="["?Jr(e,n.column(),"]"):Qe=="("?Jr(e,n.column(),")"):Qe=="case"?t.type="case":(Qe=="}"&&t.type=="}"||Qe==t.type)&&Oh(e),e.startOfLine=!1),i},indent:function(n,e,t){if(n.tokenize!=jn&&n.tokenize!=null)return null;var i=n.context,s=e&&e.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(e))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:t.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,e){let t;if(!e.inString&&(t=n.match(/^('''|"""|'|")/))&&(e.stringType=t[0],e.inString=!0),n.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(n.match(e.stringType))e.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&n.peek()==="]")return n.next(),e.inArray--,"bracket";if(e.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(e.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(e.lhs&&n.peek()==="=")return n.next(),e.lhs=!1,null;if(!e.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(n.match("true")||n.match("false")))return"atom";if(!e.lhs&&n.peek()==="[")return e.inArray++,n.next(),"bracket";if(!e.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Fd="#e5c07b",Rh="#e06c75",Wd="#56b6c2",Vd="#ffffff",Un="#abb2bf",Xr="#7d8799",zd="#61afef",qd="#98c379",Ph="#d19a66",Kd="#c678dd",jd="#21252b",Ih="#2c313a",Nh="#282c34",Yr="#353a42",Ud="#3E4451",Hh="#528bff";var $d=D.theme({"&":{color:Un,backgroundColor:Nh},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Ud},".cm-panels":{backgroundColor:jd,color:Un},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Nh,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Ih},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ih,color:Un}}},{dark:!0}),Gd=Zt.define([{tag:y.keyword,color:Kd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:zd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:Un},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Fd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Wd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:qd},{tag:y.invalid,color:Vd}]),Fh=[$d,Hn(Gd)];var _d=Li.define(Eh),Jd=Li.define(Lh);function Wh(n){return n.endsWith(".toml")?Jd:_d}function Vh(n){return n?Fh:Hn(Ta,{fallback:!0})}function Xp(){return document.documentElement.getAttribute("data-theme")==="dark"}var zh=class{view;langCompartment=new pt;themeCompartment=new pt;constructor(e){let t=[na(),ia(),sa(),ea(),Ga(),Aa(),ei.of(" "),Ea(),this.langCompartment.of(Wh(e.fileName)),this.themeCompartment.of(Vh(e.isDarkMode))];if(e.onRun){let i=e.onRun;t.push(An.of([{key:"Mod-Enter",preventDefault:!0,run:()=>(i(),!0)}]))}t.push(An.of([Mh,...Xa,...Ah])),this.view=new D({parent:e.parent,state:U.create({doc:e.content,extensions:t})})}getCode(){return this.view.state.doc.toString()}setCode(e){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:e}})}setLanguage(e){this.view.dispatch({effects:this.langCompartment.reconfigure(Wh(e))})}changeTheme(e){this.view.dispatch({effects:this.themeCompartment.reconfigure(Vh(e))})}focus(){this.view.focus()}};export{zh as CodeEditor,Xp as isDarkMode}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index 5eec8a25fc6..e0984dcef81 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -1,17 +1,17 @@ -var jn=[],io=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=io[i])t=i+1;else return!0;if(t==e)return!1}}function Zr(n){return n>=127462&&n<=127487}var to=8205;function no(n,t,e=!0,i=!0){return(e?so:qh)(n,t,i)}function so(n,t,e){if(t==n.length)return t;t&&ro(n.charCodeAt(t))&&oo(n.charCodeAt(t-1))&&t--;let i=Un(n,t);for(t+=eo(i);t=0&&Zr(Un(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function qh(n,t,e){for(;t>0;){let i=so(n,t-2,e);if(i=56320&&n<57344}function oo(n){return n>=55296&&n<56320}function eo(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ie(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ie(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=Kh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Jn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(lo(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ie(this,t,e);let s=Vi(this.text,Vi(i.text,lo(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` +var Gn=[],so=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(t=>t?parseInt(t,36):1);for(let t=0,e=0;t>1;if(n=so[i])t=i+1;else return!0;if(t==e)return!1}}function eo(n){return n>=127462&&n<=127487}var io=8205;function ro(n,t,e=!0,i=!0){return(e?oo:Uh)(n,t,i)}function oo(n,t,e){if(t==n.length)return t;t&&lo(n.charCodeAt(t))&&ao(n.charCodeAt(t-1))&&t--;let i=jn(n,t);for(t+=no(i);t=0&&eo(jn(n,o));)r++,o-=2;if(r%2==0)break;t+=2}else break}return t}function Uh(n,t,e){for(;t>0;){let i=oo(n,t-2,e);if(i=56320&&n<57344}function ao(n){return n>=55296&&n<56320}function no(n){return n<65536?1:2}var R=class n{lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position ${t} in document of length ${this.length}`);return this.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number ${t} in ${this.lines}-line document`);return this.lineInner(t,!0,1,0)}replace(t,e,i){[t,e]=Ie(this,t,e);let s=[];return this.decompose(0,t,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(e,this.length,s,1),Re.from(s,this.length-(e-t)+i.length)}append(t){return this.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=Ie(this,t,e);let i=[];return this.decompose(t,e,i,0),Re.from(i,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;let e=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),s=new ue(this),r=new ue(t);for(let o=e,l=e;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(t=1){return new ue(this,t)}iterRange(t,e=this.length){return new zi(this,t,e)}iterLines(t,e){let i;if(t==null)i=this.iter();else{e==null&&(e=this.lines+1);let s=this.line(t).from;i=this.iterRange(s,Math.max(s,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}return new _i(i)}toString(){return this.sliceString(0)}toJSON(){let t=[];return this.flatten(t),t}constructor(){}static of(t){if(t.length==0)throw new RangeError("A document must have at least one line");return t.length==1&&!t[0]?n.empty:t.length<=32?new ct(t):Re.from(ct.split(t,[]))}},ct=class n extends R{constructor(t,e=jh(t)){super(),this.text=t,this.length=e}get lines(){return this.text.length}get children(){return null}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((e?i:l)>=t)return new Yn(s,l,i,o);s=l+1,i++}}decompose(t,e,i,s){let r=t<=0&&e>=this.length?this:new n(ho(this.text,t,e),Math.min(e,this.length)-Math.max(0,t));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(t,e,i){if(!(i instanceof n))return super.replace(t,e,i);[t,e]=Ie(this,t,e);let s=Vi(this.text,Vi(i.text,ho(this.text,0,t)),e),r=this.length+i.length-(e-t);return s.length<=32?new n(s,r):Re.from(n.split(s,[]),r)}sliceString(t,e=this.length,i=` `){[t,e]=Ie(this,t,e);let s="";for(let r=0,o=0;r<=e&&ot&&o&&(s+=i),tr&&(s+=l.slice(Math.max(0,t-r),e-r)),r=a+1}return s}flatten(t){for(let e of this.text)t.push(e)}scanIdentical(){return 0}static split(t,e){let i=[],s=-1;for(let r of t)i.push(r),s+=r.length+1,i.length==32&&(e.push(new n(i,s)),i=[],s=-1);return s>-1&&e.push(new n(i,s)),e}},Re=class n extends R{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(let i of t)this.lines+=i.lines}lineInner(t,e,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((e?a:l)>=t)return o.lineInner(t,e,i,s);s=l+1,i=a+1}}decompose(t,e,i,s){for(let r=0,o=0;o<=e&&r=o){let h=s&((o<=t?1:0)|(a>=e?2:0));o>=t&&a<=e&&!h?i.push(l):l.decompose(t-o,e-o,i,h)}o=a+1}}replace(t,e,i){if([t,e]=Ie(this,t,e),i.lines=r&&e<=l){let a=o.replace(t-r,e-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(e-t)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(t,e,i)}sliceString(t,e=this.length,i=` -`){[t,e]=Ie(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function Kh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` -`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Jn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ie(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return no(n,t,e,i)}function $h(n){return n>=56320&&n<57344}function Uh(n){return n>=55296&&n<56320}function uo(n,t){let e=n.charCodeAt(t);if(!Uh(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return $h(i)?(e-55296<<10)+(i-56320)+65536:e}function po(n){return n<65536?1:2}var Yn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Xn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Qn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Yn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Qn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function mo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var as=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=as++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:hs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function hs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=as++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Zn(c,f)){let d=i(c);if(l?!ao(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?ao(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function ao(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Gh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,hs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>jh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Gh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var yo=M.define(),ts=M.define({combine:n=>n.some(t=>t),static:!0}),bo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),wo=M.define(),xo=M.define(),vo=M.define(),ko=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new es}},es=class{of(t){return new mt(this,t)}},is=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new is(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&mo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Jh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Co(t,Ne(r),!1)}return n}function Xh(n){let t=n.startState,e=t.facet(vo),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=So(i,ns(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var Qh=[];function Ne(n){return n==null?Qh:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),Zh=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,ss;try{ss=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function tf(n){if(ss)return ss.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Zh.test(e)))return!0}return!1}function ef(n){return t=>{if(!/\S/.test(t))return St.Space;if(tf(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ne(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(ts)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ne(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Yn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return mo(s,i.length),e.staticFacet(ts)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` -`}get readOnly(){return this.facet(ko)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(yo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return ef(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=bo;$.readOnly=ko;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=yo;$.changeFilter=wo;$.transactionFilter=xo;$.transactionExtender=vo;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function fs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function rs(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var os=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(rs)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=ho(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>fo(h,c,f,u,d,s)),i.empty&&i.length==0&&fo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=ho(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!ls(a.active,h.active)||a.point&&(!h.point||!fs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?nf(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function nf(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(rs);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new os(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function ho(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Gn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Gn(this.heap,0)}}};function Gn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=co(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=co(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function fo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&fs(n.point,e.point)&&ls(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!ls(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function ls(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function co(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var cs="\u037C",Mo=typeof Symbol>"u"?"__"+cs:Symbol.for(cs),us=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),To=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let t=To[Mo]||1;return To[Mo]=t+1,cs+t.toString(36)}static mount(t,e,i){let s=t[us],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ds(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Do=new Map,ds=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Do.get(i);if(r)return t[us]=r;this.sheet=new s.CSSStyleSheet,Do.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[us]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},sf=typeof navigator<"u"&&/Mac/.test(navigator.platform),rf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Oo(n){var t=sf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||rf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},xs=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(rt.userAgent),ll=/MSIE \d/.test(rt.userAgent),ks=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(ll||ks||vs),Bo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),ps=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Eo="webkitFontSmoothing"in xs.documentElement.style,Ss=!kn&&/Apple Computer/.test(rt.vendor),Lo=Ss&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Lo||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:ll?xs.documentMode||6:ks?+ks[1]:vs?+vs[1]:0,gecko:Bo,gecko_version:Bo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!ps,chrome_version:ps?+ps[1]:0,ios:Lo,android:/Android\b/.test(rt.userAgent),webkit:Eo,webkit_version:Eo?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Ss,safari_version:Ss?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:xs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function hr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function fr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function of(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function Ro(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function lf(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=al(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=al(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?hr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&fr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&fr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&af(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function al(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function af(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&fr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function Cs(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return Cs(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Po(n,t,e,i,-1)||Po(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Po(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function hf(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function hl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function ff(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=hf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=hl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function fl(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var As=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function cl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function dl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function pl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function yl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function bf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ts(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Ds(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ts(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Ds(n,s,s,e,0,n.length,i),i}function bl(n){return[new xt(0,n,0)]}var wl="";function xf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),wl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Tl=M.define({combine:n=>n.some(t=>t)}),Dl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),Ol=U.define();function Mt(n,t,e){let i=n.facet(Sl);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),kf=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Bl=M.define(),pr=M.define(),Sn=M.define(),El=M.define(),gr=M.define(),ki=M.define(),Ll=M.define();function Io(n,t){let e=n.state.facet(Ll);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=vf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Rl=M.define();function Pl(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Rl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Sf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Sf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&of(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Ho(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Ho(s);this.length=o}};function Ho(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Af(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(gs(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(gs(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Nl);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Fo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Fo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ms,0,32)||new Ce(ms.toDOM(),0,ms,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Es(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Rs=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Mf(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Tf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Nl):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:lf(s)}),s)))}return{line:i,marks:e}}};function Fo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Mf(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Nl={class:"cm-line"};function Tf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&hr(e,n),i&&(n.class+=" "+i)),n}function Df(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function gs(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ms=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!If(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Bf(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=Rf(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Pf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Ns(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Is(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Of(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Nf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Ef(h.node,h.offset);if(d&&d!=3){let p=(d==1?dl:pl)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(gr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Dl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Pl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(ff(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Is(this.tile)}};function Is(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Is(i,t)}}function Of(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Il(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=dl(e.focusNode,e.focusOffset),s=pl(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Bf(n,t,e){let i=Il(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Ef(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Hf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+Ao(o,r,n.state.tabSize)}function Fs(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function Wf(n,t,e,i){let s=Fs(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function Wo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=xf(s,r,o,l,e),f=wl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` -`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function Vf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function zf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Ws(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=Ff(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new Vs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var Vs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",zs=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!qf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+(_f(t,i.node,i.offset)?e:0))}};function _f(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Fl(t.docView.tile,e,i,0))){let a=r||o?[]:$f(t),h=new zs(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Uf(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!Cs(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Cs(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Fl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Fl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Wl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=Vl(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` - `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return mr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Hl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function mr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kf(n,t,e));return n.state.facet(Cl).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function Kf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Il(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function Vl(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function $f(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function Uf(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var qs=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&oc(t.contentDOM.ownerDocument)}handleEvent(t){!Zf(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=jf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&_l.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=zl.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Gf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function Vo(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function jf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(Vo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(Vo(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var zl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Gf="dthko",_l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Jf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var Ks=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=fl(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Yf(t,e),this.dragging=Qf(t,e)&&$l(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Jf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Pl(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Hl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Yf(n,t){let e=n.state.facet(xl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function Xf(n,t){let e=n.state.facet(vl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function Qf(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function Zf(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),ql=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function tc(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Kl(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Kl(n,t){t=Cn(n.state,ur,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if($s!=null&&e.selection.ranges.every(a=>a.empty)&&$s==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(kl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=ic(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new Ks(n,t,e,i)),i&&n.observer.ignore(()=>{cl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function zo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Hf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?(qo+1)%3:1}function ic(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=$l(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=zo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=zo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=nc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function nc(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,dr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function $o(n,t,e,i){if(e=Cn(n.state,ur,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Xf(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&$o(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return $o(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=ql?null:t.clipboardData;return e?(Kl(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(tc(n),!1)};function sc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function rc(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,dr,t.join(n.lineBreak)),ranges:e,linewise:i}}var $s=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=rc(n.state);if(!e&&!s)return!1;$s=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=ql?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(sc(n,e),!1)};var Ul=mt.define();function jl(n,t){let e=[];for(let i of n.facet(Al)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Ul.of(!0)}):null}function Gl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Gl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Gl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return mr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=zl.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Uo=new Set;function oc(n){Uo.has(n)||(Uo.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Go(){Je=!1}var Us=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Gs=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Jo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Jo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var ac=5,Js=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=ac)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function cc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function uc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new Us(i),this.stateDeco=Xo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yo:new Qs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Xo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,hc(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Go(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Tl)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=hl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=fl(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=ul(this.scrollParent||t.win);let g=(this.printing?uc:fc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!cc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:N}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,N,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Go();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new js(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function dc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function pc(n,t){for(let e of n)if(t(e))return e}var Yo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Xo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(gr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Qs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),Zs=M.define({combine:n=>n.indexOf(!0)>-1}),tr=yt.newName(),Jl=yt.newName(),Yl=yt.newName(),Xl={"&light":"."+Jl,"&dark":"."+Yl};function er(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var gc=er("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Xl),mc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},bs=S.ie&&S.ie_version<=11,ir=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new As,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new nr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),bs&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&yc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new _s(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=Wl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=Qo(e,t.previousSibling||t.target.previousSibling,-1),s=Qo(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function Qo(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function Zo(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function yc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return Zo(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?Zo(n,e):null}var nr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=Vl(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` -`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);mr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||cf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new ir(this),this.inputState=new qs(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Ul))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Os))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!Wl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(ul(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),tl}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Os))l(e)}get themeClasses(){return tr+" "+(this.state.facet(Zs)?Yl:Jl)+" "+this.state.facet(Zi)}updateAttrs(){let t=el(this,Bl,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),el(this,pr,e);let i=this.observer.ignore(()=>{let s=Ro(this.contentDOM,this.contentAttrs,e),r=Ro(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(gc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return ys(this,t,Wo(this,t,e,i))}moveByGroup(t,e){return ys(this,t,Wo(this,t,e,i=>Vf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return Wf(this,t,e,i)}moveVertically(t,e,i){return ys(this,t,zf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Ws(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Ws(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Ml)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>bc)return bl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||yl(r.isolates,i=Io(this,t))))return r.order;i||(i=Io(this,t));let s=wf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{cl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(er(`.${i}`,t))];return e&&e.dark&&s.push(Zs.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(er("."+tr,t,Xl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Cl;D.clipboardInputFilter=ur;D.clipboardOutputFilter=dr;D.scrollHandler=Dl;D.focusChangeEffect=Al;D.perLineTextDirection=Ml;D.exceptionSink=Sl;D.updateListener=Os;D.editable=Jt;D.mouseSelectionStyle=kl;D.dragMovesSelection=vl;D.clickAddsSelectionRange=xl;D.decorations=Sn;D.blockWrappers=El;D.outerDecorations=gr;D.atomicRanges=ki;D.bidiIsolatedRanges=Ll;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Rl;D.darkTheme=Zs;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=pr;D.editorAttributes=Bl;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var bc=4096,tl={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&hr(o,e)}return e}var wc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function xc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Sc=4e3;function Cc(n,t=wc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>xc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Sc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,sr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var sr=null;function Ac(n,t,e,i){sr=t;let s=Oo(t),r=uo(s,0),o=po(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",_l.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),sr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Ql(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Mc(t,e,i)}};function Ql(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function nl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Ql(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Fs(n,i,1),p=Fs(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=nl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=nl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Tc(n,t){return n.constructor==t.constructor&&n.eq(t)}var rr=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Tc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function Zl(n){return[Dt.define(t=>new rr(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ta(n={}){return[Ye.of(n),Dc,Oc,Bc,Tl.of(!0)]}function ea(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Dc=Zl({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=ea(n);return e&&sl(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){sl(t.state,n)},class:"cm-cursorLayer"});function sl(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Oc=Zl({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||ea(n)},class:"cm-selectionLayer"}),Bc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var dp=/x/.unicode!=null?"gu":"g";function ia(){return Lc}var Ec=z.line({class:"cm-activeLine"}),Lc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Ec.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var pp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Rc=M.define();var on=M.define();var or=M.define({combine:n=>n.some(t=>t)});function Pc(n){let t=[Nc];return n&&n.fixed===!1&&t.push(or.of(!0)),t}var Nc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(or);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(or)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new ar(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){lr(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){lr(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function rl(n){return Array.isArray(n)?n:[n]}function lr(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var ar=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];lr(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Rc)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=rl(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=rl(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Ic(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function ws(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var Wc=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Hc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(ws(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(Fc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(ws(t,ol(t.state.doc.lines)))},updateSpacer(t,e){let i=ws(e.view,ol(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function na(n={}){return[_e.of(n),Pc(),Wc]}function ol(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(Vc.range(s)))}return F.of(t)});function sa(){return zc}var _c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=_c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},qc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):qc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Sr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return $c(t)}};G.empty=new G(ot.none,[],[],0);var yr=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!aa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new wr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||kr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function oa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function br(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var wr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ha(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ha(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||kr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return br(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function kr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||kr(t))}function $c(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new yr(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:O,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(O-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,O,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let Qr=d(ft,nt);Ht=Sr(ft,gt,Ft,0,gt.length,0,H-O,Qr,Qr)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)O[_++]=L[I],O[_++]=L[I+1]-H,O[_++]=L[I+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=N[E]+O.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,O,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){O.size=N,O.start=L,O.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(O.size=N,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var la=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=la.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}la.set(t,e)}return e}function Sr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Sr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var xp=new B({perNode:!0});var Uc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Uc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},jc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=jc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Gc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Jc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Gc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Jc(n){let t=[[]];for(let e=0;ei.length-e.length)}function ua(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return da.add(t)}var da=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Yc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function pa(n,t,e,i=0,s=n.length){let r=new Ar(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Ar=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Xc(t)||De.empty,c=Yc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function Xc(n){let t=n.type.prop(da);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),fa=x(re),ca=x(re),oe=x(),En=x(oe),Cr=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Mr=x(),Di=x(Mr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:fa,tagName:x(fa),propertyName:ca,attributeName:x(ca),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Cr,integer:x(Cr),float:x(Cr),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Mr,separator:x(Mr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var Sp=Tr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Dr,Xe=new B;function Qc(n){return M.define({combine:n?t=>t.concat(n):void 0})}var Zc=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(Zc);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ga(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Lr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ma(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ma(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ma(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var ka=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(ka=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Or=typeof navigator<"u"&&(!((Dr=navigator.scheduling)===null||Dr===void 0)&&Dr.isInputPending)?()=>navigator.scheduling.isInputPending():null,tu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=ka(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Or&&Or()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,tu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var eu=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?iu(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Sa=new B;function iu(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ca(i,n,e)}function Ca(n,t,e){for(let i=n;i;i=i.next){let s=su(i.node);if(s)return s(Rr.create(t,e,i))}return 0}function nu(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function su(n){let t=n.type.prop(Sa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>au(o,!0,1,void 0,r&&!nu(o)?s.from:void 0)}return n.parent==null?ru:null}function ru(){return 0}var Rr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ou(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ca(this.context.next,this.base,this.pos)}};function ou(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function lu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function au(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?lu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var hu=200;function Aa(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+hu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Tr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Pr=M.define(),Ma=M.define({combine(n){return n.length?[n[0]]:null}});function Br(n){let t=n.facet(Pr);return t.length?t:n.facet(Ma)}function Hn(n,t){let e=[fu],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Ma.of(n)):i?e.push(Pr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Pr.of(n)),e}var Nr=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Br(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Br(t.state),s=i!=Br(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)pa(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},fu=He.high(Dt.fromClass(Nr,{decorations:n=>n.decorations})),Ta=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),cu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Da=1e4,Oa="()[]{}",Ba=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Oa,maxScanDistance:Da,renderMatch:pu})}}),uu=z.mark({class:"cm-matchingBracket"}),du=z.mark({class:"cm-nonmatchingBracket"});function pu(n){let t=[],e=n.matched?uu:du;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function ya(n){let t=[],e=n.facet(Ba);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),mu=[gu,cu];function Ea(n={}){return[Ba.of(n),mu]}var yu=new B;function Ir(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Hr(n){let t=n.type.prop(yu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Da,r=i.brackets||Oa,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Ir(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return bu(n,t,e,a,f,h,r)}}return wu(n,t,e,o,l.type,s,r)}function bu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function ba(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function xu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||vu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Vr,mergeTokens:n.mergeTokens!==!1}}function vu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var wa=new WeakMap,Li=class n extends dt{constructor(t){let e=Qc(t.languageData),i=xu(t),s,r=new class extends Ti{createParse(o,l,a){return new Fr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Au(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Cu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=wa.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Wr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=La(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Fr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=ku(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` +`){[t,e]=Ie(this,t,e);let s="";for(let r=0,o=0;rt&&r&&(s+=i),to&&(s+=l.sliceString(t-o,e-o,i)),o=a+1}return s}flatten(t){for(let e of this.children)e.flatten(t)}scanIdentical(t,e){if(!(t instanceof n))return 0;let i=0,[s,r,o,l]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;s+=e,r+=e){if(s==o||r==l)return i;let a=this.children[s],h=t.children[r];if(a!=h)return i+a.scanIdentical(h,e);i+=a.length+1}}static from(t,e=t.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of t)i+=d.lines;if(i<32){let d=[];for(let p of t)p.flatten(d);return new ct(d,e)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ct&&a&&(p=f[f.length-1])instanceof ct&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ct(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of t)c(d);return u(),l.length==1?l[0]:new n(l,e)}};R.empty=new ct([""],0);function jh(n){let t=-1;for(let e of n)t+=e.length+1;return t}function Vi(n,t,e=0,i=1e9){for(let s=0,r=0,o=!0;r=e&&(a>i&&(l=l.slice(0,i-s)),s0?1:(t instanceof ct?t.text.length:t.children.length)<<1]}nextInner(t,e){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ct?s.text.length:s.children.length;if(o==(e>0?l:0)){if(i==0)return this.done=!0,this.value="",this;e>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(e>0?0:1)){if(this.offsets[i]+=e,t==0)return this.lineBreak=!0,this.value=` +`,this;t--}else if(s instanceof ct){let a=s.text[o+(e<0?-1:0)];if(this.offsets[i]+=e,a.length>Math.max(0,t))return this.value=t==0?a:e>0?a.slice(t):a.slice(0,a.length-t),this;t-=a.length}else{let a=s.children[o+(e<0?-1:0)];t>a.length?(t-=a.length,this.offsets[i]+=e):(e<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(e>0?1:(a instanceof ct?a.text.length:a.children.length)<<1))}}}next(t=0){return t<0&&(this.nextInner(-t,-this.dir),t=this.value.length),this.nextInner(t,this.dir)}},zi=class{constructor(t,e,i){this.value="",this.done=!1,this.cursor=new ue(t,e>i?-1:1),this.pos=e>i?t.length:0,this.from=Math.min(e,i),this.to=Math.max(e,i)}nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;t+=Math.max(0,e<0?this.pos-this.to:this.from-this.pos);let i=e<0?this.pos-this.from:this.to-this.pos;t>i&&(t=i),i-=t;let{value:s}=this.cursor.next(t);return this.pos+=(s.length+t)*e,this.value=s.length<=i?s:e<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min(t,this.to-this.pos)),this.nextInner(t,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},_i=class{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done=!1}next(t=0){let{done:e,lineBreak:i,value:s}=this.inner.next(t);return e&&this.afterBreak?(this.value="",this.afterBreak=!1):e?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ue.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=_i.prototype[Symbol.iterator]=function(){return this});var Yn=class{constructor(t,e,i,s){this.from=t,this.to=e,this.number=i,this.text=s}get length(){return this.to-this.from}};function Ie(n,t,e){return t=Math.max(0,Math.min(n.length,t)),[t,Math.max(t,Math.min(n.length,e))]}function Q(n,t,e=!0,i=!0){return ro(n,t,e,i)}function Gh(n){return n>=56320&&n<57344}function Jh(n){return n>=55296&&n<56320}function go(n,t){let e=n.charCodeAt(t);if(!Jh(e)||t+1==n.length)return e;let i=n.charCodeAt(t+1);return Gh(i)?(e-55296<<10)+(i-56320)+65536:e}function mo(n){return n<65536?1:2}var Xn=/\r\n?|\n/,lt=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(lt||(lt={})),jt=class n{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;et)return r+(t-s);r+=l}else{if(i!=lt.Simple&&h>=t&&(i==lt.TrackDel&&st||i==lt.TrackBefore&&st))return null;if(h>t||h==t&&e<0&&!l)return t==s||e<0?r:r+a;r+=a}s=h}if(t>s)throw new RangeError(`Position ${t} is out of range for changeset of length ${s}`);return r}touchesRange(t,e=t){for(let i=0,s=0;i=0&&s<=e&&l>=t)return se?"cover":!0;s=l}return!1}toString(){let t="";for(let e=0;e=0?":"+s:"")}return t}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(t)}static create(t){return new n(t)}},st=class n extends jt{constructor(t,e){super(t),this.inserted=e}apply(t){if(this.length!=t.length)throw new RangeError("Applying change set to a document with the wrong length");return Qn(this,(e,i,s,r,o)=>t=t.replace(s,s+(i-e),o),!1),t}mapDesc(t,e=!1){return Zn(this,t,e,!0)}invert(t){let e=this.sections.slice(),i=[];for(let s=0,r=0;s=0){e[s]=l,e[s+1]=o;let a=s>>1;for(;i.length0&&Zt(i,e,r.text),r.forward(f),l+=f}let h=t[o++];for(;l>1].toJSON()))}return t}static of(t,e,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>e)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${e})`);let p=d?typeof d=="string"?R.of(d.split(i||Xn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&et(s,c-o,-1),et(s,u-c,g),Zt(r,s,p),o=u}}return h(t),a(!l),l}static empty(t){return new n(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError("Invalid JSON representation of ChangeSet");let e=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)e.push(r[0],0);else{for(;i.length=0&&e<=0&&e==n[s+1]?n[s]+=t:s>=0&&t==0&&n[s]==0?n[s+1]+=e:i?(n[s]+=t,n[s+1]+=e):n.push(t,e)}function Zt(n,t,e){if(e.length==0)return;let i=t.length-2>>1;if(i>1])),!(e||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];t(s,h,r,f,c),s=h,r=f}}}function Zn(n,t,e,i=!1){let s=[],r=i?[]:null,o=new de(n),l=new de(t);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);et(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var de=class{constructor(t){this.set=t,this.i=0,this.next()}next(){let{sections:t}=this.set;this.i>1;return e>=t.length?R.empty:t[e]}textBit(t){let{inserted:e}=this.set,i=this.i-2>>1;return i>=e.length&&!t?R.empty:e[i].slice(this.off,t==null?void 0:this.off+t)}forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)}forward2(t){this.ins==-1?this.forward(t):t==this.ins?this.next():(this.ins-=t,this.off+=t)}},Le=class n{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let t=this.flags&7;return t==7?null:t}get goalColumn(){let t=this.flags>>6;return t==16777215?void 0:t}map(t,e=-1){let i,s;return this.empty?i=s=t.mapPos(this.from,e):(i=t.mapPos(this.from,1),s=t.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(t,e=t,i=0){if(t<=this.anchor&&e>=this.anchor)return w.range(t,e,void 0,void 0,i);let s=Math.abs(t-this.anchor)>Math.abs(e-this.anchor)?t:e;return w.range(this.anchor,s,void 0,void 0,i)}eq(t,e=!1){return this.anchor==t.anchor&&this.head==t.head&&this.goalColumn==t.goalColumn&&(!e||!this.empty||this.assoc==t.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(t){if(!t||typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(t.anchor,t.head)}static create(t,e,i){return new n(t,e,i)}},w=class n{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){return t.empty?this:n.create(this.ranges.map(i=>i.map(t,e)),this.mainIndex)}eq(t,e=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let i=0;it.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!="number"||t.main>=t.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(t.ranges.map(e=>Le.fromJSON(e)),t.main)}static single(t,e=t){return new n([n.range(t,e)],0)}static create(t,e=0){if(t.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),e=t.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(t,e)}};function bo(n,t){for(let e of n.ranges)if(e.to>t)throw new RangeError("Selection points outside of document")}var hs=0,M=class n{constructor(t,e,i,s,r){this.combine=t,this.compareInput=e,this.compare=i,this.isStatic=s,this.id=hs++,this.default=t([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(t={}){return new n(t.combine||(e=>e),t.compareInput||((e,i)=>e===i),t.compare||(t.combine?(e,i)=>e===i:fs),!!t.static,t.enables)}of(t){return new Pe([],this,0,t)}compute(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,1,e)}computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pe(t,this,2,e)}from(t,e){return e||(e=i=>i),this.compute([t],i=>e(i.field(t)))}};function fs(n,t){return n==t||n.length==t.length&&n.every((e,i)=>e===t[i])}var Pe=class{constructor(t,e,i,s){this.dependencies=t,this.facet=e,this.type=i,this.value=s,this.id=hs++}dynamicSlot(t){var e;let i=this.value,s=this.facet.compareInput,r=this.id,o=t[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((e=t[c.id])!==null&&e!==void 0?e:1)&1)==0&&f.push(t[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||ts(c,f)){let d=i(c);if(l?!fo(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=$i(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ct?u.field(m,!1)==c.field(m,!1):!0)||(l?fo(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function fo(n,t,e){if(n.length!=t.length)return!1;for(let i=0;in[a.id]),s=e.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[t.id]>>1;function l(a){let h=[];for(let f=0;fi===s),t);return t.provide&&(e.provides=t.provide(e)),e}create(t){let e=t.facet(Hi).find(i=>i.field==this);return(e?.create||this.createF)(t)}slot(t){let e=t[this.id]>>1;return{create:i=>(i.values[e]=this.create(i),1),update:(i,s)=>{let r=i.values[e],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[e]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[e]=l.create(i),1):s.config.address[this.id]!=null?(i.values[e]=s.field(this),0):(i.values[e]=this.create(i),1)}}}init(t){return[this,Hi.of({field:this,create:t})]}get extension(){return this}},fe={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return t=>new qi(t,n)}var He={highest:ni(fe.highest),high:ni(fe.high),default:ni(fe.default),low:ni(fe.low),lowest:ni(fe.lowest)},qi=class{constructor(t,e){this.inner=t,this.prec=e}},pe=class n{of(t){return new ri(this,t)}reconfigure(t){return n.reconfigure.of({compartment:this,extension:t})}get(t){return t.config.compartments.get(this)}},ri=class{constructor(t,e){this.compartment=t,this.inner=e}},Ki=class n{constructor(t,e,i,s,r,o){for(this.base=t,this.compartments=e,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,e,i){let s=[],r=Object.create(null),o=new Map;for(let u of Xh(t,e,o))u instanceof Ct?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,fs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Yh(m,p,d))}}let c=h.map(u=>u(l));return new n(t,o,c,l,a,r)}};function Xh(n,t,e){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&e.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(e.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=t.get(o.compartment)||o.inner;e.set(o.compartment,h),r(h,l)}else if(o instanceof qi)r(o.inner,o.prec);else if(o instanceof Ct)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pe)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,fe.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,fe.default),i.reduce((o,l)=>o.concat(l))}function si(n,t){if(t&1)return 2;let e=t>>1,i=n.status[e];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[e]=4;let s=n.computeSlot(n,n.config.dynamicSlots[e]);return n.status[e]=2|s}function $i(n,t){return t&1?n.config.staticValues[t>>1]:n.values[t>>1]}var wo=M.define(),es=M.define({combine:n=>n.some(t=>t),static:!0}),xo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),vo=M.define(),ko=M.define(),So=M.define(),Co=M.define({combine:n=>n.length?n[0]:!1}),mt=class{constructor(t,e){this.type=t,this.value=e}static define(){return new is}},is=class{of(t){return new mt(this,t)}},ns=class{constructor(t){this.map=t}of(t){return new U(this,t)}},U=class n{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.type.map(this.value,t);return e===void 0?void 0:e==this.value?this:new n(this.type,e)}is(t){return this.type==t}static define(t={}){return new ns(t.map||(e=>e))}static mapEffects(t,e){if(!t.length)return t;let i=[];for(let s of t){let r=s.map(e);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(t,e,i,s,r,o){this.startState=t,this.changes=e,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&bo(i,e.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(t,e,i,s,r,o){return new n(t,e,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(t){for(let e of this.annotations)if(e.type==t)return e.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let e=this.annotation(n.userEvent);return!!(e&&(e==t||e.length>t.length&&e.slice(0,t.length)==t&&e[t.length]=="."))}};X.time=mt.define();X.userEvent=mt.define();X.addToHistory=mt.define();X.remote=mt.define();function Qh(n,t){let e=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Mo(t,Ne(r),!1)}return n}function tf(n){let t=n.startState,e=t.facet(So),i=n;for(let s=e.length-1;s>=0;s--){let r=e[s](n);r&&Object.keys(r).length&&(i=Ao(i,ss(t,r,n.changes.newLength),!0))}return i==n?n:X.create(t,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var ef=[];function Ne(n){return n==null?ef:Array.isArray(n)?n:[n]}var St=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(St||(St={})),nf=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,rs;try{rs=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function sf(n){if(rs)return rs.test(n);for(let t=0;t"\x80"&&(e.toUpperCase()!=e.toLowerCase()||nf.test(e)))return!0}return!1}function rf(n){return t=>{if(!/\S/.test(t))return St.Space;if(sf(t))return St.Word;for(let e=0;e-1)return St.Word;return St.Other}}var $=class n{constructor(t,e,i,s,r,o){this.config=t,this.doc=e,this.selection=i,this.values=s,this.status=t.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),e=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(e=null,i=l.value):l.is(U.appendConfig)&&(e=null,i=Ne(i).concat(l.value));let r;e?r=t.startState.values.slice():(e=Ki.resolve(i,s,this),r=new n(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=t.startState.facet(es)?t.newSelection:t.newSelection.asSingle();new n(e,t.newDoc,o,r,(l,a)=>a.update(l,t),t)}replaceSelection(t){return typeof t=="string"&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:w.cursor(e.from+t.length)}))}changeByRange(t){let e=this.selection,i=t(e.ranges[0]),s=this.changes(i.changes),r=[i.range],o=Ne(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:t.doc,selection:w.fromJSON(t.selection),extensions:e.extensions?s.concat([e.extensions]):s})}static create(t={}){let e=Ki.resolve(t.extensions||[],new Map),i=t.doc instanceof R?t.doc:R.of((t.doc||"").split(e.staticFacet(n.lineSeparator)||Xn)),s=t.selection?t.selection instanceof w?t.selection:w.single(t.selection.anchor,t.selection.head):w.single(0);return bo(s,i.length),e.staticFacet(es)||(s=s.asSingle()),new n(e,i,s,e.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(Co)}phrase(t,...e){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,t)){t=i[t];break}return e.length&&(t=t.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>e.length?i:e[r-1]})),t}languageDataAt(t,e,i=-1){let s=[];for(let r of this.facet(wo))for(let o of r(this,e,i))Object.prototype.hasOwnProperty.call(o,t)&&s.push(o[t]);return s}charCategorizer(t){let e=this.languageDataAt("wordChars",t);return rf(e.length?e[0]:"")}wordAt(t){let{text:e,from:i,length:s}=this.doc.lineAt(t),r=this.charCategorizer(t),o=t-i,l=t-i;for(;o>0;){let a=Q(e,o,!1);if(r(e.slice(a,o))!=St.Word)break;o=a}for(;ln.length?n[0]:4});$.lineSeparator=xo;$.readOnly=Co;$.phrases=M.define({compare(n,t){let e=Object.keys(n),i=Object.keys(t);return e.length==i.length&&e.every(s=>n[s]==t[s])}});$.languageData=wo;$.changeFilter=vo;$.transactionFilter=ko;$.transactionExtender=So;pe.reconfigure=U.define();function me(n,t,e={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(e,r))i[r]=e[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in t)i[s]===void 0&&(i[s]=t[s]);return i}var Wt=class{eq(t){return this==t}range(t,e=t){return oi.create(t,e,this)}};Wt.prototype.startSide=Wt.prototype.endSide=0;Wt.prototype.point=!1;Wt.prototype.mapMode=lt.TrackDel;function cs(n,t){return n==t||n.constructor==t.constructor&&n.eq(t)}var oi=class n{constructor(t,e,i){this.from=t,this.to=e,this.value=i}static create(t,e,i){return new n(t,e,i)}};function os(n,t){return n.from-t.from||n.value.startSide-t.value.startSide}var ls=class n{constructor(t,e,i,s){this.from=t,this.to=e,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(t,e,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-t||(i?this.value[a].endSide:this.value[a].startSide)-e;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(t,e,i,s){for(let r=this.findIndex(e,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(t,e,i,s){this.chunkPos=t,this.chunk=e,this.nextLayer=i,this.maxPoint=s}static create(t,e,i,s){return new n(t,e,i,s)}get length(){let t=this.chunk.length-1;return t<0?0:Math.max(this.chunkEnd(t),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let t=this.nextLayer.size;for(let e of this.chunk)t+=e.value.length;return t}chunkEnd(t){return this.chunkPos[t]+this.chunk[t].length}update(t){let{add:e=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=t,o=t.filter;if(e.length==0&&!o)return this;if(i&&(e=e.slice().sort(os)),this.isEmpty)return e.length?n.of(e):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new ge;for(;l.value||a=0){let c=e[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&t<=r+o.length&&o.between(r,t-r,e-r,i)===!1)return}this.nextLayer.between(t,e,i)}}iter(t=0){return li.from([this]).goto(t)}get isEmpty(){return this.nextLayer==this}static iter(t,e=0){return li.from(t).goto(e)}static compare(t,e,i,s,r=-1){let o=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=co(o,l,i),h=new ce(o,a,r),f=new ce(l,a,r);i.iterGaps((c,u,d)=>uo(h,c,f,u,d,s)),i.empty&&i.length==0&&uo(h,0,f,0,0,s)}static eq(t,e,i=0,s){s==null&&(s=999999999);let r=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0),o=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=co(r,o),a=new ce(r,l,0).goto(i),h=new ce(o,l,0).goto(i);for(;;){if(a.to!=h.to||!as(a.active,h.active)||a.point&&(!h.point||!cs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(t,e,i,s,r=-1){let o=new ce(t,null,r).goto(e),l=e,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(t,e=!1){let i=new ge;for(let s of t instanceof oi?[t]:e?of(t):t)i.add(s.from,s.to,s.value);return i.finish()}static join(t){if(!t.length)return n.empty;let e=t[t.length-1];for(let i=t.length-2;i>=0;i--)for(let s=t[i];s!=n.empty;s=s.nextLayer)e=new n(s.chunkPos,s.chunk,e,Math.max(s.maxPoint,e.maxPoint));return e}};F.empty=new F([],[],null,-1);function of(n){if(n.length>1)for(let t=n[0],e=1;e0)return n.slice().sort(os);t=i}return n}F.empty.nextLayer=F.empty;var ge=class n{finishChunk(t){this.chunks.push(new ls(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,t&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new n)).add(t,e,i)}addInner(t,e,i){let s=t-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(t-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=t),this.from.push(t-this.chunkStart),this.to.push(e-this.chunkStart),this.last=i,this.lastFrom=t,this.lastTo=e,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,e-t)),!0)}addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,e.maxPoint),this.chunks.push(e),this.chunkPos.push(t);let i=e.value.length-1;return this.last=e.value[i],this.lastFrom=e.from[i]+t,this.lastTo=e.to[i]+t,!0}finish(){return this.finishInner(F.empty)}finishInner(t){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return t;let e=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(t):t,this.setMaxPoint);return this.from=null,e}};function co(n,t,e){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(t){if(t==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,e,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(t,e=-1e9){for(let i of this.heap)i.goto(t,e);for(let i=this.heap.length>>1;i>=0;i--)Jn(this.heap,i);return this.next(),this}forward(t,e){for(let i of this.heap)i.forward(t,e);for(let i=this.heap.length>>1;i>=0;i--)Jn(this.heap,i);(this.to-t||this.value.endSide-e)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let t=this.heap[0];this.from=t.from,this.to=t.to,this.value=t.value,this.rank=t.rank,t.value&&t.next(),Jn(this.heap,0)}}};function Jn(n,t){for(let e=n[t];;){let i=(t<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),e.compare(s)<0)break;n[i]=e,n[t]=s,t=i}}var ce=class{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(t,e,i)}goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=t,this.endSide=e,this.openStart=-1,this.next(),this}forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t||this.active[this.minActive].endSide-e)<0;)this.removeActive(this.minActive);this.cursor.forward(t,e)}removeActive(t){Fi(this.active,t),Fi(this.activeTo,t),Fi(this.activeRank,t),this.minActive=po(this.active,this.activeTo)}addActive(t){let e=0,{value:i,to:s,rank:r}=this.cursor;for(;e0;)e++;Wi(this.active,e,i),Wi(this.activeTo,e,s),Wi(this.activeRank,e,r),t&&Wi(t,e,this.cursor.from),this.minActive=po(this.active,this.activeTo)}next(){let t=this.to,e=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>t){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(e&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]t||this.activeTo[i]==t&&this.active[i].endSide>=this.point.endSide)&&e.push(this.active[i]);return e.reverse()}openEnd(t){let e=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>t;i--)e++;return e}};function uo(n,t,e,i,s,r){n.goto(t),e.goto(i);let o=i+s,l=i,a=i-t,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-e.to,u=c||n.endSide-e.endSide,d=u<0?n.to+a:e.to,p=Math.min(d,o);if(n.point||e.point?(n.point&&e.point&&cs(n.point,e.point)&&as(n.activeForPoint(n.to),e.activeForPoint(e.to))||r.comparePoint(l,p,n.point,e.point),f=!1):(f&&r.boundChange(l),p>l&&!as(n.active,e.active)&&r.compareRange(l,p,n.active,e.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&e.next()}}function as(n,t){if(n.length!=t.length)return!1;for(let e=0;e=t;i--)n[i+1]=n[i];n[t]=e}function po(n,t){let e=-1,i=1e9;for(let s=0;s=t)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?e-r%e:1,s=Q(n,s)}return i===!0?-1:n.length}var us="\u037C",Do=typeof Symbol>"u"?"__"+us:Symbol.for(us),ds=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Oo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},yt=class{constructor(t,e){this.rules=[];let{finish:i}=e||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in t)r(s(o),t[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let t=Oo[Do]||1;return Oo[Do]=t+1,us+t.toString(36)}static mount(t,e,i){let s=t[ds],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ps(t,r),s.mount(Array.isArray(e)?e:[e],t)}},Bo=new Map,ps=class{constructor(t,e){let i=t.ownerDocument||t,s=i.defaultView;if(!t.head&&t.adoptedStyleSheets&&s.CSSStyleSheet){let r=Bo.get(i);if(r)return t[ds]=r;this.sheet=new s.CSSStyleSheet,Bo.set(i,this)}else this.styleTag=i.createElement("style"),e&&this.styleTag.setAttribute("nonce",e);this.modules=[],t[ds]=this}mount(t,e){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},lf=typeof navigator<"u"&&/Mac/.test(navigator.platform),af=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Gt[48+Y]=Gt[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Gt[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Gt[Y]=String.fromCharCode(Y+32),Fe[Y]=String.fromCharCode(Y);var Y;for(ji in Gt)Fe.hasOwnProperty(ji)||(Fe[ji]=Gt[ji]);var ji;function Eo(n){var t=lf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||af&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",e=!t&&n.key||(n.shiftKey?Fe:Gt)[n.keyCode]||n.key||"Unidentified";return e=="Esc"&&(e="Escape"),e=="Del"&&(e="Delete"),e=="Left"&&(e="ArrowLeft"),e=="Up"&&(e="ArrowUp"),e=="Right"&&(e="ArrowRight"),e=="Down"&&(e="ArrowDown"),e}var rt=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},vs=typeof document<"u"?document:{documentElement:{style:{}}},ks=/Edge\/(\d+)/.exec(rt.userAgent),hl=/MSIE \d/.test(rt.userAgent),Ss=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(rt.userAgent),kn=!!(hl||Ss||ks),Lo=!kn&&/gecko\/(\d+)/i.test(rt.userAgent),gs=!kn&&/Chrome\/(\d+)/.exec(rt.userAgent),Ro="webkitFontSmoothing"in vs.documentElement.style,Cs=!kn&&/Apple Computer/.test(rt.vendor),Po=Cs&&(/Mobile\/\w+/.test(rt.userAgent)||rt.maxTouchPoints>2),S={mac:Po||/Mac/.test(rt.platform),windows:/Win/.test(rt.platform),linux:/Linux|X11/.test(rt.platform),ie:kn,ie_version:hl?vs.documentMode||6:Ss?+Ss[1]:ks?+ks[1]:0,gecko:Lo,gecko_version:Lo?+(/Firefox\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,chrome:!!gs,chrome_version:gs?+gs[1]:0,ios:Po,android:/Android\b/.test(rt.userAgent),webkit:Ro,webkit_version:Ro?+(/\bAppleWebKit\/(\d+)/.exec(rt.userAgent)||[0,0])[1]:0,safari:Cs,safari_version:Cs?+(/\bVersion\/(\d+(\.\d+)?)/.exec(rt.userAgent)||[0,0])[1]:0,tabSize:vs.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function fr(n,t){for(let e in n)e=="class"&&t.class?t.class+=" "+n.class:e=="style"&&t.style?t.style+=";"+n.style:t[e]=n[e];return t}var ln=Object.create(null);function cr(n,t,e){if(n==t)return!0;n||(n=ln),t||(t=ln);let i=Object.keys(n),s=Object.keys(t);if(i.length-(e&&i.indexOf(e)>-1?1:0)!=s.length-(e&&s.indexOf(e)>-1?1:0))return!1;for(let r of i)if(r!=e&&(s.indexOf(r)==-1||n[r]!==t[r]))return!1;return!0}function hf(n,t){for(let e=n.attributes.length-1;e>=0;e--){let i=n.attributes[e].name;t[i]==null&&n.removeAttribute(i)}for(let e in t){let i=t[e];e=="style"?n.style.cssText=i:n.getAttribute(e)!=i&&n.setAttribute(e,i)}}function No(n,t,e){let i=!1;if(t)for(let s in t)e&&s in e||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(e)for(let s in e)t&&t[s]==e[s]||(i=!0,s=="style"?n.style.cssText=e[s]:n.setAttribute(s,e[s]));return i}function ff(n){let t=Object.create(null);for(let e=0;e0?3e8:-4e8:e>0?1e8:-1e8,new ke(t,e,e,i,t.widget||null,!1)}static replace(t){let e=!!t.block,i,s;if(t.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=fl(t,e);i=(r?e?-3e8:-1:5e8)-1,s=(o?e?2e8:1:-6e8)+1}return new ke(t,i,s,e,t.widget||null,!0)}static line(t){return new wi(t)}static set(t,e=!1){return F.of(t,e)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(t){let{start:e,end:i}=fl(t);super(e?-1:5e8,i?1:-6e8,null,t),this.tagName=t.tagName||"span",this.attrs=t.class&&t.attributes?fr(t.attributes,{class:t.class}):t.class?{class:t.class}:t.attributes||ln}eq(t){return this==t||t instanceof n&&this.tagName==t.tagName&&cr(this.attrs,t.attrs)}range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be empty");return super.range(t,e)}};bi.prototype.point=!1;var wi=class n extends z{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return t instanceof n&&this.spec.class==t.spec.class&&cr(this.spec.attributes,t.spec.attributes)}range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must be zero-length");return super.range(t,e)}};wi.prototype.mapMode=lt.TrackBefore;wi.prototype.point=!0;var ke=class n extends z{constructor(t,e,i,s,r,o){super(e,i,r,t),this.block=s,this.isReplace=o,this.mapMode=s?e<=0?lt.TrackBefore:lt.TrackAfter:lt.TrackDel}get type(){return this.startSide!=this.endSide?tt.WidgetRange:this.startSide<=0?tt.WidgetBefore:tt.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof n&&cf(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(t,e=t){if(this.isReplace&&(t>e||t==e&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&e!=t)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(t,e)}};ke.prototype.point=!0;function fl(n,t=!1){let{inclusiveStart:e,inclusiveEnd:i}=n;return e==null&&(e=n.inclusive),i==null&&(i=n.inclusive),{start:e??t,end:i??t}}function cf(n,t){return n==t||!!(n&&t&&n.compare(t))}function qe(n,t,e,i=0){let s=e.length-1;s>=0&&e[s]+i>=n?e[s]=Math.max(e[s],t):e.push(n,t)}var an=class n extends Wt{constructor(t,e){super(),this.tagName=t,this.attributes=e}eq(t){return t==this||t instanceof n&&this.tagName==t.tagName&&cr(this.attributes,t.attributes)}static create(t){return new n(t.tagName,t.attributes||ln)}static set(t,e=!1){return F.of(t,e)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let t;return n.nodeType==11?t=n.getSelection?n:n.ownerDocument:t=n,t.getSelection()}function As(n,t){return t?n==t||n.contains(t.nodeType!=1?t.parentNode:t):!1}function fi(n,t){if(!t.anchorNode)return!1;try{return As(n,t.anchorNode)}catch{return!1}}function en(n){return n.nodeType==3?vi(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,t,e,i){return e?Io(n,t,e,i,-1)||Io(n,t,e,i,1):!1}function ie(n){for(var t=0;;t++)if(n=n.previousSibling,!n)return t}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Io(n,t,e,i,s){for(;;){if(n==e&&t==i)return!0;if(t==(s<0?0:Xt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;t=ie(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[t+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;t=s<0?Xt(n):0}else return!1}}function Xt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,t){let e=t?n.left:n.right;return{left:e,right:e,top:n.top,bottom:n.bottom}}function uf(n){let t=n.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function cl(n,t){let e=t.width/n.offsetWidth,i=t.height/n.offsetHeight;return(e>.995&&e<1.005||!isFinite(e)||Math.abs(t.width-n.offsetWidth)<1)&&(e=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(t.height-n.offsetHeight)<1)&&(i=1),{scaleX:e,scaleY:i}}function df(n,t,e,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=uf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=cl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")t.top0&&t.bottom>u.bottom+b&&(b=t.bottom-u.bottom+o)):t.bottom>u.bottom-o&&(b=t.bottom-u.bottom+o,e<0&&t.top-b0&&t.right>u.right+m&&(m=t.right-u.right+r)):t.right>u.right-r&&(m=t.right-u.right+r,e<0&&t.leftu.bottom||t.leftu.right)&&(t={left:Math.max(t.left,u.left),right:Math.min(t.right,u.right),top:Math.max(t.top,u.top),bottom:Math.min(t.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function ul(n,t=!0){let e=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==e.body||(!t||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),t&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var Ms=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(t){return this.anchorNode==t.anchorNode&&this.anchorOffset==t.anchorOffset&&this.focusNode==t.focusNode&&this.focusOffset==t.focusOffset}setRange(t){let{anchorNode:e,focusNode:i}=t;this.set(e,Math.min(t.anchorOffset,e?Xt(e):0),i,Math.min(t.focusOffset,i?Xt(i):0))}set(t,e,i,s){this.anchorNode=t,this.anchorOffset=e,this.focusNode=i,this.focusOffset=s}},be=null;S.safari&&S.safari_version>=26&&(be=!1);function dl(n){if(n.setActive)return n.setActive();if(be)return n.focus(be);let t=[];for(let e=n;e&&(t.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(n.focus(be==null?{get preventScroll(){return be={preventScroll:!0},!0}}:void 0),!be){be=!1;for(let e=0;eMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function gl(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i>0)return{node:e,offset:i};if(e.nodeType==1&&i>0){if(e.contentEditable=="false")return null;e=e.childNodes[i-1],i=Xt(e)}else if(e.parentNode&&!hn(e))i=ie(e),e=e.parentNode;else return null}}function ml(n,t){for(let e=n,i=t;;){if(e.nodeType==3&&i=e){if(l.level==i)return o;(r<0||(s!=0?s<0?l.frome:t[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function wl(n,t){if(n.length!=t.length)return!1;for(let e=0;e=0;g-=3)if(Vt[g+1]==-d){let m=Vt[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Vt[g]]=b),l=g;break}}else{if(Vt.length==189)break;Vt[l++]=c,Vt[l++]=u,Vt[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Vt[m+2];if(b&2)break;if(g)Vt[m+2]|=2;else{if(b&4)break;Vt[m+2]|=4}}}}}function vf(n,t,e,i){for(let s=0,r=i;s<=e.length;s++){let o=s?e[s-1].to:n,l=sa;)p==m&&(p=e[--g].from,m=g?e[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ds(n,t,e,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=t,h=0;aa&&o.push(new xt(a,g.from,d));let m=g.direction==Se!=!(d%2);Os(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==e||(f?V[p]!=l:V[p]==l))break;p++}u?Ds(n,a,p,i+1,s,u,o):at;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;t:for(;;)if(h&&p==r[h-1].to){if(c)break t;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==t)break t;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break t;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=t==Se?0:1;return Os(n,s,s,e,0,n.length,i),i}function xl(n){return[new xt(0,n,0)]}var vl="";function Sf(n,t,e,i,s){var r;let o=i.head-n.from,l=xt.find(t,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=t[l],h=a.side(s,e);if(o==h){let u=l+=s?1:-1;if(u<0||u>=t.length)return null;a=t[l=u],o=a.side(!s,e),h=a.side(s,e)}let f=Q(n.text,o,a.forward(s,e));(fa.to)&&(f=h),vl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?t.length-1:0)?null:t[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(t=>t)}),Ol=M.define({combine:n=>n.some(t=>t)}),Bl=M.define(),ui=class n{constructor(t,e,i,s,r,o=!1){this.range=t,this.y=e,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(t){return t.empty?this:new n(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new n(w.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,t)=>n.map(t)}),El=U.define();function Mt(n,t,e){let i=n.facet(Al);i.length?i[0](t):window.onerror&&window.onerror(String(t),e,void 0,void 0,t)||(e?console.error(e+":",t):console.error(t))}var Jt=M.define({combine:n=>n.length?n[0]:!0}),Af=0,Ve=M.define({combine(n){return n.filter((t,e)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(t,e){return n.define((i,s)=>new t(i,s),e)}},di=class{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e)}catch(i){if(Mt(e.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){Mt(t.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(t){var e;if(!((e=this.value)===null||e===void 0)&&e.destroy)try{this.value.destroy()}catch(i){Mt(t.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ll=M.define(),gr=M.define(),Sn=M.define(),Rl=M.define(),mr=M.define(),ki=M.define(),Pl=M.define();function Fo(n,t){let e=n.state.facet(Pl);if(!e.length)return e;let i=e.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,t.from,t.to,{point(){},span(r,o,l,a){let h=r-t.from,f=o-t.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=Cf(t.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Nl=M.define();function Il(n){let t=0,e=0,i=0,s=0;for(let r of n.state.facet(Nl)){let o=r(n);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(e=Math.max(e,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:t,right:e,top:i,bottom:s}}var ai=M.define(),Tt=class n{constructor(t,e,i,s){this.fromA=t,this.toA=e,this.fromB=i,this.toB=s}join(t){return new n(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(t){let e=t.length,i=this;for(;e>0;e--){let s=t[e-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Tt(r,o,l,a))),this.changedRanges=s}static create(t,e,i){return new n(t,e,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(t=>t.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Mf=[],j=class{constructor(t,e,i=0){this.dom=t,this.length=e,this.flags=i,this.parent=null,t.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Mf}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(t){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&hf(this.dom,e)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(t){this.dom=t,t.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(t,e=this.posAtStart){let i=e;for(let s of this.children){if(s==t)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(t){return this.posBefore(t)+t.length}covers(t){return!0}coordsIn(t,e){return null}domPosFor(t,e){let i=ie(this.dom),s=this.length?t>0:e>0;return new zt(this.parent.dom,i+(s?1:0),t==0||t==this.length)}markDirty(t){this.flags&=-3,t&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let t=this;t;t=t.parent)if(t instanceof Ue)return t;return null}static get(t){return t.cmTile}},$e=class extends j{constructor(t){super(t,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(t){this.children.push(t),t.parent=this}sync(t){if(this.flags&2)return;super.sync(t);let e=this.dom,i=null,s,r=t?.node==e?t:null,o=0;for(let l of this.children){if(l.sync(t),o+=l.length+l.breakAfter,s=i?i.nextSibling:e.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==e)for(;s&&s!=l.dom;)s=Wo(s);else e.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:e.firstChild,r&&s&&(r.written=!0);s;)s=Wo(s);this.length=o}};function Wo(n){let t=n.nextSibling;return n.parentNode.removeChild(n),t}var Ue=class extends $e{constructor(t,e){super(e),this.view=t}owns(t){for(;t;t=t.parent)if(t==this)return!0;return!1}isBlock(){return!0}nearest(t){for(;;){if(!t)return null;let e=j.get(t);if(e&&this.owns(e))return e;t=t.parentNode}}blockTiles(t){for(let e=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!e.length)return;i=i.parent,i.breakAfter&&r++,s=e.pop()}else{let o=i.children[s++];if(o instanceof Yt)e.push(s),i=o,s=0;else{let l=r+o.length,a=t(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(t,e){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(t>=a&&t<=h){if(l.isWidget()&&e>=-1&&e<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(at||t==a&&(e>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=t-a)}}),!i&&!r)throw new Error("No tile at position "+t);return i&&e<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Yt=class n extends $e{constructor(t,e){super(t),this.wrapper=e}isBlock(){return!0}covers(t){return this.children.length?t<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(t,e){let i=new n(e||document.createElement(t.tagName),t);return e||(i.flags|=4),i}},je=class n extends $e{constructor(t,e){super(t),this.attrs=e}isLine(){return!0}static start(t,e,i){let s=new n(e||document.createElement("div"),t);return(!e||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(t,e,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(e>0||i&&Df(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(t=i);let s=t,r=t,o=0;t==0&&e<0||t==i&&e>=0?S.chrome||S.gecko||(t?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(t,e){let i=new n(e||document.createTextNode(t),t);return e||(i.flags|=2),i}},Ce=class n extends j{constructor(t,e,i,s){super(t,e,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(t){return this.flags&48?!1:(this.flags&(t<0?64:128))>0}coordsIn(t,e){return this.coordsInWidget(t,e,!1)}coordsInWidget(t,e,i){let s=this.widget.coordsAt(this.dom,t,e);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?t==0:e<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:t>0;for(let a=l?r.length-1:0;o=r[a],!(t>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!t)break;i&&i.break(),t--,o=!1}else if(r==s.children.length){if(!t&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(e>0?a.length<=t:a.length=0;l--){let a=e.marks[l],h=s.lastChild;if(h instanceof at&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(ms(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=j.get(a.dom);c&&c.setDOM(ms(a.dom))}let f=at.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=j.get(t.text);r&&this.cache.reused.set(r,2);let o=new we(t.text,t.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(t,e,i){let s=this.afterWidget&&t.flags&48&&(this.afterWidget.flags&48)==(t.flags&48);s||this.flushBuffer();let r=this.ensureMarks(e,i);!s&&!(t.flags&16)&&r.append(this.getBuffer(1)),r.append(t),this.pos+=t.length,this.afterWidget=t}addMark(t,e,i){this.flushBuffer(),this.ensureMarks(e,i).append(t),this.pos+=t.length,this.afterWidget=null}addBlockWidget(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}continueWidget(t){let e=this.afterWidget||this.lastBlock;e.length+=t,this.pos+=t}addLineStart(t,e){var i;t||(t=Hl);let s=je.start(t,e||((i=this.cache.find(je))===null||i===void 0?void 0:i.dom),!!e);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(t){this.getBlockPos().append(t),this.pos+=t.length,this.lastBlock=t,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(t){this.blockPosCovered()||this.addLineStart(t)}ensureLine(t){this.curLine||this.addLineStart(t)}ensureMarks(t,e){var i;let s=this.curLine;for(let r=t.length-1;r>=0;r--){let o=t[r],l;if(e>0&&(l=s.lastChild)&&l instanceof at&&l.mark.eq(o))s=l,e--;else{let a=at.of(o,(i=this.cache.find(at,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,e=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let t=this.curLine.lastChild;(!t||!Vo(this.curLine,!1)||t.dom.nodeName!="BR"&&t.isWidget()&&!(S.ios&&Vo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ys,0,32)||new Ce(ys.toDOM(),0,ys,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let t=this.wrappers.length-1;t>=0;t--)this.wrappers[t].to=this.pos){let e=new Ls(t.from,t.to,t.value,t.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-e.rank||this.wrappers[i-1].to-e.to)<0;)i--;this.wrappers.splice(i,0,e)}this.wrapperPos=this.pos}getBlockPos(){var t;this.updateBlockWrappers();let e=this.root;for(let i of this.wrappers){let s=e.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||t===void 0?void 0:t.dom);e.append(r),e=r}}return e}blockPosCovered(){let t=this.lastBlock;return t!=null&&!t.breakAfter&&(!t.isWidget()||(t.flags&160)>0)}getBuffer(t){let e=2|(t<0?16:32),i=this.cache.find(Ge,void 0,1);return i&&(i.flags=e),i||new Ge(e)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Ps=class{constructor(t){this.skipCount=0,this.text="",this.textOff=0,this.cursor=t.iter()}skip(t){this.textOff+t<=this.text.length?this.textOff+=t:(this.skipCount+=t-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(t){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(t,s.length);return r?null:s.slice(0,l)}let e=Math.min(this.text.length,this.textOff+t),i=this.text.slice(this.textOff,e);return this.textOff=e,i}},un=[Ce,je,we,at,Ge,Yt,Ue];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(t){let e=t.constructor.bucket,i=this.buckets[e];i.length<6?i.push(t):i[this.index[e]=(this.index[e]+1)%6]=t}find(t,e,i=2){let s=t.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!e||e(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(t,e){let i=e&&this.getCompositionContext(e.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;e&&l.fromA<=e.range.fromA&&l.toA>=e.range.toA?(this.forward(l.fromA,e.range.fromA,e.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof at&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof at&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(t)}emit(t,e){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,t,e,{point:(l,a,h,f,c,u)=>{if(h instanceof ke){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?ne.block:ne.inline),p=Of(h),g=this.cache.findWidget(d,a-l,p)||Ce.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Bf(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(t,e,i=1){e-t<=10?this.old.advance(e-t,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(e-t-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(t){let e=[],i=null;for(let s=t.parentNode;;s=s.parentNode){let r=j.get(s);if(s==this.view.contentDOM)break;r instanceof at?e.push(r):r?.isLine()?i=r:r instanceof Yt||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new je(s,Hl):i||e.push(at.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:ff(s)}),s)))}return{line:i,marks:e}}};function Vo(n,t){let e=i=>{for(let s of i.children)if((t?s.isText():s.length)||e(s))return!0;return!1};return e(n)}function Of(n){let t=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(t|=256),t}var Hl={class:"cm-line"};function Bf(n,t){let e=t.spec.attributes,i=t.spec.class;return!e&&!i||(n||(n={class:"cm-line"}),e&&fr(e,n),i&&(n.class+=" "+i)),n}function Ef(n){let t=[];for(let e=n.parents.length;e>1;e--){let i=e==n.parents.length?n.tile:n.parents[e].tile;i instanceof at&&t.push(i.mark)}return t}function ms(n){let t=j.get(n);return t&&t.setDOM(n.cloneNode()),n}var ne=class extends ve{constructor(t){super(),this.tag=t}eq(t){return t.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(t){return t.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ne.inline=new ne("span");ne.block=new ne("div");var ys=new class extends ve{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(t){this.view=t,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ue(t,t.contentDOM),this.updateInner([new Tt(0,0,0,t.state.doc.length)],null)}update(t){var e;let i=t.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=t.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=t.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(t);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((e=this.domChanged)===null||e===void 0)&&e.newSel?s=this.domChanged.newSel.head:!Wf(t.changes,this.hasComposition)&&!t.selectionSet&&(s=t.state.selection.main.head));let r=s>-1?Rf(this.view,t.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Tt(f,c,t.changes.mapPos(f,-1),t.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&t&&t.state.doc.lines!=t.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=If(o,this.decorations,t.changes);a.length&&(i=Tt.extendWithRanges(i,a));let h=Hf(l,this.blockWrappers,t.changes);return h.length&&(i=Tt.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),t.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(t,e){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(e||t.length){let o=this.tile,l=new Is(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);e&&j.get(e.text)&&l.cache.reused.set(j.get(e.text),2),this.tile=l.run(t,e),Hs(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||e||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Lf(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new zt(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Ff(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Pf(h.node,h.offset);if(d&&d!=3){let p=(d==1?gl:ml)(h.node,h.offset);p&&(h=new zt(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new zt(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new zt(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(t,e){return this.hasComposition&&e.empty&&ci(t.focusNode,t.focusOffset,t.anchorNode,t.anchorOffset)&&this.posFromDOM(t.focusNode,t.focusOffset)==e.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:t}=this,e=t.state.selection.main,i=xi(t.root),{anchorNode:s,anchorOffset:r}=t.observer.selectionRange;if(!i||!e.empty||!e.assoc||!i.modify)return;let o=this.lineAt(e.head,e.assoc);if(!o)return;let l=o.posAtStart;if(e.head==l||e.head==l+o.length)return;let a=this.coordsAt(e.head,-1),h=this.coordsAt(e.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(e.head+e.assoc,e.assoc);i.collapse(f.node,f.offset),i.modify("move",e.assoc<0?"forward":"backward","lineboundary"),t.observer.readSelectionRange();let c=t.observer.selectionRange;t.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=e.from&&i.collapse(s,r)}posFromDOM(t,e){let i=this.tile.nearest(t);if(!i)return this.tile.dom.compareDocumentPosition(t)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(t==i.dom)r=i.dom.childNodes[e];else{let o=Xt(t)==0?0:e==0?-1:1;for(;;){let l=t.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(t==l.firstChild?o=-1:o=1),t=l}o<0?r=t:r=t.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!j.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?t==i.dom?s+e:s+(e?i.length:0):s}domAtPos(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.domPosFor(t,e):i.domIn(s,e)}inlineDOMNearPos(t,e){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=t)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=t&&(i=h,s=t-f,r=c=t&&!o&&(o=h,l=t-f,a=f>t),f>t&&o)return!0}}),!i&&!o?this.domAtPos(t,e):(r&&o?i=null:a&&i&&(o=null),i&&e<0||!o?i.domIn(s,e):o.domIn(l,e))}coordsAt(t,e){let{tile:i,offset:s}=this.tile.resolveBlock(t,e);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,e,!0):i.coordsIn(s,e)}lineAt(t,e){let{tile:i}=this.tile.resolveBlock(t,e);return i.isLine()?i:null}coordsForChar(t){let{tile:e,offset:i}=this.tile.resolveBlock(t,1);if(!e.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==K.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Yt)m>i&&f(g,u,b);else if(u>=i&&(h>0&&e.push(-h),e.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?en(T):[];if(P.length){let A=P[P.length-1],k=a?A.right-b.left:b.right-A.left;k>l&&(l=k,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),e}textDirectionAt(t){let{tile:e}=this.tile.resolveBlock(t,1);return getComputedStyle(e.dom).direction=="rtl"?K.RTL:K.LTR}measureTextSize(){let t=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=en(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(t)return t;let e=document.createElement("div"),i,s,r;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(e);let o=en(e.firstChild)[0];i=e.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,e.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let t=[],e=this.view.viewState;for(let i=0,s=0;;s++){let r=s==e.viewports.length?null:e.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(e.lineBlockAt(o).bottom-e.lineBlockAt(i).top)/this.view.scaleY;t.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(t)}updateDeco(){let t=1,e=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[t++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(mr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[t++]=i,e.push(F.join(s))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];ttypeof r=="function"?r(this.view):r)}scrollIntoView(t){var e;if(t.isSnapshot){let f=this.view.viewState.lineBlockAt(t.range.head);this.view.scrollDOM.scrollTop=f.top-t.yMargin,this.view.scrollDOM.scrollLeft=t.xMargin;return}for(let f of this.view.state.facet(Bl))try{if(f(this.view,t.range,t))return!0}catch(c){Mt(this.view.state,c,"scroll handler")}let{range:i}=t,s=this.coordsAt(i.head,(e=i.assoc)!==null&&e!==void 0?e:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Il(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(df(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(e);return e(this.tile.resolveBlock(t,1).tile)}destroy(){Hs(this.tile)}};function Hs(n,t){let e=t?.get(n);if(e!=1){e==null&&n.destroy();for(let i of n.children)Hs(i,t)}}function Lf(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Fl(n,t){let e=n.observer.selectionRange;if(!e.focusNode)return null;let i=gl(e.focusNode,e.focusOffset),s=ml(e.focusNode,e.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=j.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=j.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=t-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Rf(n,t,e){let i=Fl(n,e);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=t.invertedDesc;return{range:new Tt(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Pf(n,t){return n.nodeType!=1?0:(t&&n.childNodes[t-1].contentEditable=="false"?1:0)|(t{it.from&&(e=!0)}),e}var pi=class extends ve{constructor(t){super(),this.height=t}toDOM(){let t=document.createElement("div");return t.className="cm-gap",this.updateDOM(t),t}eq(t){return t.height==this.height}updateDOM(t){return t.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Vf(n,t,e=1){let i=n.charCategorizer(t),s=n.doc.lineAt(t),r=t-s.from;if(s.length==0)return w.cursor(t);r==0?e=1:r==s.length&&(e=-1);let o=r,l=r;e<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-e.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(e.from,e.to);return e.from+To(o,r,n.state.tabSize)}function Ws(n,t,e){let i=n.lineBlockAt(t);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>t)break;if(!(r.tot)return r;(!s||r.type==tt.Text&&(s.type!=r.type||(e<0?r.fromt)))&&(s=r)}}return s||i}return i}function _f(n,t,e,i){let s=Ws(n,t.head,t.assoc||-1),r=!i||s.type!=tt.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(t.assoc<0&&t.head>s.from?t.head-1:t.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:e==(l==K.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,e?-1:1)}return w.cursor(e?s.to:s.from,e?-1:1)}function zo(n,t,e,i){let s=n.state.doc.lineAt(t.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=t,a=null;;){let h=Sf(s,r,o,l,e),f=vl;if(!h){if(s.number==(e?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(e?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!e)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function qf(n,t,e){let i=n.state.charCategorizer(t),s=i(e);return r=>{let o=i(r);return s==St.Space&&(s=o),s==o}}function Kf(n,t,e,i){let s=t.head,r=e?1:-1;if(s==(e?n.state.doc.length:0))return w.cursor(s,t.assoc);let o=t.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,t.assoc||((t.empty?e:t.head==t.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Vs(n,{x:c,y:g},!1,r);if(e?g>a.bottom:gl:C{if(t>r&&ts(n)),e.from,t.head>e.from?-1:1);return i==e.from?e:w.cursor(i,in.viewState.docHeight)return new wt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==tt.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(e)return null;if(h.type==tt.Text){let c=zf(n,s,h,o,l);return new wt(c,c==h.from?1:-1)}}if(h.type!=tt.Text)return a<(h.top+h.bottom)/2?new wt(h.from,1):new wt(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new zs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var zs=class{constructor(t,e,i,s){this.view=t,this.x=e,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(t){return(!this.line||this.line.from>t||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;e:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(t,e);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(t,e)}let u=(o?this.dirAt(t[h],1):this.baseDir)==K.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(t,e){let i=[];for(let r=0;r{let o=i[r]-e,l=i[r+1]-e;return vi(t.dom,o,l).getClientRects()});return s.after?new wt(i[s.i+1],-1):new wt(i[s.i],1)}scanTile(t,e){if(!t.length)return new wt(e,1);if(t.children.length==1){let l=t.children[0];if(l.isText())return this.scanText(l,e);if(l.isComposite())return this.scanTile(l,e)}let i=[e];for(let l=0,a=e;l{let a=t.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:vi(a.dom,0,a.length)).getClientRects()}),r=t.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new wt(i[s.i+1],-1):new wt(o,1)}},We="\uFFFF",_s=class{constructor(t,e){this.points=t,this.view=e,this.text="",this.lineSeparator=e.state.facet($.lineSeparator)}append(t){this.text+=t}lineBreak(){this.text+=We}readRange(t,e){if(!t)return this;let i=t.parentNode;for(let s=t;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=j.get(s),l=s.nextSibling;if(l==e){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=j.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!Uf(l,e)&&this.lineBreak(),s=l}return this.findPointBefore(i,e),this}readTextNode(t){let e=t.nodeValue;for(let i of this.points)i.node==t&&(i.pos=this.text.length+Math.min(i.offset,e.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=e.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(e))&&(r=l.index,o=l[0].length),this.append(e.slice(i,r<0?e.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==t&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(t){let e=j.get(t),i=e&&e.overrideDOMText;if(i!=null){this.findPointInside(t,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else t.nodeType==3?this.readTextNode(t):t.nodeName=="BR"?t.nextSibling&&this.lineBreak():t.nodeType==1&&this.readRange(t.firstChild,null)}findPointBefore(t,e){for(let i of this.points)i.node==t&&t.childNodes[i.offset]==e&&(i.pos=this.text.length)}findPointInside(t,e){for(let i of this.points)(t.nodeType==3?i.node==t:t.contains(i.node))&&(i.pos=this.text.length+($f(t,i.node,i.offset)?e:0))}};function $f(n,t,e){for(;;){if(!t||e-1;let{impreciseHead:r,impreciseAnchor:o}=t.docView,l=t.state.selection;if(t.state.readOnly&&e>-1)this.newSel=null;else if(e>-1&&(this.bounds=Vl(t.docView.tile,e,i,0))){let a=r||o?[]:Gf(t),h=new _s(a,t);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Jf(a,this.bounds.from)}else{let a=t.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!As(t.contentDOM,a.focusNode)?l.main.head:t.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!As(t.contentDOM,a.anchorNode)?l.main.anchor:t.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=t.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(t.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&t.inputState.lastTouchTime>Date.now()-100){let u=t.coordsAtPos(h,-1),d=0;u&&(d=t.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Vl(n,t,e,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;ae)return Vl(c,t,e,h);if(u>=t&&s==-1&&(s=a,r=h),h>e&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function zl(n,t){let e,{newSel:i}=t,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(t.bounds){let{from:l,to:a}=t.bounds,h=r.from,f=null;(o===8||S.android&&t.text.length=l&&r.to<=a&&(t.typeOver||c!=t.text)&&c.slice(0,r.from-l)==t.text.slice(0,r.from-l)&&c.slice(r.to-l)==t.text.slice(u=t.text.length-(c.length-(r.to-l)))?e={from:r.from,to:r.to,insert:R.of(t.text.slice(r.from-l,u).split(We))}:(d=_l(c,t.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&t.text.slice(d.from,d.toB)==We+We&&d.toB--,e={from:l+d.from,to:l+d.toA,insert:R.of(t.text.slice(d.from,d.toB).split(We))})}else i&&(!n.hasFocus&&s.facet(Jt)||gn(i,r))&&(i=null);if(!e&&!i)return!1;if((S.mac||S.android)&&e&&e.from==e.to&&e.from==r.head-1&&/^\. ?$/.test(e.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&e.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:e.from,to:e.to,insert:R.of([e.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?e={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&e&&e.from==e.to&&e.from==r.head&&e.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),e={from:r.from,to:r.to,insert:R.of([" "])}),e)return yr(n,e,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Wl(s.facet(ki).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function yr(n,t,e,i=-1){if(S.ios&&n.inputState.flushIOSKey(t))return!0;let s=n.state.selection.main;if(S.android&&(t.to==s.to&&(t.from==s.from||t.from==s.from-1&&n.state.sliceDoc(t.from,s.from)==" ")&&t.insert.length==1&&t.insert.lines==2&&Ke(n.contentDOM,"Enter",13)||(t.from==s.from-1&&t.to==s.to&&t.insert.length==0||i==8&&t.insert.lengths.head)&&Ke(n.contentDOM,"Backspace",8)||t.from==s.from&&t.to==s.to+1&&t.insert.length==0&&Ke(n.contentDOM,"Delete",46)))return!0;let r=t.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=jf(n,t,e));return n.state.facet(Ml).some(a=>a(n,t.from,t.to,r,l))||n.dispatch(l()),!0}function jf(n,t,e){let i,s=n.state,r=s.selection.main,o=-1;if(t.from==t.to&&t.fromr.to){let a=t.fromc(n)),h,a);t.from==f&&(o=f)}if(o>-1)i={changes:t,selection:w.cursor(t.from+t.insert.length,-1)};else if(t.from>=r.from&&t.to<=r.to&&t.to-t.from>=(r.to-r.from)/3&&(!e||e.main.empty&&e.main.from==t.from+t.insert.length)&&n.inputState.composing<0){let a=r.fromt.to?s.sliceDoc(t.to,r.to):"";i=s.replaceSelection(n.state.toText(a+t.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(t),h=e&&e.main.to<=a.newLength?e.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&t.to<=r.to+10&&t.to>=r.to-10){let f=n.state.sliceDoc(t.from,t.to),c,u=e&&Fl(n,e.main.head);if(u){let p=t.insert.length-(t.to-t.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-t.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:t.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function _l(n,t,e,i){let s=Math.min(n.length,t.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==t.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));e-=o+a-r}if(o=o?r-e:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-e:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Gf(n){let t=[];if(n.root.activeElement!=n.contentDOM)return t;let{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return e&&(t.push(new pn(e,i)),(s!=e||r!=i)&&t.push(new pn(s,r))),t}function Jf(n,t){if(n.length==0)return null;let e=n[0].pos,i=n.length==2?n[1].pos:e;return e>-1&&i>-1?w.single(e+t,i+t):null}function gn(n,t){return t.head==n.main.head&&t.anchor==n.main.anchor}var Ks=class{setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTime=Date.now()}constructor(t){this.view=t,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=t.hasFocus,S.safari&&t.contentDOM.addEventListener("input",()=>null),S.gecko&&hc(t.contentDOM.ownerDocument)}handleEvent(t){!ic(this.view,t)||this.ignoreDuringComposition(t)||t.type=="keydown"&&this.keydown(t)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(t.type,t)):this.runHandlers(t.type,t))}runHandlers(t,e){let i=this.handlers[t];if(i){for(let s of i.observers)s(this.view,e);for(let s of i.handlers){if(e.defaultPrevented)break;if(s(this.view,e)){e.preventDefault();break}}}}ensureHandlers(t){let e=Yf(t),i=this.handlers,s=this.view.contentDOM;for(let r in e)if(r!="scroll"){let o=!e[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!e[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=e}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),t.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&t.keyCode!=27&&Kl.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(t.keyCode==13||t.keyCode==8))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return S.ios&&!t.synthetic&&!t.altKey&&!t.metaKey&&!t.shiftKey&&((e=ql.find(i=>i.keyCode==t.keyCode))&&!t.ctrlKey||Xf.indexOf(t.key)>-1&&t.ctrlKey)?(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0):(t.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(t){let e=this.pendingIOSKey;return!e||e.key=="Enter"&&t&&t.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=t}update(t){this.view.observer.update(t),this.mouseSelection&&this.mouseSelection.update(t),this.draggedContent&&t.docChanged&&(this.draggedContent=this.draggedContent.map(t.changes)),t.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function _o(n,t){return(e,i)=>{try{return t.call(n,i,e)}catch(s){Mt(e.state,s)}}}function Yf(n){let t=Object.create(null);function e(i){return t[i]||(t[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&e(l).handlers.push(_o(i.value,a))}if(o)for(let l in o){let a=o[l];a&&e(l).observers.push(_o(i.value,a))}}for(let i in Ot)e(i).handlers.push(Ot[i]);for(let i in ht)e(i).observers.push(ht[i]);return t}var ql=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Xf="dthko",Kl=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Qf(n,t){return Math.max(Math.abs(n.clientX-t.clientX),Math.abs(n.clientY-t.clientY))}var $s=class{constructor(t,e,i,s){this.view=t,this.startEvent=e,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=ul(t.contentDOM),this.atoms=t.state.facet(ki).map(o=>o(t));let r=t.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet($.allowMultipleSelections)&&Zf(t,e),this.dragging=ec(t,e)&&jl(e)==1?null:!1}start(t){this.dragging===!1&&this.select(t)}move(t){if(t.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Qf(this.startEvent,t)<10)return;this.select(this.lastEvent=t);let e=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Il(this.view);t.clientX-a.left<=s+Ji?e=-Yi(s-t.clientX):t.clientX+a.right>=o-Ji&&(e=Yi(t.clientX-o)),t.clientY-a.top<=r+Ji?i=-Yi(r-t.clientY):t.clientY+a.bottom>=l-Ji&&(i=Yi(t.clientY-l)),this.setScrollSpeed(e,i)}up(t){this.dragging==null&&this.select(this.lastEvent),this.dragging||t.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let t=this.view.contentDOM.ownerDocument;t.removeEventListener("mousemove",this.move),t.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(t,e){this.scrollSpeed={x:t,y:e},t||e?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:t,y:e}=this.scrollSpeed;t&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=t,t=0),e&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=e,e=0),(t||e)&&this.view.win.scrollBy(t,e),this.dragging===!1&&this.select(this.lastEvent)}select(t){let{view:e}=this,i=Wl(this.atoms,this.style.get(t,this.extend,this.multiple));(this.mustSelect||!i.eq(e.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(t){t.transactions.some(e=>e.isUserEvent("input.type"))?this.destroy():this.style.update(t)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Zf(n,t){let e=n.state.facet(kl);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}function tc(n,t){let e=n.state.facet(Sl);return e.length?e[0](t):S.mac?!t.altKey:!t.ctrlKey}function ec(n,t){let{main:e}=n.state.selection;if(e.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=t.clientX&&o.top<=t.clientY&&o.bottom>=t.clientY)return!0}return!1}function ic(n,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let e=t.target,i;e!=n.contentDOM;e=e.parentNode)if(!e||e.nodeType==11||(i=j.get(e))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(t))return!1;return!0}var Ot=Object.create(null),ht=Object.create(null),$l=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function nc(n){let t=n.dom.parentNode;if(!t)return;let e=t.appendChild(document.createElement("textarea"));e.style.cssText="position: fixed; left: -10000px; top: 10px",e.focus(),setTimeout(()=>{n.focus(),e.remove(),Ul(n,e.value)},50)}function Cn(n,t,e){for(let i of n.facet(t))e=i(e,n);return e}function Ul(n,t){t=Cn(n.state,dr,t);let{state:e}=n,i,s=1,r=e.toText(t),o=r.lines==e.selection.ranges.length;if(Us!=null&&e.selection.ranges.every(a=>a.empty)&&Us==r.toString()){let a=-1;i=e.changeByRange(h=>{let f=e.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=e.toText((o?r.line(s++).text:t)+e.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=e.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=e.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ht.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};ht.wheel=ht.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Ot.keydown=(n,t)=>(n.inputState.setSelectionOrigin("select"),t.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ht.touchstart=(n,t)=>{let e=n.inputState,i=t.targetTouches[0];e.lastTouchTime=Date.now(),i&&(e.lastTouchX=i.clientX,e.lastTouchY=i.clientY),e.setSelectionOrigin("select.pointer")};ht.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ot.mousedown=(n,t)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let e=null;for(let i of n.state.facet(Cl))if(e=i(n,t),e)break;if(!e&&t.button==0&&(e=rc(n,t)),e){let i=!n.hasFocus;n.inputState.startMouseSelection(new $s(n,t,e,i)),i&&n.observer.ignore(()=>{dl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(t),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function qo(n,t,e,i){if(i==1)return w.cursor(t,e);if(i==2)return Vf(n.state,t,e);{let s=n.docView.lineAt(t,e),r=n.state.doc.lineAt(s?s.posAtEnd:t),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(t.clientX-n.clientX)<2&&Math.abs(t.clientY-n.clientY)<2?($o+1)%3:1}function rc(n,t){let e=n.posAndSideAtCoords({x:t.clientX,y:t.clientY},!1),i=jl(t),s=n.state.selection;return{update(r){r.docChanged&&(e.pos=r.changes.mapPos(e.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=qo(n,a.pos,a.assoc,i);if(e.pos!=a.pos&&!o){let c=qo(n,e.pos,e.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=oc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function oc(n,t){for(let e=0;e=t)return w.create(n.ranges.slice(0,e).concat(n.ranges.slice(e+1)),n.mainIndex==e?0:n.mainIndex-(n.mainIndex>e?1:0))}return null}Ot.dragstart=(n,t)=>{let{selection:{main:e}}=n.state;if(t.target.draggable){let s=n.docView.tile.nearest(t.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=e.to||o<=e.from)&&(e=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=e,t.dataTransfer&&(t.dataTransfer.setData("Text",Cn(n.state,pr,n.state.sliceDoc(e.from,e.to))),t.dataTransfer.effectAllowed="copyMove"),!1};Ot.dragend=n=>(n.inputState.draggedContent=null,!1);function jo(n,t,e,i){if(e=Cn(n.state,dr,e),!e)return;let s=n.posAtCoords({x:t.clientX,y:t.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&tc(n,t)?{from:r.from,to:r.to}:null,l={from:s,insert:e},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ot.drop=(n,t)=>{if(!t.dataTransfer)return!1;if(n.state.readOnly)return!0;let e=t.dataTransfer.files;if(e&&e.length){let i=Array(e.length),s=0,r=()=>{++s==e.length&&jo(n,t,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(e[o])}return!0}else{let i=t.dataTransfer.getData("Text");if(i)return jo(n,t,i,!0),!0}return!1};Ot.paste=(n,t)=>{if(n.state.readOnly)return!0;n.observer.flush();let e=$l?null:t.clipboardData;return e?(Ul(n,e.getData("text/plain")||e.getData("text/uri-list")),!0):(nc(n),!1)};function lc(n,t){let e=n.dom.parentNode;if(!e)return;let i=e.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=t,i.focus(),i.selectionEnd=t.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function ac(n){let t=[],e=[],i=!1;for(let s of n.selection.ranges)s.empty||(t.push(n.sliceDoc(s.from,s.to)),e.push(s));if(!t.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(t.push(o.text),e.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,pr,t.join(n.lineBreak)),ranges:e,linewise:i}}var Us=null;Ot.copy=Ot.cut=(n,t)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:e,ranges:i,linewise:s}=ac(n.state);if(!e&&!s)return!1;Us=s?e:null,t.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=$l?null:t.clipboardData;return r?(r.clearData(),r.setData("text/plain",e),!0):(lc(n,e),!1)};var Gl=mt.define();function Jl(n,t){let e=[];for(let i of n.facet(Tl)){let s=i(n,t);s&&e.push(s)}return e.length?n.update({effects:e,annotations:Gl.of(!0)}):null}function Yl(n){setTimeout(()=>{let t=n.hasFocus;if(t!=n.inputState.notifiedFocused){let e=Jl(n.state,t);e?n.dispatch(e):n.update([])}},10)}ht.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Yl(n)};ht.blur=n=>{n.observer.clearSelectionRange(),Yl(n)};ht.compositionstart=ht.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ht.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ht.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ot.beforeinput=(n,t)=>{var e,i;if((t.inputType=="insertText"||t.inputType=="insertCompositionText")&&(n.inputState.insertingText=t.data,n.inputState.insertingTextAt=Date.now()),t.inputType=="insertReplacementText"&&n.observer.editContext){let r=(e=t.dataTransfer)===null||e===void 0?void 0:e.getData("text/plain"),o=t.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return yr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=ql.find(r=>r.inputType==t.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&t.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&t.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ht.compositionend(n,t),20),!1};var Go=new Set;function hc(n){Go.has(n)||(Go.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Jo=["pre-wrap","normal","pre-line","break-spaces"],Je=!1;function Yo(){Je=!1}var js=class{constructor(t){this.lineWrapping=t,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((e-t-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(t){return this.lineWrapping?(1+Math.max(0,Math.ceil((t-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(t){return this.doc=t,this}mustRefreshForWrapping(t){return Jo.indexOf(t)>-1!=this.lineWrapping}mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,a=Math.abs(e-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=e,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(t){this.flags=(t?2:0)|this.flags&-3}setHeight(t){this.height!=t&&(Math.abs(this.height-t)>nn&&(Je=!0),this.height=t)}replace(t,e,i){return n.of(i)}decomposeLeft(t,e){e.push(this)}decomposeRight(t,e){e.push(this)}applyChanges(t,e,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,q.ByPosNoHeight,i.setDoc(e),0,0),d=u.to>=h?u:r.lineAt(h,q.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=t[e-1];l.break?t.splice(--e,1,l.left,null,l.right):t.splice(--e,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=t[i];l.break?t.splice(i,1,l.left,null,l.right):t.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,q.ByPos,i,s,r))}setMeasuredHeight(t){let e=t.heights[t.index++];e<0?(this.spaceAbove=-e,e=t.heights[t.index++]):this.spaceAbove=0,this.setHeight(e)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},bt=class n extends yn{constructor(t,e,i){super(t,e,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(t,e){return new At(e,this.length,t+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(t,e,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof ee&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof ee?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ut.of(i)}updateHeight(t,e=0,i=!1,s){return s&&s.from<=e&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,t.heightForLine(this.length-this.collapsed))+this.breaks*t.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},ee=class n extends ut{constructor(t){super(t,0)}heightMetrics(t,e){let i=t.doc.lineAt(e).number,s=t.doc.lineAt(e+this.length).number,r=s-i+1,o,l=0;if(t.lineWrapping){let a=Math.min(this.height,t.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(t,e,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(e,s);if(e.lineWrapping){let h=s+(t0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(t>0){let r=i[0];r instanceof n?i[0]=new n(t+r.length):i.unshift(new n(t-1),null)}return ut.of(i)}decomposeLeft(t,e){e.push(new n(t-1),null)}decomposeRight(t,e){e.push(null,new n(this.length-t-1))}updateHeight(t,e=0,i=!1,s){let r=e+this.length;if(s&&s.from<=e+this.length&&s.more){let o=[],l=Math.max(e,s.from),a=-1;for(s.from>e&&o.push(new n(s.from-e-1).updateHeight(t,e));l<=r&&s.more;){let f=t.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new bt(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(t,l));let h=ut.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(t,e).perLine)>=nn)&&(Je=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(t.heightForGap(e,e+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Js=class extends ut{constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.outdated||i.outdated?2:0)),this.left=t,this.right=i,this.size=t.size+i.size}get break(){return this.flags&1}blockAt(t,e,i,s){let r=i+this.left.height;return tl))return h;let f=e==q.ByPosNoHeight?q.ByPosNoHeight:q.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(t,e,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)t=a&&this.right.forEachLine(t,e,i,l,a,o);else{let h=this.lineAt(a,q.ByPos,i,s,r);t=t&&h.from<=e&&o(h),e>h.to&&this.right.forEachLine(h.to+1,e,i,l,a,o)}}replace(t,e,i){let s=this.left.length+this.break;if(ethis.left.length)return this.balanced(this.left,this.right.replace(t-s,e-s,i));let r=[];t>0&&this.decomposeLeft(t,r);let o=r.length;for(let l of i)r.push(l);if(t>0&&Xo(r,o-1),e=i&&e.push(null)),t>i&&this.right.decomposeLeft(t-i,e)}decomposeRight(t,e){let i=this.left.length,s=i+this.break;if(t>=s)return this.right.decomposeRight(t-s,e);t2*e.size||e.size>2*t.size?ut.of(this.break?[t,null,e]:[t,e]):(this.left=mn(this.left,t),this.right=mn(this.right,e),this.setHeight(t.height+e.height),this.outdated=t.outdated||e.outdated,this.size=t.size+e.size,this.length=t.length+this.break+e.length,this)}updateHeight(t,e=0,i=!1,s){let{left:r,right:o}=this,l=e+r.length+this.break,a=null;return s&&s.from<=e+r.length&&s.more?a=r=r.updateHeight(t,e,i,s):r.updateHeight(t,e,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(t,l,i,s):o.updateHeight(t,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Xo(n,t){let e,i;n[t]==null&&(e=n[t-1])instanceof ee&&(i=n[t+1])instanceof ee&&n.splice(t-1,3,new ee(e.length+1+i.length))}var cc=5,Ys=class n{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=t}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(t,e){if(this.lineStart>-1){let i=Math.min(e,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof bt?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new bt(i-this.pos,-1,0)),this.writtenTo=i,e>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=e}point(t,e,i){if(t=cc)&&this.addLineDeco(s,r,o)}else e>t&&this.span(t,e);this.lineEnd>-1&&this.lineEnd-1)return;let{from:t,to:e}=this.oracle.doc.lineAt(this.pos);this.lineStart=t,this.lineEnd=e,this.writtenTot&&this.nodes.push(new bt(this.pos-t,-1,0)),this.writtenTo=this.pos}blankContent(t,e){let i=new ee(e-t);return this.oracle.doc.lineAt(t).to==e&&(i.flags|=4),i}ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(t instanceof bt)return t;let e=new bt(0,-1,0);return this.nodes.push(e),e}addBlock(t){this.enterLine();let e=t.deco;e&&e.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(t),this.writtenTo=this.pos=this.pos+t.length,e&&e.endSide>0&&(this.covering=t)}addLineDeco(t,e,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,t),s.breaks+=e,this.writtenTo=this.pos=this.pos+i}finish(t){let e=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(e instanceof bt)&&!this.isCovered?this.nodes.push(new bt(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-e.left,right:Math.max(r,o)-e.left,top:l-(e.top+t),bottom:Math.max(l,a)-(e.top+t)}}function pc(n){let t=n.getBoundingClientRect(),e=n.ownerDocument.defaultView||window;return t.left0&&t.top0}function gc(n,t){let e=n.getBoundingClientRect();return{left:0,right:e.right-e.left,top:t,bottom:e.bottom-(e.top+t)}}var mi=class{constructor(t,e,i,s){this.from=t,this.to=e,this.size=i,this.displaySize=s}static same(t,e){if(t.length!=e.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new js(i),this.stateDeco=Zo(e),this.heightMap=ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(e.doc),[new Tt(0,0,0,e.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=t.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let t=[this.viewport],{main:e}=this.state.selection;for(let i=0;i<=1;i++){let s=i?e.head:e.anchor;if(!t.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);t.push(new ze(r,o))}}return this.viewports=t.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let t=this.scaler;return this.scaler=this.heightMap.height<=7e6?Qo:new Zs(this.heightOracle,this.heightMap,this.viewports),t.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,t=>{this.viewportLines.push(hi(t,this.scaler))})}update(t,e=null){this.state=t.state;let i=this.stateDeco;this.stateDeco=Zo(this.state);let s=t.changedRanges,r=Tt.extendWithRanges(s,uc(i,this.stateDeco,t?t.changes:st.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Yo(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,t.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Je)&&(t.flags|=2),l?(this.scrollAnchorPos=t.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,t.changes):this.viewport;(e&&(e.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,e));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,t.flags|=this.updateForViewport(),(h||!t.changes.empty||t.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,t.changes))),t.flags|=this.computeVisibleRanges(t.changes),e&&(this.scrollTarget=e),!this.mustEnforceCursorAssoc&&(t.selectionSet||t.focusChanged)&&t.view.lineWrapping&&t.state.selection.main.empty&&t.state.selection.main.assoc&&!t.state.facet(Ol)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:t}=this,e=t.contentDOM,i=window.getComputedStyle(e),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?K.RTL:K.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=e.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:k}=cl(e,l);(A>.005&&Math.abs(this.scaleX-A)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=A,this.scaleY=k,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=t.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=t.scrollDOM.clientWidth,h|=16);let d=ul(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=pl(this.scrollParent||t.win);let g=(this.printing?gc:dc)(e,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!pc(t.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=t.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=t.scrollDOM.clientHeight,h|=16),a){let A=t.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:N}=t.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,N,Math.max(5,T/v),A),o&&(t.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Yo();for(let k of this.viewports){let v=k.from==this.viewport.from?A:t.docView.measureVisibleLineHeights(k);this.heightMap=(o?ut.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Tt(0,0,0,t.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Gs(k.from,v))}Je&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,t)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,t.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(t,e){let i=.5-Math.max(-.5,Math.min(.5,t/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new ze(s.lineAt(o-i*1e3,q.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,q.ByHeight,r,0,0).to);if(e){let{head:h}=e.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,q.ByPos,r,0,0),u;e.y=="center"?u=(c.top+c.bottom)/2-f/2:e.y=="start"||e.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=K.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=e.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let k of t)k.from>=f.from&&k.fromf.from&&a(f.from,d,f,c),pe.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let i=[];F.spans(e,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||hi(this.heightMap.lineAt(t,q.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||hi(this.heightMap.lineAt(this.scaler.fromDOM(t),q.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(t){let e=this.lineBlockAtHeight(t+8);return e.from>=this.viewport.from||this.viewportLines[0].top-t>200?e:this.viewportLines[0]}elementAtHeight(t){return hi(this.heightMap.blockAt(this.scaler.fromDOM(t),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},ze=class{constructor(t,e){this.from=t,this.to=e}};function mc(n,t,e){let i=[],s=n,r=0;return F.spans(e,n,t,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return t[t.length-1].to;let i=Math.floor(n*e);for(let s=0;;s++){let{from:r,to:o}=t[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,t){let e=0;for(let{from:i,to:s}of n.ranges){if(t<=s){e+=t-i;break}e+=s-i}return e/n.total}function yc(n,t){for(let e of n)if(t(e))return e}var Qo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Zo(n){let t=n.facet(Sn).filter(i=>typeof i!="function"),e=n.facet(mr).filter(i=>typeof i!="function");return e.length&&t.push(F.join(e)),t}var Zs=class n{constructor(t,e,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=e.lineAt(l,q.ByPos,t,0,0).top,f=e.lineAt(a,q.ByPos,t,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(e.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(t){for(let e=0,i=0,s=0;;e++){let r=ee.from==t.viewports[i].from&&e.to==t.viewports[i].to):!1}};function hi(n,t){if(t.scale==1)return n;let e=t.toDOM(n.top),i=t.toDOM(n.bottom);return new At(n.from,n.length,e,i-e,Array.isArray(n._content)?n._content.map(s=>hi(s,t)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),tr=M.define({combine:n=>n.indexOf(!0)>-1}),er=yt.newName(),Xl=yt.newName(),Ql=yt.newName(),Zl={"&light":"."+Xl,"&dark":"."+Ql};function ir(n,t,e){return new yt(t,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!e||!e[s])throw new RangeError(`Unsupported selector: ${s}`);return e[s]}):n+" "+i}})}var bc=ir("."+er,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Zl),wc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},ws=S.ie&&S.ie_version<=11,nr=class{constructor(t){this.view=t,this.active=!1,this.editContext=null,this.selectionRange=new Ms,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=t.contentDOM,this.observer=new MutationObserver(e=>{for(let i of e)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&t.composing)&&e.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&t.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new sr(t),t.state.facet(Jt)&&(t.contentDOM.editContext=this.editContext.editContext)),ws&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var e;((e=this.view.docView)===null||e===void 0?void 0:e.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),e.length>0&&e[e.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{e.length>0&&e[e.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(t){this.view.inputState.runHandlers("scroll",t),this.intersecting&&this.view.measure()}onScroll(t){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(t)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(t){(t.type=="change"||!t.type)&&!t.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||this.gaps.some((e,i)=>e!=t[i]))){this.gapIntersection.disconnect();for(let e of t)this.gapIntersection.observe(e);this.gaps=t}}onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Jt)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(t)){e||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:t}=this,e=xi(t.root);if(!e)return!1;let i=S.safari&&t.root.nodeType==11&&t.root.activeElement==this.dom&&xc(this.view,e)||e;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&Ke(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||t=="Enter")&&(this.delayedAndroidKey={key:t,keyCode:e,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let t of this.observer.takeRecords())this.queue.push(t);return this.queue}processRecords(){let t=this.pendingRecords();t.length&&(this.queue=[]);let e=-1,i=-1,s=!1;for(let r of t){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),e==-1?{from:e,to:i}=o:(e=Math.min(o.from,e),i=Math.max(o.to,i)))}return{from:e,to:i,typeOver:s}}readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(t<0&&!s)return null;t>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new qs(this.view,t,e,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t&&this.readSelectionRange();let e=this.readChange();if(!e)return this.view.requestMeasure(),!1;let i=this.view.state,s=zl(this.view,e);return this.view.state==i&&(e.domChanged||e.newSel&&!gn(this.view.state.selection,e.newSel.main))&&this.view.update([]),s}readMutation(t){let e=this.view.docView.tile.nearest(t.target);if(!e||e.isWidget())return null;if(e.markDirty(t.type=="attributes"),t.type=="childList"){let i=tl(e,t.previousSibling||t.target.previousSibling,-1),s=tl(e,t.nextSibling||t.target.nextSibling,1);return{from:i?e.posAfter(i):e.posAtStart,to:s?e.posBefore(s):e.posAtEnd,typeOver:!1}}else return t.type=="characterData"?{from:e.posAtStart,to:e.posAtEnd,typeOver:t.target.nodeValue==t.oldValue}:null}setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.win=t,this.addWindowListeners(this.win))}addWindowListeners(t){t.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):t.addEventListener("beforeprint",this.onPrint),t.addEventListener("scroll",this.onScroll),t.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll),t.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):t.removeEventListener("beforeprint",this.onPrint),t.document.removeEventListener("selectionchange",this.onSelectionChange)}update(t){this.editContext&&(this.editContext.update(t),t.startState.facet(Jt)!=t.state.facet(Jt)&&(t.view.contentDOM.editContext=t.state.facet(Jt)?this.editContext.editContext:null))}destroy(){var t,e,i;this.stop(),(t=this.intersection)===null||t===void 0||t.disconnect(),(e=this.gapIntersection)===null||e===void 0||e.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function tl(n,t,e){for(;t;){let i=j.get(t);if(i&&i.parent==n)return i;let s=t.parentNode;t=s!=n.dom?s:e>0?t.nextSibling:t.previousSibling}return null}function el(n,t){let e=t.startContainer,i=t.startOffset,s=t.endContainer,r=t.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([e,i,s,r]=[s,r,e,i]),{anchorNode:e,anchorOffset:i,focusNode:s,focusOffset:r}}function xc(n,t){if(t.getComposedRanges){let s=t.getComposedRanges(n.root)[0];if(s)return el(n,s)}let e=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),e=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),e?el(n,e):null}var sr=class{constructor(t){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(t.state);let e=this.editContext=new window.EditContext({text:t.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,t.state.selection.main.anchor))),selectionEnd:this.toContextPos(t.state.selection.main.head)});this.handlers.textupdate=i=>{let s=t.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);t.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=_l(t.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||t.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);yr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||pf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new nr(this),this.inputState=new Ks(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Gl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!zl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(pl(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),il}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return er+" "+(this.state.facet(tr)?Ql:Xl)+" "+this.state.facet(Zi)}updateAttrs(){let t=nl(this,Ll,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),nl(this,gr,e);let i=this.observer.ignore(()=>{let s=No(this.contentDOM,this.contentAttrs,e),r=No(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(bc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return bs(this,t,zo(this,t,e,i))}moveByGroup(t,e){return bs(this,t,zo(this,t,e,i=>qf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return _f(this,t,e,i)}moveVertically(t,e,i){return bs(this,t,Kf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Vs(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Vs(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Dl)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>vc)return xl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||wl(r.isolates,i=Fo(this,t))))return r.order;i||(i=Fo(this,t));let s=kf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{dl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(ir(`.${i}`,t))];return e&&e.dark&&s.push(tr.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(ir("."+er,t,Zl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Ml;D.clipboardInputFilter=dr;D.clipboardOutputFilter=pr;D.scrollHandler=Bl;D.focusChangeEffect=Tl;D.perLineTextDirection=Dl;D.exceptionSink=Al;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=Cl;D.dragMovesSelection=Sl;D.clickAddsSelectionRange=kl;D.decorations=Sn;D.blockWrappers=Rl;D.outerDecorations=mr;D.atomicRanges=ki;D.bidiIsolatedRanges=Pl;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Nl;D.darkTheme=tr;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=gr;D.editorAttributes=Ll;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var vc=4096,il={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&fr(o,e)}return e}var kc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function Sc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Mc=4e3;function Tc(n,t=kc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>Sc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Mc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,rr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var rr=null;function Dc(n,t,e,i){rr=t;let s=Eo(t),r=go(s,0),o=mo(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",Kl.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),rr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=ta(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Oc(t,e,i)}};function ta(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function rl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Oc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=ta(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Ws(n,i,1),p=Ws(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=rl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=rl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Bc(n,t){return n.constructor==t.constructor&&n.eq(t)}var or=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Bc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function ea(n){return[Dt.define(t=>new or(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ia(n={}){return[Ye.of(n),Ec,Lc,Rc,Ol.of(!0)]}function na(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Ec=ea({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=na(n);return e&&ol(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){ol(t.state,n)},class:"cm-cursorLayer"});function ol(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Lc=ea({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||na(n)},class:"cm-selectionLayer"}),Rc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var mp=/x/.unicode!=null?"gu":"g";function sa(){return Nc}var Pc=z.line({class:"cm-activeLine"}),Nc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Pc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var yp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Ic=M.define();var on=M.define();var lr=M.define({combine:n=>n.some(t=>t)});function Hc(n){let t=[Fc];return n&&n.fixed===!1&&t.push(lr.of(!0)),t}var Fc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(lr);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(lr)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new hr(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){ar(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){ar(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function ll(n){return Array.isArray(n)?n:[n]}function ar(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var hr=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];ar(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Ic)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=ll(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=ll(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Wc(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function xs(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var _c=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Vc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(xs(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(zc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(xs(t,al(t.state.doc.lines)))},updateSpacer(t,e){let i=xs(e.view,al(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function ra(n={}){return[_e.of(n),Hc(),_c]}function al(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(qc.range(s)))}return F.of(t)});function oa(){return Kc}var $c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=$c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},Uc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):Uc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Cr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Gc(t)}};G.empty=new G(ot.none,[],[],0);var br=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!fa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new xr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||Sr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function aa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function wr(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var xr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ca(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ca(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||Sr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return wr(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function Sr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||Sr(t))}function Gc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new br(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:O,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(O-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,O,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let to=d(ft,nt);Ht=Cr(ft,gt,Ft,0,gt.length,0,H-O,to,to)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)O[_++]=L[I],O[_++]=L[I+1]-H,O[_++]=L[I+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=N[E]+O.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,O,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){O.size=N,O.start=L,O.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(O.size=N,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var ha=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=ha.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}ha.set(t,e)}return e}function Cr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Cr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},kr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var Sp=new B({perNode:!0});var Jc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Jc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Yc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Yc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Xc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Qc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Xc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Qc(n){let t=[[]];for(let e=0;ei.length-e.length)}function pa(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return ga.add(t)}var ga=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Zc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function ma(n,t,e,i=0,s=n.length){let r=new Mr(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Mr=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=tu(t)||De.empty,c=Zc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function tu(n){let t=n.type.prop(ga);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),ua=x(re),da=x(re),oe=x(),En=x(oe),Ar=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Tr=x(),Di=x(Tr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:ua,tagName:x(ua),propertyName:da,attributeName:x(da),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Ar,integer:x(Ar),float:x(Ar),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Tr,separator:x(Tr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var Mp=Dr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Or,Xe=new B;function eu(n){return M.define({combine:n?t=>t.concat(n):void 0})}var iu=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ya(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(iu);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ya(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Rr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ba(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ba(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ba(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var Ca=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(Ca=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Or=navigator.scheduling)===null||Or===void 0)&&Or.isInputPending)?()=>navigator.scheduling.isInputPending():null,nu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=Ca(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,nu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var su=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?ru(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Aa=new B;function ru(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ma(i,n,e)}function Ma(n,t,e){for(let i=n;i;i=i.next){let s=lu(i.node);if(s)return s(Pr.create(t,e,i))}return 0}function ou(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function lu(n){let t=n.type.prop(Aa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>cu(o,!0,1,void 0,r&&!ou(o)?s.from:void 0)}return n.parent==null?au:null}function au(){return 0}var Pr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(hu(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ma(this.context.next,this.base,this.pos)}};function hu(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function fu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function cu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?fu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var uu=200;function Ta(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+uu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Dr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Nr=M.define(),Da=M.define({combine(n){return n.length?[n[0]]:null}});function Er(n){let t=n.facet(Nr);return t.length?t:n.facet(Da)}function Hn(n,t){let e=[du],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Da.of(n)):i?e.push(Nr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Nr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Er(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Er(t.state),s=i!=Er(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)ma(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},du=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Oa=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),pu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Ba=1e4,Ea="()[]{}",La=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ea,maxScanDistance:Ba,renderMatch:yu})}}),gu=z.mark({class:"cm-matchingBracket"}),mu=z.mark({class:"cm-nonmatchingBracket"});function yu(n){let t=[],e=n.matched?gu:mu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function wa(n){let t=[],e=n.facet(La);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),wu=[bu,pu];function Ra(n={}){return[La.of(n),wu]}var xu=new B;function Hr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Fr(n){let t=n.type.prop(xu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Ba,r=i.brackets||Ea,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Hr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return vu(n,t,e,a,f,h,r)}}return ku(n,t,e,o,l.type,s,r)}function vu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function xa(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function Su(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Cu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||zr,mergeTokens:n.mergeTokens!==!1}}function Cu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var va=new WeakMap,Li=class n extends dt{constructor(t){let e=eu(t.languageData),i=Su(t),s,r=new class extends Ti{createParse(o,l,a){return new Wr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Du(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Tu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=va.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Vr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=Pa(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Wr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=Au(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` -`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ra(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var Vr=Object.create(null),Ri=[ot.none],Su=new Dn(Ri),xa=[],va=Object.create(null),Pa=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Pa[n]=Na(Vr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Pa)}resolve(t){return t?this.table[t]||(this.table[t]=Na(this.extra,t)):0}},Cu=new Nn(Vr);function Er(n,t){xa.indexOf(n)>-1||(xa.push(n),console.warn(t))}function Na(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Er(h,`Modifier ${h} used at start of tag`):a.length?Er(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Er(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ot.define({id:Ri.length,name:i,props:[ua({[i]:e})]});return Ri.push(o),o.id}function Au(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Sa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Lp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Mu=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=jr(n.state,e.from);return i.line?Tu(n):i.block?Ou(n):!1};function Ur(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Tu=Ur(Lu,0);var Du=Ur(Ka,0);var Ou=Ur((n,t)=>Ka(n,t,Eu(t)),0);function jr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Bu(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Eu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ka(n,t,e=t.selection.ranges){let i=e.map(r=>jr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Bu(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var _r=mt.define(),Ru=mt.define(),Pu=M.define(),$a=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ua=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet($a),i=t.annotation(_r);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Ya(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Ru);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function ja(n={}){return[Ua,$a.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ga:t.inputType=="historyRedo"?qr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ua,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ga=Vn(0,!1),qr=Vn(1,!1),Nu=Vn(0,!0),Iu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Pu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Hu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Fu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Ja(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],Wu=200;function Ya(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-Wu));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function Vu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function zr(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=zu(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function zu(n,t,e){let i=Ja(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var _u=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||_u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var Za=n=>Qa(n,!it(n)),th=n=>Qa(n,it(n));function eh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var qu=n=>eh(n,!it(n)),Ku=n=>eh(n,it(n));var zp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $u(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;$u(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Uu=n=>It(n,t=>_n(n.state,t,!it(n))),ju=n=>It(n,t=>_n(n.state,t,it(n)));function ih(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var nh=n=>ih(n,!1),sh=n=>ih(n,!0);function rh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomoh(n,!1),Kr=n=>oh(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Gu=n=>It(n,t=>ae(n,t,!0)),Ju=n=>It(n,t=>ae(n,t,!1)),Yu=n=>It(n,t=>ae(n,t,!it(n))),Xu=n=>It(n,t=>ae(n,t,it(n))),Qu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),Zu=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function td(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headtd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function lh(n,t){return kt(n,e=>n.moveByChar(e,t))}var ah=n=>lh(n,!it(n)),hh=n=>lh(n,it(n));function fh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var id=n=>fh(n,!it(n)),nd=n=>fh(n,it(n));var sd=n=>kt(n,t=>_n(n.state,t,!it(n))),rd=n=>kt(n,t=>_n(n.state,t,it(n)));function ch(n,t){return kt(n,e=>n.moveVertically(e,t))}var uh=n=>ch(n,!1),dh=n=>ch(n,!0);function ph(n,t){return kt(n,e=>n.moveVertically(e,t,rh(n).height))}var Ha=n=>ph(n,!1),Fa=n=>ph(n,!0),od=n=>kt(n,t=>ae(n,t,!0)),ld=n=>kt(n,t=>ae(n,t,!1)),ad=n=>kt(n,t=>ae(n,t,!it(n))),hd=n=>kt(n,t=>ae(n,t,it(n))),fd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),cd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),Wa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),Va=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),ud=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),dd=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},pd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function gh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var gd=n=>gh(n,!1),md=n=>gh(n,!0),yd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var mh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&smh(n,!1,!0);var yh=n=>mh(n,!0,!1),bh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),wh=n=>bh(n,!1),bd=n=>bh(n,!0);var wd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),vd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Sd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function xh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Cd=({state:n,dispatch:t})=>xh(n,t,!1),Ad=({state:n,dispatch:t})=>xh(n,t,!0);function vh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Md=({state:n,dispatch:t})=>vh(n,t,!1),Td=({state:n,dispatch:t})=>vh(n,t,!0),Dd=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Od(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var qa=kh(!1),Bd=kh(!0);function kh(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Od(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Ed=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Gr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Ch=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Gr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Rd=[{key:"Ctrl-b",run:Za,shift:ah,preventDefault:!0},{key:"Ctrl-f",run:th,shift:hh},{key:"Ctrl-p",run:nh,shift:uh},{key:"Ctrl-n",run:sh,shift:dh},{key:"Ctrl-a",run:Qu,shift:fd},{key:"Ctrl-e",run:Zu,shift:cd},{key:"Ctrl-d",run:yh},{key:"Ctrl-h",run:$r},{key:"Ctrl-k",run:wd},{key:"Ctrl-Alt-h",run:wh},{key:"Ctrl-o",run:kd},{key:"Ctrl-t",run:Sd},{key:"Ctrl-v",run:Kr}],Pd=[{key:"ArrowLeft",run:Za,shift:ah,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qu,shift:id,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Yu,shift:ad,preventDefault:!0},{key:"ArrowRight",run:th,shift:hh,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Ku,shift:nd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Xu,shift:hd,preventDefault:!0},{key:"ArrowUp",run:nh,shift:uh,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Wa,shift:za},{mac:"Ctrl-ArrowUp",run:Ia,shift:Ha},{key:"ArrowDown",run:sh,shift:dh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Va,shift:_a},{mac:"Ctrl-ArrowDown",run:Kr,shift:Fa},{key:"PageUp",run:Ia,shift:Ha},{key:"PageDown",run:Kr,shift:Fa},{key:"Home",run:Ju,shift:ld,preventDefault:!0},{key:"Mod-Home",run:Wa,shift:za},{key:"End",run:Gu,shift:od,preventDefault:!0},{key:"Mod-End",run:Va,shift:_a},{key:"Enter",run:qa,shift:qa},{key:"Mod-a",run:ud},{key:"Backspace",run:$r,shift:$r,preventDefault:!0},{key:"Delete",run:yh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:wh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:bd,preventDefault:!0},{mac:"Mod-Backspace",run:xd,preventDefault:!0},{mac:"Mod-Delete",run:vd,preventDefault:!0}].concat(Rd.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Ah=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Uu,shift:sd},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:ju,shift:rd},{key:"Alt-ArrowUp",run:Cd},{key:"Shift-Alt-ArrowUp",run:Md},{key:"Alt-ArrowDown",run:Ad},{key:"Shift-Alt-ArrowDown",run:Td},{key:"Mod-Alt-ArrowUp",run:gd},{key:"Mod-Alt-ArrowDown",run:md},{key:"Escape",run:yd},{key:"Mod-Enter",run:Bd},{key:"Alt-l",mac:"Ctrl-l",run:dd},{key:"Mod-i",run:pd,preventDefault:!0},{key:"Mod-[",run:Ch},{key:"Mod-]",run:Sh},{key:"Mod-Alt-\\",run:Ed},{key:"Shift-Mod-k",run:Dd},{key:"Shift-Mod-\\",run:ed},{key:"Mod-/",run:Mu},{key:"Alt-A",run:Du},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ld}].concat(Pd),Mh={key:"Tab",run:Sh,shift:Ch};var Nd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Id={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Th=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Hd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Dh,Dh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Th.test(e))return n.eatWhile(Th),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Nd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Id.propertyIsEnumerable(i)?"atom":"variable"}function Hd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Dh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Bh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Jr(n,t,e){return n.context=new Bh(n.indented,t,e,null,n.context)}function Oh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Eh={name:"go",startState:function(n){return{tokenize:null,context:new Bh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Jr(t,n.column(),"}"):Qt=="["?Jr(t,n.column(),"]"):Qt=="("?Jr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Oh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Lh={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Fd="#e5c07b",Rh="#e06c75",Wd="#56b6c2",Vd="#ffffff",$n="#abb2bf",Xr="#7d8799",zd="#61afef",_d="#98c379",Ph="#d19a66",qd="#c678dd",Kd="#21252b",Nh="#2c313a",Ih="#282c34",Yr="#353a42",$d="#3E4451",Hh="#528bff";var Ud=D.theme({"&":{color:$n,backgroundColor:Ih},".cm-content":{caretColor:Hh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Hh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:$d},".cm-panels":{backgroundColor:Kd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Ih,color:Xr,border:"none"},".cm-activeLineGutter":{backgroundColor:Nh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Yr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Yr,borderBottomColor:Yr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Nh,color:$n}}},{dark:!0}),jd=Ze.define([{tag:y.keyword,color:qd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Rh},{tag:[y.function(y.variableName),y.labelName],color:zd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ph},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Fd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:Wd},{tag:[y.meta,y.comment],color:Xr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Xr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Rh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ph},{tag:[y.processingInstruction,y.string,y.inserted],color:_d},{tag:y.invalid,color:Vd}]),Fh=[Ud,Hn(jd)];import{BaseController as Gd,makeCopyIcon as Jd}from"./controller.js";var Wh="gnomod.toml",Yd=`package main -`,Xd=8e3,Qd=Li.define(Eh),Zd=Li.define(Lh);function Vh(n){return n.endsWith(".toml")?Zd:Qd}var zh=class extends Gd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.mountEl=this.getTarget("code"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.mountEl||!this.outputEl||!this.tabsEl||!t)&&(this.mountEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this._createEditor(),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.clearOutput(),this.on("theme:changed",()=>{this.view.dispatch({effects:this.themeCompartment.reconfigure(this._getCodeEditorTheme())})}))}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===Wh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;i(this.runCode(),!0)}]);this.view=new D({parent:this.mountEl,state:$.create({doc:this.files[0].content,extensions:[na(),ia(),sa(),ta(),ja(),Aa(),ti.of(" "),Ea(),this.langCompartment.of(Vh(this.files[0].name)),this.themeCompartment.of(this._getCodeEditorTheme()),t,An.of([Mh,...Xa,...Ah])]})})}_isDarkMode(){return document.documentElement.getAttribute("data-theme")==="dark"}_getCodeEditorTheme(){return this._isDarkMode()?Fh:Hn(Ta,{fallback:!0})}_getCode(){return this.view.state.doc.toString()}_setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}_setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(Vh(t))})}_resetOutput(t,e=!1,i=!1){for(;this.outputEl.firstChild;)this.outputEl.removeChild(this.outputEl.firstChild);this._setOutput(t,e,i)}_setOutput(t,e=!1,i=!1){let s=document.createElement("div");s.className="b-playground-output-item",i&&s.classList.add("u-color-danger");let r=document.createElement("pre");if(r.className="b-playground-output-item-text",r.textContent=t,s.appendChild(r),e){let o=document.createElement("button");o.className="b-playground-output-copy-btn",o.title="Copy to clipboard",o.setAttribute("aria-label","Copy to clipboard"),o.setAttribute("data-controller","copy"),o.setAttribute("data-action","click->copy#copy"),o.setAttribute("data-copy-text-value",t),o.appendChild(Jd()),s.appendChild(o)}this.outputEl.appendChild(s),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_setErrorOutput(t){this._resetOutput(t,!1,!0)}_switchToFile(t){this.files[this.activeFile].content=this._getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this._setCode(this.files[e].content),this._setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=Yd;t===Wh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" -gno = "0.9"`),this.files[this.activeFile].content=this._getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this._setCode(this.files[this.activeFile].content),this._setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this._getCode(),this._resetOutput("Running...");let t=this._getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setErrorOutput(`Error: ${o.error}`):this._resetOutput(o.result)}catch{this._resetOutput(`Note: Server-side execution not available for scratch pad code. +`);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Na(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var zr=Object.create(null),Ri=[ot.none],Mu=new Dn(Ri),ka=[],Sa=Object.create(null),Ia=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Ia[n]=Ha(zr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Ia)}resolve(t){return t?this.table[t]||(this.table[t]=Ha(this.extra,t)):0}},Tu=new Nn(zr);function Lr(n,t){ka.indexOf(n)>-1||(ka.push(n),console.warn(t))}function Ha(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Lr(h,`Modifier ${h} used at start of tag`):a.length?Lr(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Lr(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=Sa[s];if(r)return r.id;let o=Sa[s]=ot.define({id:Ri.length,name:i,props:[pa({[i]:e})]});return Ri.push(o),o.id}function Du(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Aa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Np={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Ou=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Gr(n.state,e.from);return i.line?Bu(n):i.block?Lu(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Bu=jr(Nu,0);var Eu=jr(Ua,0);var Lu=jr((n,t)=>Ua(n,t,Pu(t)),0);function Gr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ru(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Pu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ua(n,t,e=t.selection.ranges){let i=e.map(r=>Gr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ru(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Iu=mt.define(),Hu=M.define(),ja=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ga=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet(ja),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Qa(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Iu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ja(n={}){return[Ga,ja.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ya:t.inputType=="historyRedo"?Kr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ga,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ya=Vn(0,!1),Kr=Vn(1,!1),Fu=Vn(0,!0),Wu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Hu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Vu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function zu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Xa(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],_u=200;function Qa(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-_u));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function qu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function _r(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Ku(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Ku(n,t,e){let i=Xa(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var $u=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||$u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var eh=n=>th(n,!it(n)),ih=n=>th(n,it(n));function nh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var Uu=n=>nh(n,!it(n)),ju=n=>nh(n,it(n));var Kp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Gu(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Gu(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Ju=n=>It(n,t=>_n(n.state,t,!it(n))),Yu=n=>It(n,t=>_n(n.state,t,it(n)));function sh(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var rh=n=>sh(n,!1),oh=n=>sh(n,!0);function lh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomah(n,!1),$r=n=>ah(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Xu=n=>It(n,t=>ae(n,t,!0)),Qu=n=>It(n,t=>ae(n,t,!1)),Zu=n=>It(n,t=>ae(n,t,!it(n))),td=n=>It(n,t=>ae(n,t,it(n))),ed=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),id=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function nd(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headnd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function hh(n,t){return kt(n,e=>n.moveByChar(e,t))}var fh=n=>hh(n,!it(n)),ch=n=>hh(n,it(n));function uh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var rd=n=>uh(n,!it(n)),od=n=>uh(n,it(n));var ld=n=>kt(n,t=>_n(n.state,t,!it(n))),ad=n=>kt(n,t=>_n(n.state,t,it(n)));function dh(n,t){return kt(n,e=>n.moveVertically(e,t))}var ph=n=>dh(n,!1),gh=n=>dh(n,!0);function mh(n,t){return kt(n,e=>n.moveVertically(e,t,lh(n).height))}var Wa=n=>mh(n,!1),Va=n=>mh(n,!0),hd=n=>kt(n,t=>ae(n,t,!0)),fd=n=>kt(n,t=>ae(n,t,!1)),cd=n=>kt(n,t=>ae(n,t,!it(n))),ud=n=>kt(n,t=>ae(n,t,it(n))),dd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),pd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),qa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),Ka=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),gd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),md=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},yd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function yh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var bd=n=>yh(n,!1),wd=n=>yh(n,!0),xd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var bh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&sbh(n,!1,!0);var wh=n=>bh(n,!0,!1),xh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),vh=n=>xh(n,!1),vd=n=>xh(n,!0);var kd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),Cd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Md=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function kh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Td=({state:n,dispatch:t})=>kh(n,t,!1),Dd=({state:n,dispatch:t})=>kh(n,t,!0);function Sh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Od=({state:n,dispatch:t})=>Sh(n,t,!1),Bd=({state:n,dispatch:t})=>Sh(n,t,!0),Ed=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Ld(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var $a=Ch(!1),Rd=Ch(!0);function Ch(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Ld(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Pd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Jr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Jr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Mh=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Jr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Id=[{key:"Ctrl-b",run:eh,shift:fh,preventDefault:!0},{key:"Ctrl-f",run:ih,shift:ch},{key:"Ctrl-p",run:rh,shift:ph},{key:"Ctrl-n",run:oh,shift:gh},{key:"Ctrl-a",run:ed,shift:dd},{key:"Ctrl-e",run:id,shift:pd},{key:"Ctrl-d",run:wh},{key:"Ctrl-h",run:Ur},{key:"Ctrl-k",run:kd},{key:"Ctrl-Alt-h",run:vh},{key:"Ctrl-o",run:Ad},{key:"Ctrl-t",run:Md},{key:"Ctrl-v",run:$r}],Hd=[{key:"ArrowLeft",run:eh,shift:fh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Uu,shift:rd,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Zu,shift:cd,preventDefault:!0},{key:"ArrowRight",run:ih,shift:ch,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ju,shift:od,preventDefault:!0},{mac:"Cmd-ArrowRight",run:td,shift:ud,preventDefault:!0},{key:"ArrowUp",run:rh,shift:ph,preventDefault:!0},{mac:"Cmd-ArrowUp",run:za,shift:qa},{mac:"Ctrl-ArrowUp",run:Fa,shift:Wa},{key:"ArrowDown",run:oh,shift:gh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:_a,shift:Ka},{mac:"Ctrl-ArrowDown",run:$r,shift:Va},{key:"PageUp",run:Fa,shift:Wa},{key:"PageDown",run:$r,shift:Va},{key:"Home",run:Qu,shift:fd,preventDefault:!0},{key:"Mod-Home",run:za,shift:qa},{key:"End",run:Xu,shift:hd,preventDefault:!0},{key:"Mod-End",run:_a,shift:Ka},{key:"Enter",run:$a,shift:$a},{key:"Mod-a",run:gd},{key:"Backspace",run:Ur,shift:Ur,preventDefault:!0},{key:"Delete",run:wh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:vh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:vd,preventDefault:!0},{mac:"Mod-Backspace",run:Sd,preventDefault:!0},{mac:"Mod-Delete",run:Cd,preventDefault:!0}].concat(Id.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Th=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Ju,shift:ld},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Yu,shift:ad},{key:"Alt-ArrowUp",run:Td},{key:"Shift-Alt-ArrowUp",run:Od},{key:"Alt-ArrowDown",run:Dd},{key:"Shift-Alt-ArrowDown",run:Bd},{key:"Mod-Alt-ArrowUp",run:bd},{key:"Mod-Alt-ArrowDown",run:wd},{key:"Escape",run:xd},{key:"Mod-Enter",run:Rd},{key:"Alt-l",mac:"Ctrl-l",run:md},{key:"Mod-i",run:yd,preventDefault:!0},{key:"Mod-[",run:Mh},{key:"Mod-]",run:Ah},{key:"Mod-Alt-\\",run:Pd},{key:"Shift-Mod-k",run:Ed},{key:"Shift-Mod-\\",run:sd},{key:"Mod-/",run:Ou},{key:"Alt-A",run:Eu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Nd}].concat(Hd),Dh={key:"Tab",run:Ah,shift:Mh};var Fd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Wd={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Oh=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Vd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Bh,Bh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Oh.test(e))return n.eatWhile(Oh),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Fd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Wd.propertyIsEnumerable(i)?"atom":"variable"}function Vd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Bh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Lh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Yr(n,t,e){return n.context=new Lh(n.indented,t,e,null,n.context)}function Eh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Rh={name:"go",startState:function(n){return{tokenize:null,context:new Lh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Yr(t,n.column(),"}"):Qt=="["?Yr(t,n.column(),"]"):Qt=="("?Yr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Eh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Ph={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var zd="#e5c07b",Nh="#e06c75",_d="#56b6c2",qd="#ffffff",$n="#abb2bf",Qr="#7d8799",Kd="#61afef",$d="#98c379",Ih="#d19a66",Ud="#c678dd",jd="#21252b",Hh="#2c313a",Fh="#282c34",Xr="#353a42",Gd="#3E4451",Wh="#528bff";var Jd=D.theme({"&":{color:$n,backgroundColor:Fh},".cm-content":{caretColor:Wh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Wh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Gd},".cm-panels":{backgroundColor:jd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Fh,color:Qr,border:"none"},".cm-activeLineGutter":{backgroundColor:Hh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Xr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Xr,borderBottomColor:Xr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Hh,color:$n}}},{dark:!0}),Yd=Ze.define([{tag:y.keyword,color:Ud},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Nh},{tag:[y.function(y.variableName),y.labelName],color:Kd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ih},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:zd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:_d},{tag:[y.meta,y.comment],color:Qr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Qr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Nh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ih},{tag:[y.processingInstruction,y.string,y.inserted],color:$d},{tag:y.invalid,color:qd}]),Vh=[Jd,Hn(Yd)];var Xd=Li.define(Rh),Qd=Li.define(Ph);function zh(n){return n.endsWith(".toml")?Qd:Xd}function _h(n){return n?Vh:Hn(Oa,{fallback:!0})}function Zr(){return document.documentElement.getAttribute("data-theme")==="dark"}var Un=class{view;langCompartment=new pe;themeCompartment=new pe;constructor(t){let e=[ra(),sa(),oa(),ia(),Ja(),Ta(),ti.of(" "),Ra(),this.langCompartment.of(zh(t.fileName)),this.themeCompartment.of(_h(t.isDarkMode))];if(t.onRun){let i=t.onRun;e.push(An.of([{key:"Mod-Enter",preventDefault:!0,run:()=>(i(),!0)}]))}e.push(An.of([Dh,...Za,...Th])),this.view=new D({parent:t.parent,state:$.create({doc:t.content,extensions:e})})}getCode(){return this.view.state.doc.toString()}setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(zh(t))})}changeTheme(t){this.view.dispatch({effects:this.themeCompartment.reconfigure(_h(t))})}focus(){this.view.focus()}};import{BaseController as Zd,makeCopyIcon as tp}from"./controller.js";var qh="gnomod.toml",ep=`package main +`,ip=8e3,Kh=class extends Zd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.editorEl=this.getTarget("editor"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.editorEl||!this.outputEl||!this.tabsEl||!t)&&(this.editorEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this.editor=new Un({parent:this.editorEl,content:this.files[0].content,fileName:this.files[0].name,isDarkMode:Zr(),onRun:()=>this.runCode()}),this.on("theme:changed",()=>{this.editor.changeTheme(Zr())}),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.clearOutput())}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===qh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;icopy#copy"),o.setAttribute("data-copy-text-value",t),o.appendChild(tp()),s.appendChild(o)}this.outputEl.appendChild(s),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_setErrorOutput(t){this._resetOutput(t,!1,!0)}_switchToFile(t){this.files[this.activeFile].content=this.editor.getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this.editor.setCode(this.files[e].content),this.editor.setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=ep;t===qh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" +gno = "0.9"`),this.files[this.activeFile].content=this.editor.getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this.editor.setCode(this.files[this.activeFile].content),this.editor.setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this.editor.getCode(),this._resetOutput("Running...");let t=this.editor.getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setErrorOutput(`Error: ${o.error}`):this._resetOutput(o.result)}catch{this._resetOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} Files: ${this.files.map(r=>r.name).join(", ")} @@ -26,10 +26,10 @@ To test:`),this._setOutput(" gno test .",!0)}runTests(){this._resetOutput(`Testi To test locally:`),this._setOutput(" gno test .",!0)}formatCode(){this._resetOutput(`Formatting requires server-side gno fmt (coming soon). -To format locally:`),this._setOutput(` gno fmt -w ${this.files[this.activeFile].name}`,!0)}async shareCode(){this.files[this.activeFile].content=this._getCode();let t=this.files.length===1?this.files[0].content:this.files.map(a=>`// --- ${a.name} --- +To format locally:`),this._setOutput(` gno fmt -w ${this.files[this.activeFile].name}`,!0)}async shareCode(){this.files[this.activeFile].content=this.editor.getCode();let t=this.files.length===1?this.files[0].content:this.files.map(a=>`// --- ${a.name} --- ${a.content}`).join(` -`),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>Xd){this._setErrorOutput(`Error: code is too large to share via URL. +`),e=new TextEncoder().encode(t),i=new CompressionStream("deflate-raw"),s=i.writable.getWriter();s.write(e),s.close();let r=await new Response(i.readable).arrayBuffer(),o=Array.from(new Uint8Array(r),a=>String.fromCharCode(a)).join(""),l=`${window.location.origin}/_/play?code=${encodeURIComponent(btoa(o))}&z`;if(l.length>ip){this._setErrorOutput(`Error: code is too large to share via URL. Try reducing the code or splitting into a deployed package.`);return}navigator.clipboard.writeText(l).then(()=>this._resetOutput("Share URL copied to clipboard!")).catch(()=>this._resetOutput(`Share URL: -${l}`))}downloadFiles(){this.files[this.activeFile].content=this._getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([tp(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._resetOutput("// Run code to see output here")}};function tp(n){let t=new TextEncoder,e=[];for(let o of n){if(o.name.includes("/")||o.name.includes("\\")||o.name.includes("..")){console.error(`PlaygroundController: skipped file with unsafe name in tar: "${o.name}"`);continue}let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{zh as PlaygroundController}; +${l}`))}downloadFiles(){this.files[this.activeFile].content=this.editor.getCode(),this.files.length===1?this._triggerDownload(new Blob([this.files[0].content],{type:"text/plain"}),this.files[0].name):this._triggerDownload(new Blob([np(this.files)],{type:"application/x-tar"}),"playground-gno-source-code.tar")}_triggerDownload(t,e){let i=URL.createObjectURL(t),s=document.createElement("a");s.href=i,s.download=e,s.click(),URL.revokeObjectURL(i)}clearOutput(){this._resetOutput("// Run code to see output here")}};function np(n){let t=new TextEncoder,e=[];for(let o of n){if(o.name.includes("/")||o.name.includes("\\")||o.name.includes("..")){console.error(`PlaygroundController: skipped file with unsafe name in tar: "${o.name}"`);continue}let l=t.encode(o.content),a=Math.floor(Date.now()/1e3).toString(8),h=new Uint8Array(512);h.set(t.encode(o.name).slice(0,100),0),h.set(t.encode("0000644\0"),100),h.set(t.encode("0000000\0"),108),h.set(t.encode("0000000\0"),116),h.set(t.encode(`${l.length.toString(8).padStart(11,"0")}\0`),124),h.set(t.encode(`${a.padStart(11,"0")}\0`),136),h.fill(32,148,156),h[156]=48,h.set(t.encode("ustar\0"),257),h.set(t.encode("00"),263);let f=0;for(let u=0;u<512;u++)f+=h[u];h.set(t.encode(`${f.toString(8).padStart(6,"0")}\0 `),148);let c=new Uint8Array(Math.ceil(l.length/512)*512);c.set(l),e.push(h),e.push(c)}e.push(new Uint8Array(1024));let i=e.reduce((o,l)=>o+l.length,0),s=new Uint8Array(i),r=0;for(let o of e)s.set(o,r),r+=o.length;return s}export{Kh as PlaygroundController}; diff --git a/gno.land/pkg/gnoweb/public/js/controller-run.js b/gno.land/pkg/gnoweb/public/js/controller-run.js index ab2a5c96819..886361ef74d 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-run.js +++ b/gno.land/pkg/gnoweb/public/js/controller-run.js @@ -1,4 +1,15 @@ -import{BaseController as d}from"./controller.js";var l=class extends d{connect(){this.pkgPath=this.getValue("pkg-path"),this.pkgAlias=this.getValue("pkg-alias")||"pkg",this.remote=this.getValue("remote"),this.chainId=this.getValue("chain-id"),this.codeEl=this.getTarget("code"),this.keyEl=this.getTarget("key"),this.gasWantedEl=this.getTarget("gasWanted"),this.gasFeeEl=this.getTarget("gasFee"),this.sendEl=this.getTarget("send"),this.dryRunCmdEl=this.getTarget("dryRunCmd"),this.executeCmdEl=this.getTarget("executeCmd"),!(!this.codeEl||!this.dryRunCmdEl||!this.executeCmdEl)&&(this.codeEl.value=this._buildTemplate(),this._setupKeyboardShortcuts(),this._setupInputListeners(),this._updateCommands())}_buildTemplate(){return`package main +var Gn=[],so=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=so[i])e=i+1;else return!0;if(e==t)return!1}}function to(n){return n>=127462&&n<=127487}var io=8205;function ro(n,e,t=!0,i=!0){return(t?oo:jh)(n,e,i)}function oo(n,e,t){if(e==n.length)return e;e&&lo(n.charCodeAt(e))&&ao(n.charCodeAt(e-1))&&e--;let i=_n(n,e);for(e+=no(i);e=0&&to(_n(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function jh(n,e,t){for(;e>0;){let i=oo(n,e-2,t);if(i=56320&&n<57344}function ao(n){return n>=55296&&n<56320}function no(n){return n<65536?1:2}var R=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=Nt(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),Rt.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Nt(this,e,t);let i=[];return this.decompose(e,t,i,0),Rt.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new ut(this),r=new ut(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new ut(this,e)}iterRange(e,t=this.length){return new zi(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qi(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new ce(e):Rt.from(ce.split(e,[]))}},ce=class n extends R{constructor(e,t=Uh(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new Yn(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new n(ho(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Vi(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new n(l,o.length+r.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=Nt(this,e,t);let s=Vi(this.text,Vi(i.text,ho(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new n(s,r):Rt.from(n.split(s,[]),r)}sliceString(e,t=this.length,i=` +`){[e,t]=Nt(this,e,t);let s="";for(let r=0,o=0;r<=t&&oe&&o&&(s+=i),er&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new n(i,s)),i=[],s=-1);return s>-1&&t.push(new n(i,s)),t}},Rt=class n extends R{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=Nt(this,e,t),i.lines=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let f=this.children.slice();return f[s]=a,new n(f,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` +`){[e,t]=Nt(this,e,t);let s="";for(let r=0,o=0;re&&r&&(s+=i),eo&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new ce(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,f=[];function c(d){let p;if(d.lines>r&&d instanceof n)for(let g of d.children)c(g);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ce&&a&&(p=f[f.length-1])instanceof ce&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,f[f.length-1]=new ce(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,f.push(d))}function u(){a!=0&&(l.push(f.length==1?f[0]:n.from(f,h)),h=-1,a=f.length=0)}for(let d of e)c(d);return u(),l.length==1?l[0]:new n(l,t)}};R.empty=new ce([""],0);function Uh(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Vi(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r=t&&(a>i&&(l=l.slice(0,i-s)),s0?1:(e instanceof ce?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ce?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof ce){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ce?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},zi=class{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new ut(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qi=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(R.prototype[Symbol.iterator]=function(){return this.iter()},ut.prototype[Symbol.iterator]=zi.prototype[Symbol.iterator]=qi.prototype[Symbol.iterator]=function(){return this});var Yn=class{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}};function Nt(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Q(n,e,t=!0,i=!0){return ro(n,e,t,i)}function _h(n){return n>=56320&&n<57344}function Gh(n){return n>=55296&&n<56320}function go(n,e){let t=n.charCodeAt(e);if(!Gh(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return _h(i)?(t-55296<<10)+(i-56320)+65536:t}function mo(n){return n<65536?1:2}var Xn=/\r\n?|\n/,le=function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n}(le||(le={})),_e=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-s);r+=l}else{if(i!=le.Simple&&h>=e&&(i==le.TrackDel&&se||i==le.TrackBefore&&se))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i=0&&s<=t&&l>=e)return st?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},se=class n extends _e{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Qn(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return Zn(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length0&&Ze(i,t,r.text),r.forward(f),l+=f}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(f=!1){if(!f&&!s.length)return;ou||c<0||u>t)throw new RangeError(`Invalid change range ${c} to ${u} (in doc of length ${t})`);let p=d?typeof d=="string"?R.of(d.split(i||Xn)):d:R.empty,g=p.length;if(c==u&&g==0)return;co&&te(s,c-o,-1),te(s,u-c,g),Ze(r,s,p),o=u}}return h(e),a(!l),l}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length=0&&t<=0&&t==n[s+1]?n[s]+=e:s>=0&&e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function Ze(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,f,c),s=h,r=f}}}function Zn(n,e,t,i=!1){let s=[],r=i?[]:null,o=new dt(n),l=new dt(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);te(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,f=o.len;for(;f;)if(l.ins==-1){let c=Math.min(f,l.len);h+=c,f-=c,l.forward(c)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}var dt=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?R.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?R.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Lt=class n{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new n(i,s,this.flags)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return w.range(e,t,void 0,void 0,i);let s=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return w.range(this.anchor,s,void 0,void 0,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return w.range(e.anchor,e.head)}static create(e,t,i){return new n(e,t,i)}},w=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Lt.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;ss.from-r.from),t=e.indexOf(i);for(let s=1;sr.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function bo(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var hs=0,M=class n{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=hs++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:fs),!!e.static,e.enables)}of(e){return new Pt([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pt(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Pt(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}};function fs(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}var Pt=class{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=hs++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,f=[];for(let c of this.dependencies)c=="doc"?a=!0:c=="selection"?h=!0:(((t=e[c.id])!==null&&t!==void 0?t:1)&1)==0&&f.push(e[c.id]);return{create(c){return c.values[o]=i(c),1},update(c,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||es(c,f)){let d=i(c);if(l?!fo(d,c.values[o],s):!s(d,c.values[o]))return c.values[o]=d,1}return 0},reconfigure:(c,u)=>{let d,p=u.config.address[r];if(p!=null){let g=ji(u,p);if(this.dependencies.every(m=>m instanceof M?u.facet(m)===c.facet(m):m instanceof Ce?u.field(m,!1)==c.field(m,!1):!0)||(l?fo(d=i(c),g,s):s(d=i(c),g)))return c.values[o]=g,0}else d=i(c);return c.values[o]=d,1}}}};function fo(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let f=0;fi===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Hi).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>{let r=i.facet(Hi),o=s.facet(Hi),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}}init(e){return[this,Hi.of({field:this,create:e})]}get extension(){return this}},ft={lowest:4,low:3,default:2,high:1,highest:0};function ni(n){return e=>new Ki(e,n)}var Ht={highest:ni(ft.highest),high:ni(ft.high),default:ni(ft.default),low:ni(ft.low),lowest:ni(ft.lowest)},Ki=class{constructor(e,t){this.inner=e,this.prec=t}},pt=class n{of(e){return new ri(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},ri=class{constructor(e,t){this.compartment=e,this.inner=t}},$i=class n{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of Yh(e,t,o))u instanceof Ce?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let f=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,g=f&&f[u]||[];if(d.every(m=>m.type==0))if(l[p.id]=a.length<<1|1,fs(g,d))a.push(i.facet(p));else{let m=p.combine(d.map(b=>b.value));a.push(i&&p.compare(m,i.facet(p))?i.facet(p):m)}else{for(let m of d)m.type==0?(l[m.id]=a.length<<1|1,a.push(m.value)):(l[m.id]=h.length<<1,h.push(b=>m.dynamicSlot(b)));l[p.id]=h.length<<1,h.push(m=>Jh(m,p,d))}}let c=h.map(u=>u(l));return new n(e,o,c,l,a,r)}};function Yh(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof ri&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof ri){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Ki)r(o.inner,o.prec);else if(o instanceof Ce)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Pt)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,ft.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,ft.default),i.reduce((o,l)=>o.concat(l))}function si(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function ji(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var wo=M.define(),ts=M.define({combine:n=>n.some(e=>e),static:!0}),xo=M.define({combine:n=>n.length?n[0]:void 0,static:!0}),ko=M.define(),vo=M.define(),So=M.define(),Co=M.define({combine:n=>n.length?n[0]:!1}),me=class{constructor(e,t){this.type=e,this.value=t}static define(){return new is}},is=class{of(e){return new me(this,e)}},ns=class{constructor(e){this.map=e}of(e){return new U(this,e)}},U=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new ns(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}};U.reconfigure=U.define();U.appendConfig=U.define();var X=class n{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&bo(i,t.newLength),r.some(l=>l.type==n.time)||(this.annotations=r.concat(n.time.of(Date.now())))}static create(e,t,i,s,r,o){return new n(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};X.time=me.define();X.userEvent=me.define();X.addToHistory=me.define();X.remote=me.define();function Xh(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof X?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof X?n=r[0]:n=Mo(e,It(r),!1)}return n}function Zh(n){let e=n.startState,t=e.facet(So),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=Ao(i,ss(e,r,n.changes.newLength),!0))}return i==n?n:X.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var ef=[];function It(n){return n==null?ef:Array.isArray(n)?n:[n]}var Se=function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n}(Se||(Se={})),tf=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,rs;try{rs=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function nf(n){if(rs)return rs.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||tf.test(t)))return!0}return!1}function sf(n){return e=>{if(!/\S/.test(e))return Se.Space;if(nf(e))return Se.Word;for(let t=0;t-1)return Se.Word;return Se.Other}}var j=class n{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is(U.reconfigure)?(t=null,i=l.value):l.is(U.appendConfig)&&(t=null,i=It(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=$i.resolve(i,s,this),r=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(ts)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:w.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=It(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:w.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=$i.resolve(e.extensions||[],new Map),i=e.doc instanceof R?e.doc:R.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||Xn)),s=e.selection?e.selection instanceof w?e.selection:w.single(e.selection.anchor,e.selection.head):w.single(0);return bo(s,i.length),t.staticFacet(ts)||(s=s.asSingle()),new n(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(Co)}phrase(e,...t){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(wo))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return sf(t.length?t[0]:"")}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=Q(t,o,!1);if(r(t.slice(a,o))!=Se.Word)break;o=a}for(;ln.length?n[0]:4});j.lineSeparator=xo;j.readOnly=Co;j.phrases=M.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});j.languageData=wo;j.changeFilter=ko;j.transactionFilter=vo;j.transactionExtender=So;pt.reconfigure=U.define();function mt(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}var We=class{eq(e){return this==e}range(e,t=e){return oi.create(e,t,this)}};We.prototype.startSide=We.prototype.endSide=0;We.prototype.point=!1;We.prototype.mapMode=le.TrackDel;function cs(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var oi=class n{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new n(e,t,i)}};function os(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var ls=class n{constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new n(s,r,i,l):null,pos:o}}},F=class n{constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new n(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(os)),this.isEmpty)return t.length?n.of(t):this;let l=new Ui(this,null,-1).goto(0),a=0,h=[],f=new gt;for(;l.value||a=0){let c=t[a++];f.addInner(c.from,c.to,c.value)||h.push(c)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return li.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return li.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),l=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=r),a=co(o,l,i),h=new ct(o,a,r),f=new ct(l,a,r);i.iterGaps((c,u,d)=>uo(h,c,f,u,d,s)),i.empty&&i.length==0&&uo(h,0,f,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=999999999);let r=e.filter(f=>!f.isEmpty&&t.indexOf(f)<0),o=t.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=co(r,o),a=new ct(r,l,0).goto(i),h=new ct(o,l,0).goto(i);for(;;){if(a.to!=h.to||!as(a.active,h.active)||a.point&&(!h.point||!cs(a.point,h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new ct(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),c=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new gt;for(let s of e instanceof oi?[e]:t?rf(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=n.empty;s=s.nextLayer)t=new n(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}};F.empty=new F([],[],null,-1);function rf(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(os);e=i}return n}F.empty.nextLayer=F.empty;var gt=class n{finishChunk(e){this.chunks.push(new ls(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(F.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=F.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function co(n,e,t){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Ui(o,t,i,r));return s.length==1?s[0]:new n(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)Jn(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)Jn(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Jn(this.heap,0)}}};function Jn(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}var ct=class{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=li.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Fi(this.active,e),Fi(this.activeTo,e),Fi(this.activeRank,e),this.minActive=po(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t0;)t++;Wi(this.active,t,i),Wi(this.activeTo,t,s),Wi(this.activeRank,t,r),e&&Wi(e,t,this.cursor.from),this.minActive=po(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&Fi(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}};function uo(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e,h=!!r.boundChange;for(let f=!1;;){let c=n.to+a-t.to,u=c||n.endSide-t.endSide,d=u<0?n.to+a:t.to,p=Math.min(d,o);if(n.point||t.point?(n.point&&t.point&&cs(n.point,t.point)&&as(n.activeForPoint(n.to),t.activeForPoint(t.to))||r.comparePoint(l,p,n.point,t.point),f=!1):(f&&r.boundChange(l),p>l&&!as(n.active,t.active)&&r.compareRange(l,p,n.active,t.active),h&&po)break;l=d,u<=0&&n.next(),u>=0&&t.next()}}function as(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;i--)n[i+1]=n[i];n[e]=t}function po(n,e){let t=-1,i=1e9;for(let s=0;s=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=Q(n,s)}return i===!0?-1:n.length}var us="\u037C",Do=typeof Symbol>"u"?"__"+us:Symbol.for(us),ds=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Oo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},ye=class{constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let f=[],c=/^@(\w+)\b/.exec(o[0]),u=c&&c[1]=="keyframes";if(c&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(g=>o.map(m=>g.replace(/&/,m))).reduce((g,m)=>g.concat(m)),p,a);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,f,u)}else p!=null&&f.push(d.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(f.length||u)&&a.push((i&&!c&&!h?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=Oo[Do]||1;return Oo[Do]=e+1,us+e.toString(36)}static mount(e,t,i){let s=e[ds],r=i&&i.nonce;s?r&&s.setNonce(r):s=new ps(e,r),s.mount(Array.isArray(t)?t:[t],e)}},Bo=new Map,ps=class{constructor(e,t){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=Bo.get(i);if(r)return e[ds]=r;this.sheet=new s.CSSStyleSheet,Bo.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[ds]=this}mount(e,t){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},of=typeof navigator<"u"&&/Mac/.test(navigator.platform),lf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Y=0;Y<10;Y++)Ge[48+Y]=Ge[96+Y]=String(Y);var Y;for(Y=1;Y<=24;Y++)Ge[Y+111]="F"+Y;var Y;for(Y=65;Y<=90;Y++)Ge[Y]=String.fromCharCode(Y+32),Ft[Y]=String.fromCharCode(Y);var Y;for(_i in Ge)Ft.hasOwnProperty(_i)||(Ft[_i]=Ge[_i]);var _i;function Eo(n){var e=of&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||lf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Ft:Ge)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}var re=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},ks=typeof document<"u"?document:{documentElement:{style:{}}},vs=/Edge\/(\d+)/.exec(re.userAgent),hl=/MSIE \d/.test(re.userAgent),Ss=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(re.userAgent),vn=!!(hl||Ss||vs),Lo=!vn&&/gecko\/(\d+)/i.test(re.userAgent),gs=!vn&&/Chrome\/(\d+)/.exec(re.userAgent),Ro="webkitFontSmoothing"in ks.documentElement.style,Cs=!vn&&/Apple Computer/.test(re.vendor),Po=Cs&&(/Mobile\/\w+/.test(re.userAgent)||re.maxTouchPoints>2),S={mac:Po||/Mac/.test(re.platform),windows:/Win/.test(re.platform),linux:/Linux|X11/.test(re.platform),ie:vn,ie_version:hl?ks.documentMode||6:Ss?+Ss[1]:vs?+vs[1]:0,gecko:Lo,gecko_version:Lo?+(/Firefox\/(\d+)/.exec(re.userAgent)||[0,0])[1]:0,chrome:!!gs,chrome_version:gs?+gs[1]:0,ios:Po,android:/Android\b/.test(re.userAgent),webkit:Ro,webkit_version:Ro?+(/\bAppleWebKit\/(\d+)/.exec(re.userAgent)||[0,0])[1]:0,safari:Cs,safari_version:Cs?+(/\bVersion\/(\d+(\.\d+)?)/.exec(re.userAgent)||[0,0])[1]:0,tabSize:ks.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function fr(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var ln=Object.create(null);function cr(n,e,t){if(n==e)return!0;n||(n=ln),e||(e=ln);let i=Object.keys(n),s=Object.keys(e);if(i.length-(t&&i.indexOf(t)>-1?1:0)!=s.length-(t&&s.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(s.indexOf(r)==-1||n[r]!==e[r]))return!1;return!0}function af(n,e){for(let t=n.attributes.length-1;t>=0;t--){let i=n.attributes[t].name;e[i]==null&&n.removeAttribute(i)}for(let t in e){let i=e[t];t=="style"?n.style.cssText=i:n.getAttribute(t)!=i&&n.setAttribute(t,i)}}function Io(n,e,t){let i=!1;if(e)for(let s in e)t&&s in t||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(i=!0,s=="style"?n.style.cssText=t[s]:n.setAttribute(s,t[s]));return i}function hf(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new vt(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=fl(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new vt(e,i,s,t,e.widget||null,!0)}static line(e){return new wi(e)}static set(e,t=!1){return F.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};z.none=F.empty;var bi=class n extends z{constructor(e){let{start:t,end:i}=fl(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?fr(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||ln}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&cr(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};bi.prototype.point=!1;var wi=class n extends z{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&cr(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};wi.prototype.mapMode=le.TrackBefore;wi.prototype.point=!0;var vt=class n extends z{constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?le.TrackBefore:le.TrackAfter:le.TrackDel}get type(){return this.startSide!=this.endSide?ee.WidgetRange:this.startSide<=0?ee.WidgetBefore:ee.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&ff(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};vt.prototype.point=!0;function fl(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function ff(n,e){return n==e||!!(n&&e&&n.compare(e))}function Kt(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}var an=class n extends We{constructor(e,t){super(),this.tagName=e,this.attributes=t}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&cr(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||ln)}static set(e,t=!1){return F.of(e,t)}};an.prototype.startSide=an.prototype.endSide=-1;function xi(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function As(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function fi(n,e){if(!e.anchorNode)return!1;try{return As(n,e.anchorNode)}catch{return!1}}function tn(n){return n.nodeType==3?ki(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function ci(n,e,t,i){return t?No(n,e,t,i,-1)||No(n,e,t,i,1):!1}function it(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function hn(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function No(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:Xe(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=it(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?Xe(n):0}else return!1}}function Xe(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function fn(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}function cf(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function cl(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function uf(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let f=n,c=!1;f&&!c;)if(f.nodeType==1){let u,d=f==a.body,p=1,g=1;if(d)u=cf(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(c=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:p,scaleY:g}=cl(f,C)),u={left:C.left,right:C.left+f.clientWidth*p,top:C.top,bottom:C.top+f.clientHeight*g}}let m=0,b=0;if(s=="nearest")e.top0&&e.bottom>u.bottom+b&&(b=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(b=e.bottom-u.bottom+o,t<0&&e.top-b0&&e.right>u.right+m&&(m=e.right-u.right+r)):e.right>u.right-r&&(m=e.right-u.right+r,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function ul(n,e=!0){let t=n.ownerDocument,i=null,s=null;for(let r=n.parentNode;r&&!(r==t.body||(!e||i)&&s);)if(r.nodeType==1)!s&&r.scrollHeight>r.clientHeight&&(s=r),e&&!i&&r.scrollWidth>r.clientWidth&&(i=r),r=r.assignedSlot||r.parentNode;else if(r.nodeType==11)r=r.host;else break;return{x:i,y:s}}var Ms=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?Xe(t):0),i,Math.min(e.focusOffset,i?Xe(i):0))}set(e,t,i,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=s}},bt=null;S.safari&&S.safari_version>=26&&(bt=!1);function dl(n){if(n.setActive)return n.setActive();if(bt)return n.focus(bt);let e=[];for(let t=n;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(n.focus(bt==null?{get preventScroll(){return bt={preventScroll:!0},!0}}:void 0),!bt){bt=!1;for(let t=0;tMath.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function gl(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=Xe(t)}else if(t.parentNode&&!hn(t))i=it(t),t=t.parentNode;else return null}}function ml(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.fromt:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}};function wl(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;g-=3)if(Ve[g+1]==-d){let m=Ve[g+2],b=m&2?s:m&4?m&1?r:s:0;b&&(V[c]=V[Ve[g]]=b),l=g;break}}else{if(Ve.length==189)break;Ve[l++]=c,Ve[l++]=u,Ve[l++]=a}else if((p=V[c])==2||p==1){let g=p==s;a=g?0:1;for(let m=l-3;m>=0;m-=3){let b=Ve[m+2];if(b&2)break;if(g)Ve[m+2]|=2;else{if(b&4)break;Ve[m+2]|=4}}}}}function xf(n,e,t,i){for(let s=0,r=i;s<=t.length;s++){let o=s?t[s-1].to:n,l=sa;)p==m&&(p=t[--g].from,m=g?t[g-1].to:n),V[--p]=d;a=f}else r=h,a++}}}function Ds(n,e,t,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=e,h=0;aa&&o.push(new xe(a,g.from,d));let m=g.direction==St!=!(d%2);Os(n,m?i+1:i,s,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==t||(f?V[p]!=l:V[p]==l))break;p++}u?Ds(n,a,p,i+1,s,u,o):ae;){let f=!0,c=!1;if(!h||a>r[h-1].to){let g=V[a-1];g!=l&&(f=!1,c=g==16)}let u=!f&&l==1?[]:null,d=f?i:i+1,p=a;e:for(;;)if(h&&p==r[h-1].to){if(c)break e;let g=r[--h];if(!f)for(let m=g.from,b=h;;){if(m==e)break e;if(b&&r[b-1].to==m)m=r[--b].from;else{if(V[m-1]==l)break e;break}}if(u)u.push(g);else{g.toV.length;)V[V.length]=256;let i=[],s=e==St?0:1;return Os(n,s,s,t,0,n.length,i),i}function xl(n){return[new xe(0,n,0)]}var kl="";function vf(n,e,t,i,s){var r;let o=i.head-n.from,l=xe.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(s,t);if(o==h){let u=l+=s?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!s,t),h=a.side(s,t)}let f=Q(n.text,o,a.forward(s,t));(fa.to)&&(f=h),kl=n.text.slice(Math.min(o,f),Math.max(o,f));let c=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return c&&f==h&&c.level+(s?0:1)n.some(e=>e)}),Ol=M.define({combine:n=>n.some(e=>e)}),Bl=M.define(),ui=class n{constructor(e,t,i,s,r,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(w.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Gi=U.define({map:(n,e)=>n.map(e)}),El=U.define();function Me(n,e,t){let i=n.facet(Al);i.length?i[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var Je=M.define({combine:n=>n.length?n[0]:!0}),Cf=0,Vt=M.define({combine(n){return n.filter((e,t)=>{for(let i=0;i{let a=[];return o&&a.push(Sn.of(h=>{let f=h.plugin(l);return f?o(f):z.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return n.define((i,s)=>new e(i,s),t)}},di=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(Me(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){Me(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){Me(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Ll=M.define(),gr=M.define(),Sn=M.define(),Rl=M.define(),mr=M.define(),vi=M.define(),Pl=M.define();function Fo(n,e){let t=n.state.facet(Pl);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(n):r),s=[];return F.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,f=o-e.from,c=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=Sf(e.text,h,f)),a>0&&c.length&&(p=c[c.length-1]).to==h&&p.direction==d)p.to=f,c=p.inner;else{let g={from:h,to:f,direction:d,inner:[]};c.push(g),c=g.inner}}}}),s}var Il=M.define();function Nl(n){let e=0,t=0,i=0,s=0;for(let r of n.state.facet(Il)){let o=r(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:i,bottom:s}}var ai=M.define(),Te=class n{constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toAs.push(new Te(r,o,l,a))),this.changedRanges=s}static create(e,t,i){return new n(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Af=[],_=class{constructor(e,t,i=0){this.dom=e,this.length=t,this.flags=i,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Af}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&af(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let i=t;for(let s of this.children){if(s==e)return i;i+=s.length+s.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t){return null}domPosFor(e,t){let i=it(this.dom),s=this.length?e>0:t>0;return new ze(this.parent.dom,i+(s?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Ut)return e;return null}static get(e){return e.cmTile}},jt=class extends _{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,i=null,s,r=e?.node==t?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,s=i?i.nextSibling:t.firstChild,r&&s!=l.dom&&(r.written=!0),l.dom.parentNode==t)for(;s&&s!=l.dom;)s=Wo(s);else t.insertBefore(l.dom,s);i=l.dom}for(s=i?i.nextSibling:t.firstChild,r&&s&&(r.written=!0);s;)s=Wo(s);this.length=o}};function Wo(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var Ut=class extends jt{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=_.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],i=this,s=0,r=0;;)if(s==i.children.length){if(!t.length)return;i=i.parent,i.breakAfter&&r++,s=t.pop()}else{let o=i.children[s++];if(o instanceof Ye)t.push(s),i=o,s=0;else{let l=r+o.length,a=e(o,r);if(a!==void 0)return a;r=l+o.breakAfter}}}resolveBlock(e,t){let i,s=-1,r,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(e>=a&&e<=h){if(l.isWidget()&&t>=-1&&t<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(ae||e==a&&(t>1?l.length:l.covers(-1)))&&(!r||!l.isWidget()&&r.isWidget())&&(r=l,o=e-a)}}),!i&&!r)throw new Error("No tile at position "+e);return i&&t<0||!r?{tile:i,offset:s}:{tile:r,offset:o}}},Ye=class n extends jt{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let i=new n(t||document.createElement(e.tagName),e);return t||(i.flags|=4),i}},_t=class n extends jt{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,i){let s=new n(t||document.createElement("div"),e);return(!t||!i)&&(s.flags|=4),s}get domAttrs(){return this.attrs}resolveInline(e,t,i){let s=null,r=-1,o=null,l=-1;function a(f,c){for(let u=0,d=0;u=c&&(p.isComposite()?a(p,c-d):(!o||o.isHidden&&(t>0||i&&Tf(o,p)))&&(g>c||p.flags&32)?(o=p,l=c-d):(di&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?S.chrome||S.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return S.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?fn(a,o<0):a||null}static of(e,t){let i=new n(t||document.createTextNode(e),e);return t||(i.flags|=2),i}},Ct=class n extends _{constructor(e,t,i,s){super(e,t,s),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,i){let s=this.widget.coordsAt(this.dom,e,t);if(s)return s;if(i)return fn(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let r=this.dom.getClientRects(),o=null;if(!r.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?r.length-1:0;o=r[a],!(e>0?a==0:a==r.length-1||o.top0;)if(s.isComposite())if(o){if(!e)break;i&&i.break(),e--,o=!1}else if(r==s.children.length){if(!e&&!l.length)break;i&&i.leave(s),o=!!s.breakAfter,{tile:s,index:r}=l.pop(),r++}else{let a=s.children[r],h=a.breakAfter;(t>0?a.length<=e:a.length=0;l--){let a=t.marks[l],h=s.lastChild;if(h instanceof ae&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(ms(a.dom)),s=h;else{if(this.cache.reused.get(a)){let c=_.get(a.dom);c&&c.setDOM(ms(a.dom))}let f=ae.of(a.mark,a.dom);s.append(f),s=f}this.cache.reused.set(a,2)}let r=_.get(e.text);r&&this.cache.reused.set(r,2);let o=new wt(e.text,e.text.nodeValue);o.flags|=8,s.append(o)}addInlineWidget(e,t,i){let s=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);s||this.flushBuffer();let r=this.ensureMarks(t,i);!s&&!(e.flags&16)&&r.append(this.getBuffer(1)),r.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,i){this.flushBuffer(),this.ensureMarks(t,i).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var i;e||(e=Hl);let s=_t.start(e,t||((i=this.cache.find(_t))===null||i===void 0?void 0:i.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=s)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var i;let s=this.curLine;for(let r=e.length-1;r>=0;r--){let o=e[r],l;if(t>0&&(l=s.lastChild)&&l instanceof ae&&l.mark.eq(o))s=l,t--;else{let a=ae.of(o,(i=this.cache.find(ae,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);s.append(a),s=a,t=0}}return s}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Vo(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(S.ios&&Vo(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(ys,0,32)||new Ct(ys.toDOM(),0,ys,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=new Ls(e.from,e.to,e.value,e.rank),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-t.rank||this.wrappers[i-1].to-t.to)<0;)i--;this.wrappers.splice(i,0,t)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let i of this.wrappers){let s=t.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||e===void 0?void 0:e.dom);t.append(r),t=r}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),i=this.cache.find(Gt,void 0,1);return i&&(i.flags=t),i||new Gt(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Ps=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:s,lineBreak:r,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=s;let l=this.textOff=Math.min(e,s.length);return r?null:s.slice(0,l)}let t=Math.min(this.text.length,this.textOff+e),i=this.text.slice(this.textOff,t);return this.textOff=t,i}},un=[Ct,_t,wt,ae,Gt,Ye,Ut];for(let n=0;n[]),this.index=un.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,i=this.buckets[t];i.length<6?i.push(e):i[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,i=2){let s=e.bucket,r=this.buckets[s],o=this.index[s];for(let l=r.length-1;l>=0;l--){let a=(l+o)%r.length,h=r[a];if((!t||t(h))&&!this.reused.has(h))return r.splice(a,1),a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let i=t&&this.getCompositionContext(t.text);for(let s=0,r=0,o=0;;){let l=os){let h=a-s;this.preserve(h,!o,!l),s=a,r+=h}if(!l)break;t&&l.fromA<=t.range.fromA&&l.toA>=t.range.toA?(this.forward(l.fromA,t.range.fromA,t.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof ae&&s.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?s.length&&(s.length=r=0):o instanceof ae&&(s.shift(),r=Math.min(r,s.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let i=null,s=this.builder,r=0,o=F.spans(this.decorations,e,t,{point:(l,a,h,f,c,u)=>{if(h instanceof vt){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(r=f.length,c>f.length)s.continueWidget(a-l);else{let d=h.widget||(h.block?nt.block:nt.inline),p=Df(h),g=this.cache.findWidget(d,a-l,p)||Ct.of(d,this.view,a-l,p);h.block?(h.startSide>0&&s.addLineStartIfNotCovered(i),s.addBlockWidget(g)):(s.ensureLine(i),s.addInlineWidget(g,f,c))}i=null}else i=Of(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,f)=>{for(let c=l;cr,this.openMarks=o}forward(e,t,i=1){t-e<=10?this.old.advance(t-e,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(e){let t=[],i=null;for(let s=e.parentNode;;s=s.parentNode){let r=_.get(s);if(s==this.view.contentDOM)break;r instanceof ae?t.push(r):r?.isLine()?i=r:r instanceof Ye||(s.nodeName=="DIV"&&!i&&s!=this.view.contentDOM?i=new _t(s,Hl):i||t.push(ae.of(new bi({tagName:s.nodeName.toLowerCase(),attributes:hf(s)}),s)))}return{line:i,marks:t}}};function Vo(n,e){let t=i=>{for(let s of i.children)if((e?s.isText():s.length)||t(s))return!0;return!1};return t(n)}function Df(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var Hl={class:"cm-line"};function Of(n,e){let t=e.spec.attributes,i=e.spec.class;return!t&&!i||(n||(n={class:"cm-line"}),t&&fr(t,n),i&&(n.class+=" "+i)),n}function Bf(n){let e=[];for(let t=n.parents.length;t>1;t--){let i=t==n.parents.length?n.tile:n.parents[t].tile;i instanceof ae&&e.push(i.mark)}return e}function ms(n){let e=_.get(n);return e&&e.setDOM(n.cloneNode()),n}var nt=class extends kt{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};nt.inline=new nt("span");nt.block=new nt("div");var ys=new class extends kt{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},dn=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=z.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Ut(e,e.contentDOM),this.updateInner([new Te(0,0,0,e.state.doc.length)],null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:f,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!Ff(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?Lf(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){let{from:f,to:c}=this.hasComposition;i=new Te(f,c,e.changes.mapPos(f,-1),e.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(S.ie||S.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=If(o,this.decorations,e.changes);a.length&&(i=Te.extendWithRanges(i,a));let h=Nf(l,this.blockWrappers,e.changes);return h.length&&(i=Te.extendWithRanges(i,h)),r&&!i.some(f=>f.fromA<=r.range.fromA&&f.toA>=r.range.toA)&&(i=r.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(t||e.length){let o=this.tile,l=new Ns(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&_.get(t.text)&&l.cache.reused.set(_.get(t.text),2),this.tile=l.run(e,t),Hs(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let r=S.chrome||S.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(r),r&&(r.written||i.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let s=[];if(this.view.viewport.from||this.view.viewport.to-1)&&fi(i,this.view.observer.selectionRange)&&!(s&&i.contains(s));if(!(r||t||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,f;if(a.empty?f=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(f=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),S.gecko&&a.empty&&!this.hasComposition&&Ef(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=f=new ze(u,0),l=!0}let c=this.view.observer.selectionRange;(l||!c.focusNode||(!ci(h.node,h.offset,c.anchorNode,c.anchorOffset)||!ci(f.node,f.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,a))&&(this.view.observer.ignore(()=>{S.android&&S.chrome&&i.contains(c.focusNode)&&Hf(c.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=xi(this.view.root);if(u)if(a.empty){if(S.gecko){let d=Rf(h.node,h.offset);if(d&&d!=3){let p=(d==1?gl:ml)(h.node,h.offset);p&&(h=new ze(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(f.node,f.offset)}catch{}}else{let d=document.createRange();a.anchor>a.head&&([h,f]=[f,h]),d.setEnd(f.node,f.offset),d.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(d)}o&&this.view.root.activeElement==i&&(i.blur(),s&&s.focus())}),this.view.observer.setSelectionRange(h,f)),this.impreciseAnchor=h.precise?null:new ze(c.anchorNode,c.anchorOffset),this.impreciseHead=f.precise?null:new ze(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&ci(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=xi(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let f=this.domAtPos(t.head+t.assoc,t.assoc);i.collapse(f.node,f.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let c=e.observer.selectionRange;e.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=t.from&&i.collapse(s,r)}posFromDOM(e,t){let i=this.tile.nearest(e);if(!i)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let s=i.posAtStart;if(i.isComposite()){let r;if(e==i.dom)r=i.dom.childNodes[t];else{let o=Xe(e)==0?0:t==0?-1:1;for(;;){let l=e.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?r=e:r=e.nextSibling}if(r==i.dom.firstChild)return s;for(;r&&!_.get(r);)r=r.nextSibling;if(!r)return s+i.length;for(let o=0,l=s;;o++){let a=i.children[o];if(a.dom==r)return l;l+=a.length+a.breakAfter}}else return i.isText()?e==i.dom?s+t:s+(t?i.length:0):s}domAtPos(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.domPosFor(e,t):i.domIn(s,t)}inlineDOMNearPos(e,t){let i,s=-1,r=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,f)=>{if(h.isWidget()){if(h.flags&32&&f>=e)return!0;h.flags&16&&(r=!0)}else{let c=f+h.length;if(f<=e&&(i=h,s=e-f,r=c=e&&!o&&(o=h,l=e-f,a=f>e),f>e&&o)return!0}}),!i&&!o?this.domAtPos(e,t):(r&&o?i=null:a&&i&&(o=null),i&&t<0||!o?i.domIn(s,t):o.domIn(l,t))}coordsAt(e,t){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof pi?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t)}lineAt(e,t){let{tile:i}=this.tile.resolveBlock(e,t);return i.isLine()?i:null}coordsForChar(e){let{tile:t,offset:i}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function s(r,o){if(r.isComposite())for(let l of r.children){if(l.length>=o){let a=s(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(r.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==$.LTR,h=0,f=(c,u,d)=>{for(let p=0;ps);p++){let g=c.children[p],m=u+g.length,b=g.dom.getBoundingClientRect(),{height:C}=b;if(d&&!p&&(h+=b.top-d.top),g instanceof Ye)m>i&&f(g,u,b);else if(u>=i&&(h>0&&t.push(-h),t.push(C+h),h=0,o)){let T=g.dom.lastChild,P=T?tn(T):[];if(P.length){let A=P[P.length-1],v=a?A.right-b.left:b.right-A.left;v>l&&(l=v,this.minWidth=r,this.minWidthFrom=u,this.minWidthTo=m)}}d&&p==c.children.length-1&&(h+=d.bottom-b.bottom),u=m+g.breakAfter}};return f(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?$.RTL:$.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let f=tn(h.dom);if(f.length!=1)return;l+=f[0].width,a=f[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(e)return e;let t=document.createElement("div"),i,s,r;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=tn(t.firstChild)[0];i=t.getBoundingClientRect().height,s=o&&o.width?o.width/27:7,r=o&&o.height?o.height:i,t.remove()}),{lineHeight:i,charWidth:s,textHeight:r}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.view.state.doc.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(z.replace({widget:new pi(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return z.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Sn).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(mr).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=i,t.push(F.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof r=="function"?r(this.view):r)}scrollIntoView(e){var t;if(e.isSnapshot){let f=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=f.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let f of this.view.state.facet(Bl))try{if(f(this.view,e.range,e))return!0}catch(c){Me(this.view.state,c,"scroll handler")}let{range:i}=e,s=this.coordsAt(i.head,(t=i.assoc)!==null&&t!==void 0?t:i.empty?0:i.head>i.anchor?-1:1),r;if(!s)return;!i.empty&&(r=this.coordsAt(i.anchor,i.anchor>i.head?-1:1))&&(s={left:Math.min(s.left,r.left),top:Math.min(s.top,r.top),right:Math.max(s.right,r.right),bottom:Math.max(s.bottom,r.bottom)});let o=Nl(this.view),l={left:s.left-o.left,top:s.top-o.top,right:s.right+o.right,bottom:s.bottom+o.bottom},{offsetWidth:a,offsetHeight:h}=this.view.scrollDOM;if(uf(this.view.scrollDOM,l,i.head1&&(s.top>window.pageYOffset+window.visualViewport.offsetTop+window.visualViewport.height||s.bottomi.isWidget()||i.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Hs(this.tile)}};function Hs(n,e){let t=e?.get(n);if(t!=1){t==null&&n.destroy();for(let i of n.children)Hs(i,e)}}function Ef(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Fl(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=gl(t.focusNode,t.focusOffset),s=ml(t.focusNode,t.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=_.get(s.node);if(!l||l.isText()&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=_.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function Lf(n,e,t){let i=Fl(n,t);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc;return{range:new Te(a.mapPos(r),a.mapPos(o),r,o),text:s}}function Rf(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{ie.from&&(t=!0)}),t}var pi=class extends kt{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Wf(n,e,t=1){let i=n.charCategorizer(e),s=n.doc.lineAt(e),r=e-s.from;if(s.length==0)return w.cursor(e);r==0?t=1:r==s.length&&(t=-1);let o=r,l=r;t<0?o=Q(s.text,r,!1):l=Q(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=Q(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-t.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+To(o,r,n.state.tabSize)}function Ws(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>e)break;if(!(r.toe)return r;(!s||r.type==ee.Text&&(s.type!=r.type||(t<0?r.frome)))&&(s=r)}}return s||i}return i}function zf(n,e,t,i){let s=Ws(n,e.head,e.assoc||-1),r=!i||s.type!=ee.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:t==(l==$.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return w.cursor(a,t?-1:1)}return w.cursor(t?s.to:s.from,t?-1:1)}function zo(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=vf(s,r,o,l,t),f=kl;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;f=` +`,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!t)}if(a){if(!a(f))return l}else{if(!i)return h;a=i(f)}l=h}}function qf(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==Se.Space&&(s=o),s==o}}function Kf(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return w.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),f=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-p.from))),l=(r<0?p.top:p.bottom)+f}let c=a.left+o,u=n.viewState.heightOracle.textHeight>>1,d=i??u;for(let p=0;;p+=u){let g=l+(d+p)*r,m=Vs(n,{x:c,y:g},!1,r);if(t?g>a.bottom:gl:C{if(e>r&&es(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:w.cursor(i,in.viewState.docHeight)return new we(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==ee.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+r:u.bottom>=a+r))break}let c=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+c:h.top-c}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(t)return null;if(h.type==ee.Text){let c=Vf(n,s,h,o,l);return new we(c,c==h.from?1:-1)}}if(h.type!=ee.Text)return a<(h.top+h.bottom)/2?new we(h.from,1):new we(h.to,-1);let f=n.docView.lineAt(h.from,2);return(!f||f.length!=h.length)&&(f=n.docView.lineAt(h.from,-2)),new zs(n,o,l,n.textDirectionAt(h.from)).scanTile(f,h.from)}var zs=class{constructor(e,t,i,s){this.view=e,this.x=t,this.y=i,this.baseDir=s,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+s.from>1;t:if(r.has(p)){let m=i+Math.floor(Math.random()*d);for(let b=0;b1)){if(b.bottomthis.y)(!a||a.top>b.top)&&(a=b),C=-1;else{let T=b.left>this.x?this.x-b.left:b.right(d+d+p)/3)return this.y=l.bottom-1,this.scan(e,t);if(a&&a.top<(d+p+p)/3)return this.y=a.top+1,this.scan(e,t)}let u=(o?this.dirAt(e[h],1):this.baseDir)==$.LTR;return{i:h,after:this.x>(c.left+c.right)/2==u}}scanText(e,t){let i=[];for(let r=0;r{let o=i[r]-t,l=i[r+1]-t;return ki(e.dom,o,l).getClientRects()});return s.after?new we(i[s.i+1],-1):new we(i[s.i],1)}scanTile(e,t){if(!e.length)return new we(t,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,t);if(l.isComposite())return this.scanTile(l,t)}let i=[t];for(let l=0,a=t;l{let a=e.children[l];return a.flags&48?null:(a.dom.nodeType==1?a.dom:ki(a.dom,0,a.length)).getClientRects()}),r=e.children[s.i],o=i[s.i];return r.isText()?this.scanText(r,o):r.isComposite()?this.scanTile(r,o):s.after?new we(i[s.i+1],-1):new we(o,1)}},Wt="\uFFFF",qs=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(j.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Wt}readRange(e,t){if(!e)return this;let i=e.parentNode;for(let s=e;;){this.findPointBefore(i,s);let r=this.text.length;this.readNode(s);let o=_.get(s),l=s.nextSibling;if(l==t){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=_.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:hn(s))||hn(l)&&(s.nodeName!="BR"||o?.isWidget())&&this.text.length>r)&&!jf(l,t)&&this.lineBreak(),s=l}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){let t=_.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+($f(e,i.node,i.offset)?t:0))}};function $f(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Vl(e.docView.tile,t,i,0))){let a=r||o?[]:_f(e),h=new qs(a,e);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Gf(a,this.bounds.from)}else{let a=e.observer.selectionRange,h=r&&r.node==a.focusNode&&r.offset==a.focusOffset||!As(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),f=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!As(e.contentDOM,a.anchorNode)?l.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),c=e.viewport;if((S.ios||S.chrome)&&l.main.empty&&h!=f&&(c.from>0||c.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(w.range(f,h));else if(e.lineWrapping&&f==h&&!(l.main.empty&&l.main.head==h)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(h,-1),d=0;u&&(d=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=w.create([w.cursor(h,d)])}else this.newSel=w.single(f,h)}}};function Vl(n,e,t,i){if(n.isComposite()){let s=-1,r=-1,o=-1,l=-1;for(let a=0,h=i,f=i;at)return Vl(c,e,t,h);if(u>=e&&s==-1&&(s=a,r=h),h>t&&c.dom.parentNode==n.dom){o=a,l=f;break}f=u,h=u+c.breakAfter}return{from:r,to:l<0?i+n.length:l,startDOM:(s?n.children[s-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function zl(n,e){let t,{newSel:i}=e,{state:s}=n,r=s.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,h=r.from,f=null;(o===8||S.android&&e.text.length=l&&r.to<=a&&(e.typeOver||c!=e.text)&&c.slice(0,r.from-l)==e.text.slice(0,r.from-l)&&c.slice(r.to-l)==e.text.slice(u=e.text.length-(c.length-(r.to-l)))?t={from:r.from,to:r.to,insert:R.of(e.text.slice(r.from-l,u).split(Wt))}:(d=ql(c,e.text,h-l,f))&&(S.chrome&&o==13&&d.toB==d.from+2&&e.text.slice(d.from,d.toB)==Wt+Wt&&d.toB--,t={from:l+d.from,to:l+d.toA,insert:R.of(e.text.slice(d.from,d.toB).split(Wt))})}else i&&(!n.hasFocus&&s.facet(Je)||gn(i,r))&&(i=null);if(!t&&!i)return!1;if((S.mac||S.android)&&t&&t.from==t.to&&t.from==r.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:t.from,to:t.to,insert:R.of([t.insert.toString().replace("."," ")])}):s.doc.lineAt(r.from).toDate.now()-50?t={from:r.from,to:r.to,insert:s.toText(n.inputState.insertingText)}:S.chrome&&t&&t.from==t.to&&t.from==r.head&&t.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=w.single(i.main.anchor-1,i.main.head-1)),t={from:r.from,to:r.to,insert:R.of([" "])}),t)return yr(n,t,i,o);if(i&&!gn(i,r)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=Wl(s.facet(vi).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function yr(n,e,t,i=-1){if(S.ios&&n.inputState.flushIOSKey(e))return!0;let s=n.state.selection.main;if(S.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&n.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&$t(n.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.lengths.head)&&$t(n.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&$t(n.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Uf(n,e,t));return n.state.facet(Ml).some(a=>a(n,e.from,e.to,r,l))||n.dispatch(l()),!0}function Uf(n,e,t){let i,s=n.state,r=s.selection.main,o=-1;if(e.from==e.to&&e.fromr.to){let a=e.fromc(n)),h,a);e.from==f&&(o=f)}if(o>-1)i={changes:e,selection:w.cursor(e.from+e.insert.length,-1)};else if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=r.frome.to?s.sliceDoc(e.to,r.to):"";i=s.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=r.to+10&&e.to>=r.to-10){let f=n.state.sliceDoc(e.from,e.to),c,u=t&&Fl(n,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);c={from:u.from,to:u.to-p}}else c=n.state.doc.lineAt(r.head);let d=r.to-e.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let g=p.to-d,m=g-f.length;if(n.state.sliceDoc(m,g)!=f||g>=c.from&&m<=c.to)return{range:p};let b=s.changes({from:m,to:g,insert:e.insert}),C=p.to-r.to;return{changes:b,range:h?w.range(Math.max(0,h.anchor+C),Math.max(0,h.head+C)):p.map(b)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function ql(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function _f(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new pn(t,i)),(s!=t||r!=i)&&e.push(new pn(s,r))),e}function Gf(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?w.single(t+e,i+e):null}function gn(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var $s=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,S.safari&&e.contentDOM.addEventListener("input",()=>null),S.gecko&&ac(e.contentDOM.ownerDocument)}handleEvent(e){!tc(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,t);for(let s of i.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=Jf(e),i=this.handlers,s=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&$l.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return S.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&!e.shiftKey&&((t=Kl.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||Yf.indexOf(e.key)>-1&&e.ctrlKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from0?!0:S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function qo(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(s){Me(t.state,s)}}}function Jf(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&t(l).handlers.push(qo(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(qo(i.value,a))}}for(let i in Oe)t(i).handlers.push(Oe[i]);for(let i in he)t(i).observers.push(he[i]);return e}var Kl=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Yf="dthko",$l=[16,17,18,20,91,92,224,225],Ji=6;function Yi(n){return Math.max(0,n)*.7+8}function Xf(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var js=class{constructor(e,t,i,s){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=ul(e.contentDOM),this.atoms=e.state.facet(vi).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(j.allowMultipleSelections)&&Qf(e,t),this.dragging=ec(e,t)&&_l(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Xf(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Nl(this.view);e.clientX-a.left<=s+Ji?t=-Yi(s-e.clientX):e.clientX+a.right>=o-Ji&&(t=Yi(e.clientX-o)),e.clientY-a.top<=r+Ji?i=-Yi(r-e.clientY):e.clientY+a.bottom>=l-Ji&&(i=Yi(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,i=Wl(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function Qf(n,e){let t=n.state.facet(vl);return t.length?t[0](e):S.mac?e.metaKey:e.ctrlKey}function Zf(n,e){let t=n.state.facet(Sl);return t.length?t[0](e):S.mac?!e.altKey:!e.ctrlKey}function ec(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=xi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function tc(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=_.get(t))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(e))return!1;return!0}var Oe=Object.create(null),he=Object.create(null),jl=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function ic(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),Ul(n,t.value)},50)}function Cn(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}function Ul(n,e){e=Cn(n.state,dr,e);let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(Us!=null&&t.selection.ranges.every(a=>a.empty)&&Us==r.toString()){let a=-1;i=t.changeByRange(h=>{let f=t.doc.lineAt(h.from);if(f.from==a)return{range:h};a=f.from;let c=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:f.from,insert:c},range:w.cursor(h.from+c.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:w.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}he.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};he.wheel=he.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Oe.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);he.touchstart=(n,e)=>{let t=n.inputState,i=e.targetTouches[0];t.lastTouchTime=Date.now(),i&&(t.lastTouchX=i.clientX,t.lastTouchY=i.clientY),t.setSelectionOrigin("select.pointer")};he.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Oe.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(Cl))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=sc(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new js(n,e,t,i)),i&&n.observer.ignore(()=>{dl(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function Ko(n,e,t,i){if(i==1)return w.cursor(e,t);if(i==2)return Wf(n.state,e,t);{let s=n.docView.lineAt(e,t),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return lDate.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(jo+1)%3:1}function sc(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),i=_l(e),s=n.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),s=s.map(r.changes))},get(r,o,l){let a=n.posAndSideAtCoords({x:r.clientX,y:r.clientY},!1),h,f=Ko(n,a.pos,a.assoc,i);if(t.pos!=a.pos&&!o){let c=Ko(n,t.pos,t.assoc,i),u=Math.min(c.from,f.from),d=Math.max(c.to,f.to);f=u1&&(h=rc(s,a.pos))?h:l?s.addRange(f):w.create([f])}}}function rc(n,e){for(let t=0;t=e)return w.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Oe.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let s=n.docView.tile.nearest(e.target);if(s&&s.isWidget()){let r=s.posAtStart,o=r+s.length;(r>=t.to||o<=t.from)&&(t=w.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Cn(n.state,pr,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Oe.dragend=n=>(n.inputState.draggedContent=null,!1);function _o(n,e,t,i){if(t=Cn(n.state,dr,t),!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&Zf(n,e)?{from:r.from,to:r.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Oe.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),s=0,r=()=>{++s==t.length&&_o(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return _o(n,e,i,!0),!0}return!1};Oe.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=jl?null:e.clipboardData;return t?(Ul(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(ic(n),!1)};function oc(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function lc(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cn(n,pr,e.join(n.lineBreak)),ranges:t,linewise:i}}var Us=null;Oe.copy=Oe.cut=(n,e)=>{if(!fi(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:i,linewise:s}=lc(n.state);if(!t&&!s)return!1;Us=s?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=jl?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(oc(n,t),!1)};var Gl=me.define();function Jl(n,e){let t=[];for(let i of n.facet(Tl)){let s=i(n,e);s&&t.push(s)}return t.length?n.update({effects:t,annotations:Gl.of(!0)}):null}function Yl(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Jl(n.state,e);t?n.dispatch(t):n.update([])}},10)}he.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Yl(n)};he.blur=n=>{n.observer.clearSelectionRange(),Yl(n)};he.compositionstart=he.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};he.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,S.chrome&&S.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};he.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Oe.beforeinput=(n,e)=>{var t,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let r=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return yr(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(S.chrome&&S.android&&(s=Kl.find(r=>r.inputType==e.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return S.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),S.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>he.compositionend(n,e),20),!1};var Go=new Set;function ac(n){Go.has(n)||(Go.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var Jo=["pre-wrap","normal","pre-line","break-spaces"],Jt=!1;function Yo(){Jt=!1}var _s=class{constructor(e){this.lineWrapping=e,this.doc=R.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Jo.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,a=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=l||Math.abs(i-this.charWidth)>.1;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>nn&&(Jt=!0),this.height=e)}replace(e,t,i){return n.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:f,toB:c}=s[l],u=r.lineAt(a,K.ByPosNoHeight,i.setDoc(t),0,0),d=u.to>=h?u:r.lineAt(h,K.ByPosNoHeight,i,0,0);for(c+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,f=s[l-1].fromB,l--,ar*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.lineAt(0,K.ByPos,i,s,r))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setMeasuredHeight(s),this.outdated=!1,this}toString(){return`block(${this.length})`}},be=class n extends yn{constructor(e,t,i){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(e,t){return new Ae(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof n||s instanceof tt&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof tt?s=new n(s.length,this.height,this.spaceAbove):s.height=this.height,this.outdated||(s.outdated=!1),s):ue.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setMeasuredHeight(s):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},tt=class n extends ue{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,r=s-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,s);if(t.lineWrapping){let h=s+(e0){let r=i[i.length-1];r instanceof n?i[i.length-1]=new n(r.length+s):i.push(null,new n(s-1))}if(e>0){let r=i[0];r instanceof n?i[0]=new n(e+r.length):i.unshift(new n(e-1),null)}return ue.of(i)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1;for(s.from>t&&o.push(new n(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let f=e.doc.lineAt(l).length;o.length&&o.push(null);let c=s.heights[s.index++],u=0;c<0&&(u=-c,c=s.heights[s.index++]),a==-1?a=c:Math.abs(c-a)>=nn&&(a=-2);let d=new be(f,c,u);d.outdated=!1,o.push(d),l+=f+1}l<=r&&o.push(null,new n(r-l).updateHeight(e,l));let h=ue.of(o);return(a<0||Math.abs(h.height-this.height)>=nn||Math.abs(a-this.heightMetrics(e,t).perLine)>=nn)&&(Jt=!0),mn(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Js=class extends ue{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return el))return h;let f=t==K.ByPosNoHeight?K.ByPosNoHeight:K.ByPos;return a?h.join(this.right.lineAt(l,f,i,o,l)):this.left.lineAt(l,f,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,K.ByPos,i,s,r);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Xo(r,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e2*t.size||t.size>2*e.size?ue.of(this.break?[e,null,t]:[e,t]):(this.left=mn(this.left,e),this.right=mn(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Xo(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof tt&&(i=n[e+1])instanceof tt&&n.splice(e-1,3,new tt(t.length+1+i.length))}var fc=5,Ys=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof be?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new be(i-this.pos,-1,0)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=fc)&&this.addLineDeco(s,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new be(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let i=new tt(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof be)return e;let t=new be(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof be)&&!this.isCovered?this.nodes.push(new be(0,-1,0)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&c.overflow!="visible"){let u=f.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=c.position=="absolute"||c.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function dc(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function pc(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var mi=class{constructor(e,t,i,s){this.from=e,this.to=t,this.size=i,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof s!="function"&&s.class=="cm-lineWrapping");this.heightOracle=new _s(i),this.stateDeco=Zo(t),this.heightMap=ue.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle.setDoc(t.doc),[new Te(0,0,0,t.doc.length)]);for(let s=0;s<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());s++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=z.set(this.lineGaps.map(s=>s.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new zt(r,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Qo:new Zs(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(hi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=Zo(this.state);let s=e.changedRanges,r=Te.extendWithRanges(s,cc(i,this.stateDeco,e?e.changes:se.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Yo(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||Jt)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Ol)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?$.RTL:$.LTR;let o=this.heightOracle.mustRefreshForWrapping(r)||this.mustMeasureContent==="refresh",l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,f=0;if(l.width&&l.height){let{scaleX:A,scaleY:v}=cl(t,l);(A>.005&&Math.abs(this.scaleX-A)>.005||v>.005&&Math.abs(this.scaleY-v)>.005)&&(this.scaleX=A,this.scaleY=v,h|=16,o=a=!0)}let c=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=u)&&(this.paddingTop=c,this.paddingBottom=u,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let d=ul(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=pl(this.scrollParent||e.win);let g=(this.printing?pc:uc)(t,this.paddingTop),m=g.top-this.pixelViewport.top,b=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let C=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(C!=this.inView&&(this.inView=C,C&&(a=!0)),!this.inView&&!this.scrollTarget&&!dc(e.dom))return 0;let T=l.width;if((this.contentDOMWidth!=T||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),a){let A=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(A)&&(o=!0),o||s.lineWrapping&&Math.abs(T-this.contentDOMWidth)>s.charWidth){let{lineHeight:v,charWidth:k,textHeight:I}=e.docView.measureTextSize();o=v>0&&s.refresh(r,v,k,I,Math.max(5,T/k),A),o&&(e.docView.minWidth=0,h|=16)}m>0&&b>0?f=Math.max(m,b):m<0&&b<0&&(f=Math.min(m,b)),Yo();for(let v of this.viewports){let k=v.from==this.viewport.from?A:e.docView.measureVisibleLineHeights(v);this.heightMap=(o?ue.empty().applyChanges(this.stateDeco,R.empty,this.heightOracle,[new Te(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new Gs(v.from,k))}Jt&&(h|=2)}let P=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return P&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||P)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new zt(s.lineAt(o-i*1e3,K.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,K.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=s.lineAt(h,K.ByPos,r,0,0),u;t.y=="center"?u=(c.top+c.bottom)/2-f/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=$.LTR&&!i)return[];let l=[],a=(f,c,u,d)=>{if(c-ff&&bb.from>=u.from&&b.to<=u.to&&Math.abs(b.from-f)b.fromC));if(!m){if(cT.from<=c&&T.to>=c)){let T=t.moveToLineBoundary(w.cursor(c),!1,!0).head;T>f&&(c=T)}let b=this.gapSize(u,f,c,d),C=i||b<2e6?b:2e6;m=new mi(f,c,b,C)}l.push(m)},h=f=>{if(f.length2e6)for(let v of e)v.from>=f.from&&v.fromf.from&&a(f.from,d,f,c),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let i=[];F.spans(t,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||hi(this.heightMap.lineAt(e,K.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||hi(this.heightMap.lineAt(this.scaler.fromDOM(e),K.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return(this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top)*this.scaleY}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return hi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},zt=class{constructor(e,t){this.from=e,this.to=t}};function gc(n,e,t){let i=[],s=n,r=0;return F.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}function Qi(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}function mc(n,e){for(let t of n)if(e(t))return t}var Qo={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function Zo(n){let e=n.facet(Sn).filter(i=>typeof i!="function"),t=n.facet(mr).filter(i=>typeof i!="function");return t.length&&e.push(F.join(t)),e}var Zs=class n{constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,K.ByPos,e,0,0).top,f=t.lineAt(a,K.ByPos,e,0,0).bottom;return s+=f-h,{from:l,to:a,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=tt.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}};function hi(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new Ae(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(s=>hi(s,e)):n._content)}var Zi=M.define({combine:n=>n.join(" ")}),er=M.define({combine:n=>n.indexOf(!0)>-1}),tr=ye.newName(),Xl=ye.newName(),Ql=ye.newName(),Zl={"&light":"."+Xl,"&dark":"."+Ql};function ir(n,e,t){return new ye(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}var yc=ir("."+tr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Zl),bc={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},ws=S.ie&&S.ie_version<=11,nr=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Ms,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(S.ie&&S.ie_version<=11||S.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&S.android&&e.constructor.EDIT_CONTEXT!==!1&&!(S.chrome&&S.chrome_version<126)&&(this.editContext=new sr(e),e.state.facet(Je)&&(e.contentDOM.editContext=this.editContext.editContext)),ws&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(Je)?i.root.activeElement!=this.dom:!fi(this.dom,s))return;let r=s.anchorNode&&i.docView.tile.nearest(s.anchorNode);if(r&&r.isWidget()&&r.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!i.state.selection.main.empty&&s.focusNode&&ci(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=xi(e.root);if(!t)return!1;let i=S.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&wc(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let s=fi(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&$t(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&fi(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new Ks(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,s=zl(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!gn(this.view.state.selection,t.newSel.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let i=el(t,e.previousSibling||e.target.previousSibling,-1),s=el(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Je)!=e.state.facet(Je)&&(e.view.contentDOM.editContext=e.state.facet(Je)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function el(n,e,t){for(;e;){let i=_.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function tl(n,e){let t=e.startContainer,i=e.startOffset,s=e.endContainer,r=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return ci(o.node,o.offset,s,r)&&([t,i,s,r]=[s,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}}function wc(n,e){if(e.getComposedRanges){let s=e.getComposedRanges(n.root)[0];if(s)return tl(n,s)}let t=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?tl(n,t):null}var sr=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let s=e.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let f=ql(e.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!f){let u=w.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));gn(u,s)||e.dispatch({selection:u,userEvent:"select"});return}let c={from:f.from+l,to:f.toA+l,insert:R.of(i.text.slice(f.from,f.toB).split(` +`))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!e.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);yr(e,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(t.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,t+=f,this.to+=f;return}else s=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}t+=f}),s&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||df(e.parent)||document,this.viewState=new bn(this,e.state||j.create(e)),e.scrollTo&&e.scrollTo.is(Gi)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Vt).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new nr(this),this.inputState=new $s(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof X?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let u of e){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation(Gl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet(j.phrases)!=this.state.facet(j.phrases))return this.setState(r);s=cn.create(this,r,e),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(t||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Me(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!zl(this,f)&&h.force&&$t(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,e),this.plugins=e.facet(Vt).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Vt),i=e.state.facet(Vt);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(pl(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Me(this.state,p),il}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,t?t.flags|=a:t=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Bs))l(t)}get themeClasses(){return tr+" "+(this.state.facet(er)?Ql:Xl)+" "+this.state.facet(Zi)}updateAttrs(){let e=nl(this,Ll,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Je)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),nl(this,gr,t);let i=this.observer.ignore(()=>{let s=Io(this.contentDOM,this.contentAttrs,t),r=Io(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let e=this.state.facet(n.cspNonce);ye.mount(this.root,this.styleModules.concat(yc).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;ti.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return bs(this,e,zo(this,e,t,i))}moveByGroup(e,t){return bs(this,e,zo(this,e,t,i=>qf(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return w.cursor(r.side(t,s)+e.from,r.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,i=!0){return zf(this,e,t,i)}moveVertically(e,t,i){return bs(this,e,Kf(this,e,t,i))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let i=Vs(this,e,t);return i&&i.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Vs(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[xe.find(r,e-s.from,-1,t)];return fn(i,o.dir==$.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Dl)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>xc)return xl(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||wl(r.isolates,i=Fo(this,e))))return r.order;i||(i=Fo(this,e));let s=kf(e.text,t,i);return this.bidiCache.push(new wn(e.from,e.to,t,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||S.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{dl(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var i,s,r,o;return Gi.of(new ui(typeof e=="number"?w.cursor(e):e,(i=t.y)!==null&&i!==void 0?i:"nearest",(s=t.x)!==null&&s!==void 0?s:"nearest",(r=t.yMargin)!==null&&r!==void 0?r:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return De.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return De.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=ye.newName(),s=[Zi.of(i),ai.of(ir(`.${i}`,e))];return t&&t.dark&&s.push(er.of(!0)),s}static baseTheme(e){return Ht.lowest(ai.of(ir("."+tr,e,Zl)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&_.get(i)||_.get(e);return((t=s?.root)===null||t===void 0?void 0:t.view)||null}};D.styleModule=ai;D.inputHandler=Ml;D.clipboardInputFilter=dr;D.clipboardOutputFilter=pr;D.scrollHandler=Bl;D.focusChangeEffect=Tl;D.perLineTextDirection=Dl;D.exceptionSink=Al;D.updateListener=Bs;D.editable=Je;D.mouseSelectionStyle=Cl;D.dragMovesSelection=Sl;D.clickAddsSelectionRange=vl;D.decorations=Sn;D.blockWrappers=Rl;D.outerDecorations=mr;D.atomicRanges=vi;D.bidiIsolatedRanges=Pl;D.cursorScrollMargin=M.define({combine:n=>{let e=5,t=5;for(let i of n)typeof i=="number"?e=t=i:{x:e,y:t}=i;return{x:e,y:t}}});D.scrollMargins=Il;D.darkTheme=er;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=gr;D.editorAttributes=Ll;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var xc=4096,il={},wn=class n{constructor(e,t,i,s,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:$.LTR;for(let r=Math.max(0,e.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&fr(o,t)}return t}var kc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function vc(n,e){let t=n.split(/-(?!$)/),i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),t}var et=null,Ac=4e3;function Mc(n,e=kc){let t=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>vc(b,e));for(let b=1;b{let P=et={view:T,prefix:C,scope:o};return setTimeout(()=>{et==P&&(et=null)},Ac),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=t[h]||(t[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,rr))}let a=o[e]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}var rr=null;function Tc(n,e,t,i){rr=e;let s=Eo(e),r=go(s,0),o=mo(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;et&&et.view==t&&et.scope==i&&(l=et.prefix+" ",$l.indexOf(e.keyCode)<0&&(h=!0,et=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(t)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+en(s,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(S.windows&&e.ctrlKey&&e.altKey)&&!(S.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=Ge[e.keyCode])&&p!=s?(u(d[l+en(p,e,!0)])||e.shiftKey&&(g=Ft[e.keyCode])!=s&&g!=p&&u(d[l+en(g,e,!1)]))&&(a=!0):o&&e.shiftKey&&u(d[l+en(s,e,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&e.stopPropagation(),rr=null,a}var xt=class n{constructor(e,t,i,s,r){this.className=e,this.left=t,this.top=i,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=ea(e);return[new n(t,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Dc(e,t,i)}};function ea(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==$.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function rl(n,e,t,i){let s=n.coordsAtPos(e,t*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Dc(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),s=Math.min(t.to,n.viewport.to),r=n.textDirection==$.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=ea(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Ws(n,i,1),p=Ws(n,s,-1),g=d.type==ee.Text?d:null,m=p.type==ee.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=rl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=rl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(t.from,t.to,g));{let A=g?T(t.from,null,g):P(d,!1),v=m?T(null,t.to,m):P(p,!0),k=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&N.from=ne)break;pe>q&&E(Math.max(Z,q),A==null&&Z<=O,Math.min(pe,ne),v==null&&pe>=H,He.dir)}if(q=fe.to+1,q>=ne)break}return W.length==0&&E(O,A==null,H,v==null,n.textDirection),{top:I,bottom:L,horizontal:W}}function P(A,v){let k=l.top+(v?A.top:A.bottom);return{top:k,bottom:k,horizontal:[]}}}function Oc(n,e){return n.constructor==e.constructor&&n.eq(e)}var or=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(sn)!=e.state.facet(sn)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(sn);for(;t!Oc(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[i].constructor&&s.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function ta(n){return[De.define(e=>new or(e,n)),sn.of(n)]}var Yt=M.define({combine(n){return mt(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function ia(n={}){return[Yt.of(n),Bc,Ec,Lc,Ol.of(!0)]}function na(n){return n.startState.facet(Yt)!=n.state.facet(Yt)}var Bc=ta({above:!0,markers(n){let{state:e}=n,t=e.facet(Yt),i=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty||t.drawRangeCursor&&!(r&&S.ios&&t.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xt.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=na(n);return t&&ol(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){ol(e.state,n)},class:"cm-cursorLayer"});function ol(n,e){e.style.animationDuration=n.facet(Yt).cursorBlinkRate+"ms"}var Ec=ta({above:!1,markers(n){let e=[],{main:t,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xt.forRange(n,"cm-selectionBackground",s))e.push(r);if(S.ios&&!t.empty&&n.state.facet(Yt).iosSelectionHandles){for(let s of xt.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(t.from,1)))e.push(s);for(let s of xt.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(t.to,1)))e.push(s)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||na(n)},class:"cm-selectionLayer"}),Lc=Ht.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var cp=/x/.unicode!=null?"gu":"g";function sa(){return Pc}var Rc=z.line({class:"cm-activeLine"}),Pc=De.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>e&&(t.push(Rc.range(s.from)),e=s.from)}return z.set(t)}},{decorations:n=>n.decorations});var up=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Be=class extends We{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Be.prototype.elementClass="";Be.prototype.toDOM=void 0;Be.prototype.mapMode=le.TrackBefore;Be.prototype.startSide=Be.prototype.endSide=-1;Be.prototype.point=!0;var rn=M.define(),Ic=M.define();var on=M.define();var lr=M.define({combine:n=>n.some(e=>e)});function Nc(n){let e=[Hc];return n&&n.fixed===!1&&e.push(lr.of(!0)),e}var Hc=De.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(e=>new xn(n,e)),this.fixed=!n.state.facet(lr);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(lr)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new hr(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==ee.Text&&o){ar(t,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==ee.Text){ar(t,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(on),t=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let i=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==$.LTR?{left:i,right:s}:{right:i,left:s}})});function ll(n){return Array.isArray(n)?n:[n]}function ar(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var hr=class{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=F.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:s}=this,r=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let l=new kn(e,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,i);this.height=t.bottom,this.i++}line(e,t,i){let s=[];ar(this.cursor,s,t.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),s=i?[i]:null;for(let r of e.state.facet(Ic)){let o=r(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},xn=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,s)&&s.preventDefault()});this.markers=ll(t.markers(e)),t.initialSpacer&&(this.spacer=new kn(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=ll(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!F.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},kn=class{constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Fc(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Be{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function xs(n,e){return n.state.facet(qt).formatNumber(e,n.state)}var zc=on.compute([qt],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Wc)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new yi(xs(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,i)=>{for(let s of e.state.facet(Vc)){let r=s(e,t,i);if(r)return r}return null},lineMarkerChange:e=>e.startState.facet(qt)!=e.state.facet(qt),initialSpacer(e){return new yi(xs(e,al(e.state.doc.lines)))},updateSpacer(e,t){let i=xs(t.view,al(t.view.state.doc.lines));return i==e.number?e:new yi(i)},domEventHandlers:n.facet(qt).domEventHandlers,side:"before"}));function ra(n={}){return[qt.of(n),Nc(),zc]}function al(n){let e=9;for(;e{let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>t&&(t=s,e.push(qc.range(s)))}return F.of(e)});function oa(){return Kc}var $c=0,Si=class{constructor(e,t){this.from=e,this.to=t}},B=class{constructor(e={}){this.id=$c++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=oe.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var At=class{constructor(e,t,i,s=!1){this.tree=e,this.overlay=t,this.parser=i,this.bracketed=s}static get(e){return e&&e.props&&e.props[B.mounted.id]}},jc=Object.create(null),oe=class n{constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):jc,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new n(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(B.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}};oe.none=new oe("",Object.create(null),0,8);var Dn=class n{constructor(e){this.types=e;for(let t=0;t0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Cr(oe.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new n(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new n(oe.none,t,i,s)))}static build(e){return _c(e)}};G.empty=new G(oe.none,[],[],0);var br=class n{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},st=class n{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return oe.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function Ci(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?l.length:-1;e!=h;e+=t){let f=l[e],c=a[e]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=At.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!fa(s,i,c,c+f.length))){if(f instanceof st){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,t,i-c,s);if(d>-1)return new Ai(new xr(o,f,e,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||Sr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=At.get(f))&&!d.overlay)return new n(d.tree,c,e,o);let p=new n(f,c,e,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?f.children.length-1:0,t,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=At.get(this._tree))&&s.overlay){let r=e-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((t>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function aa(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function wr(n,e,t=e.length-1){for(let i=n;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}var xr=class{constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new G(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ca(n){if(!n.length)return null;let e=0,t=n[0];for(let r=1;rt.from||o.to=e){let l=new qe(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,e,t,!1))}}return s?ca(s):i}var Mi=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~J.EnterBracketed,e instanceof qe)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof qe?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof st||!l.type.isAnonymous||Sr(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return wr(this._tree,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}};function Sr(n){return n.children.some(e=>e instanceof st||!e.type.isAnonymous||Sr(e))}function _c(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new br(t,t.length):t,a=i.types,h=0,f=0;function c(A,v,k,I,L,W){let{id:E,start:O,end:H,size:N}=l,q=f,ne=h;if(N<0)if(l.next(),N==-1){let Ue=r[E];k.push(Ue),I.push(O-A);return}else if(N==-3){h=E;return}else if(N==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${N}`);let fe=a[E],He,Z,pe=O-A;if(H-O<=s&&(Z=m(l.pos-v,L))){let Ue=new Uint16Array(Z.size-Z.skip),ge=l.pos-Z.size,Fe=Ue.length;for(;l.pos>ge;)Fe=b(Z.start,Ue,Fe);He=new st(Ue,H-Z.start,i),pe=Z.start-A}else{let Ue=l.pos-N;l.next();let ge=[],Fe=[],ht=E>=o?E:-1,Et=0,Ni=H;for(;l.pos>Ue;)ht>=0&&l.id==ht&&l.size>=0?(l.end<=Ni-s&&(p(ge,Fe,O,Et,l.end,Ni,ht,q,ne),Et=ge.length,Ni=l.end),l.next()):W>2500?u(O,Ue,ge,Fe):c(O,Ue,ge,Fe,ht,W+1);if(ht>=0&&Et>0&&Et-1&&Et>0){let eo=d(fe,ne);He=Cr(fe,ge,Fe,0,ge.length,0,H-O,eo,eo)}else He=g(fe,ge,Fe,H-O,q-H,ne)}k.push(He),I.push(pe)}function u(A,v,k,I){let L=[],W=0,E=-1;for(;l.pos>v;){let{id:O,start:H,end:N,size:q}=l;if(q>4)l.next();else{if(E>-1&&H=0;N-=3)O[q++]=L[N],O[q++]=L[N+1]-H,O[q++]=L[N+2]-H,O[q++]=q;k.push(new st(O,L[2]-H,i)),I.push(H-A)}}function d(A,v){return(k,I,L)=>{let W=0,E=k.length-1,O,H;if(E>=0&&(O=k[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=I[E]+O.length+H)}return g(A,k,I,L,W,v)}}function p(A,v,k,I,L,W,E,O,H){let N=[],q=[];for(;A.length>I;)N.push(A.pop()),q.push(v.pop()+k-L);A.push(g(i.types[E],N,q,W-L,O-W,H)),v.push(L-k)}function g(A,v,k,I,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,v,k,I,E)}function m(A,v){let k=l.fork(),I=0,L=0,W=0,E=k.end-s,O={size:0,start:0,skip:0};e:for(let H=k.pos-A;k.pos>H;){let N=k.size;if(k.id==v&&N>=0){O.size=I,O.start=L,O.skip=W,W+=4,I+=4,k.next();continue}let q=k.pos-N;if(N<0||q=o?4:0,fe=k.start;for(k.next();k.pos>q;){if(k.size<0)if(k.size==-3||k.size==-4)ne+=4;else break e;else k.id>=o&&(ne+=4);k.next()}L=fe,I+=N,W+=ne}return(v<0||I==A)&&(O.size=I,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,v,k){let{id:I,start:L,end:W,size:E}=l;if(l.next(),E>=0&&I4){let H=l.pos-(E-4);for(;l.pos>H;)k=b(A,v,k)}v[--k]=O,v[--k]=W-A,v[--k]=L-A,v[--k]=I}else E==-3?h=I:E==-4&&(f=I);return k}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(e=n.length)!==null&&e!==void 0?e:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var ha=new WeakMap;function Tn(n,e){if(!n.isAnonymous||e instanceof st||e.type!=n)return 1;let t=ha.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof G)){t=1;break}t+=Tn(n,i)}ha.set(e,t)}return t}function Cr(n,e,t,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;v+=k}if(T==P+1){if(v>f){let k=p[P];d(k.children,k.positions,0,k.children.length,g[P]+C);continue}c.push(p[P])}else{let k=g[T-1]+p[T-1].length-A;c.push(Cr(n,p,g,P,T,A,k,null,a))}u.push(A+C-r)}}return d(e,t,i,s,0),(l||a)(c,u,o)}var Mt=class n{constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new n(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}},vr=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var bp=new B({perNode:!0});var Gc=0,Ee=class n{constructor(e,t,i,s){this.name=e,this.set=t,this.base=i,this.modified=s,this.id=Gc++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),t)for(let r of t.set)s.set.push(r);return s}static defineModifier(e){let t=new Rn(e);return i=>i.modified.indexOf(t)>-1?i:Rn.get(i.base||i,i.modified.concat(t).sort((s,r)=>s.id-r.id))}},Jc=0,Rn=class n{constructor(e){this.name=e,this.instances=[],this.id=Jc++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Yc(t,l.modified));if(i)return i;let s=[],r=new Ee(e.name,s,e,t);for(let l of t)l.instances.push(r);let o=Xc(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Yc(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function Xc(n){let e=[[]];for(let t=0;ti.length-t.length)}function pa(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new Dt(i,o,a>0?r.slice(0,a):null);e[h]=f.sort(e[h])}}return ga.add(e)}var ga=new B({combine(n,e){let t,i,s;for(;n||e;){if(!n||e&&n.depth>=e.depth?(s=e,e=e.next):(s=n,n=n.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let r=new Dt(s.tags,s.mode,s.context);t?t.next=r:i=r,t=r}return i}}),Dt=class{constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Qc(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}function ma(n,e,t,i=0,s=n.length){let r=new Mr(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Mr=class{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=Zc(e)||Dt.empty,c=Qc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(t,l),h),f.opaque)return;let u=e.tree&&e.tree.prop(B.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=e.firstChild();for(let m=0,b=l;;m++){let C=m=T||!e.nextSibling())););if(!C||T>i)break;b=C.to+l,b>t&&(this.highlightRange(d.cursor(),Math.max(t,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&e.parent()}else if(e.firstChild()){u&&(s="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function Zc(n){let e=n.type.prop(ga);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var x=Ee.define,Bn=x(),rt=x(),ua=x(rt),da=x(rt),ot=x(),En=x(ot),Ar=x(ot),je=x(),Tt=x(je),Ke=x(),$e=x(),Tr=x(),Di=x(Tr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:rt,variableName:x(rt),typeName:ua,tagName:x(ua),propertyName:da,attributeName:x(da),className:x(rt),labelName:x(rt),namespace:x(rt),macroName:x(rt),literal:ot,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Ar,integer:x(Ar),float:x(Ar),bool:x(ot),regexp:x(ot),escape:x(ot),color:x(ot),url:x(ot),keyword:Ke,self:x(Ke),null:x(Ke),atom:x(Ke),unit:x(Ke),modifier:x(Ke),operatorKeyword:x(Ke),controlKeyword:x(Ke),definitionKeyword:x(Ke),moduleKeyword:x(Ke),operator:$e,derefOperator:x($e),arithmeticOperator:x($e),logicOperator:x($e),bitwiseOperator:x($e),compareOperator:x($e),updateOperator:x($e),definitionOperator:x($e),typeOperator:x($e),controlOperator:x($e),punctuation:Tr,separator:x(Tr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:je,heading:Tt,heading1:x(Tt),heading2:x(Tt),heading3:x(Tt),heading4:x(Tt),heading5:x(Tt),heading6:x(Tt),contentSeparator:x(je),list:x(je),quote:x(je),emphasis:x(je),strong:x(je),link:x(je),monospace:x(je),strikethrough:x(je),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Ee.defineModifier("definition"),constant:Ee.defineModifier("constant"),function:Ee.defineModifier("function"),standard:Ee.defineModifier("standard"),local:Ee.defineModifier("local"),special:Ee.defineModifier("special")};for(let n in y){let e=y[n];e instanceof Ee&&(e.name=n)}var kp=Dr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Or,Xt=new B;function eu(n){return M.define({combine:n?e=>e.concat(n):void 0})}var tu=new B,de=class{constructor(e,t,i=[],s=""){this.data=e,this.name=s,j.prototype.hasOwnProperty("tree")||Object.defineProperty(j.prototype,"tree",{get(){return Re(this)}}),this.parser=t,this.extension=[Qt.of(this),j.languageData.of((r,o,l)=>{let a=ya(r,o,l),h=a.type.prop(Xt);if(!h)return[];let f=r.facet(h),c=a.type.prop(tu);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(e,t,i=-1){return ya(e,t,i).type.prop(Xt)==this.data}findRegions(e){let t=e.facet(Qt);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xt)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xt)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},Oi=null,Bi=class n{constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new n(e,t,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Rr(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=G.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Mt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=Oi;Oi=this;try{return e()}finally{Oi=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=ba(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Mt.applyChanges(i,a),s=G.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=e.mapPos(h.from,1),c=e.mapPos(h.to,-1);fe.from&&(this.fragments=ba(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new G(oe.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return Oi}};function ba(n,e,t){return Mt.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var Ei=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=Bi.create(e.facet(Qt).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new n(i)}};de.state=Ce.define({create:Ei.init,update(n,e){for(let t of e.effects)if(t.is(de.setState))return t.value;return e.startState.facet(Qt)!=e.state.facet(Qt)?Ei.init(e.state):n.apply(e)}});var Ca=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Ca=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Br=typeof navigator<"u"&&(!((Or=navigator.scheduling)===null||Or===void 0)&&Or.isInputPending)?()=>navigator.scheduling.isInputPending():null,iu=De.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(de.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(de.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Ca(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:de.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>Me(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qt=M.define({combine(n){return n.length?n[0]:null},enables:n=>[de.state,iu,D.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]});var nu=M.define(),ei=M.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function lt(n){let e=n.facet(ei);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function ti(n,e){let t="",i=n.tabSize,s=n.facet(ei)[0];if(s==" "){for(;e>=i;)t+=" ",e-=i;s=" "}for(let r=0;r=e?su(n,t,e):null}var Ot=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=lt(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return yt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Aa=new B;function su(n,e,t){let i=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ma(i,n,t)}function Ma(n,e,t){for(let i=n;i;i=i.next){let s=ou(i.node);if(s)return s(Pr.create(e,t,i))}return 0}function ru(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function ou(n){let e=n.type.prop(Aa);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>fu(o,!0,1,void 0,r&&!ru(o)?s.from:void 0)}return n.parent==null?lu:null}function lu(){return 0}var Pr=class n extends Ot{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new n(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(au(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return Ma(this.context.next,this.base,this.pos)}};function au(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function hu(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(t.to-r.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}function fu(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?hu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}var cu=200;function Ta(){return j.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+cu)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=Nn(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ti(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Zt=class n{constructor(e,t){this.specs=e;let i;function s(l){let a=ye.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof de?l=>l.prop(Xt)==o.data:o?l=>l==o:void 0,this.style=Dr(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new ye(i):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},Ir=M.define(),Da=M.define({combine(n){return n.length?[n[0]]:null}});function Er(n){let e=n.facet(Ir);return e.length?e:n.facet(Da)}function Hn(n,e){let t=[uu],i;return n instanceof Zt&&(n.module&&t.push(D.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(Da.of(n)):i?t.push(Ir.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):t.push(Ir.of(n)),t}var Nr=class{constructor(e){this.markCache=Object.create(null),this.tree=Re(e.state),this.decorations=this.buildDeco(e,Er(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=Re(e.state),i=Er(e.state),s=i!=Er(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return z.none;let i=new gt;for(let{from:s,to:r}of e.visibleRanges)ma(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},uu=Ht.high(De.fromClass(Nr,{decorations:n=>n.decorations})),Oa=Zt.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),du=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Ba=1e4,Ea="()[]{}",La=M.define({combine(n){return mt(n,{afterCursor:!0,brackets:Ea,maxScanDistance:Ba,renderMatch:mu})}}),pu=z.mark({class:"cm-matchingBracket"}),gu=z.mark({class:"cm-nonmatchingBracket"});function mu(n){let e=[],t=n.matched?pu:gu;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}function wa(n){let e=[],t=n.facet(La);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Le(n,i.head,-1,t)||i.head>0&&Le(n,i.head-1,1,t)||t.afterCursor&&(Le(n,i.head,1,t)||i.headn.decorations}),bu=[yu,du];function Ra(n={}){return[La.of(n),bu]}var wu=new B;function Hr(n,e,t){let i=n.prop(e<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function Fr(n){let e=n.type.prop(wu);return e?e(n.node):n}function Le(n,e,t,i={}){let s=i.maxScanDistance||Ba,r=i.brackets||Ea,o=Re(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=Hr(a.type,t,r);if(h&&a.from0?e>=f.from&&ef.from&&e<=f.to))return xu(n,e,t,a,f,h,r)}}return ku(n,e,t,o,l.type,s,r)}function xu(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(t<0?f.childBefore(i.from):f.childAfter(i.to)))do if(t<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},f=n.doc.iterRange(e,t>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;t<0&&(u+=d.length);let p=e+u*t;for(let g=t>0?0:d.length-1,m=t>0?d.length:-1;g!=m;g+=t){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==t>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}t>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function xa(n,e,t,i=0,s=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,e.length);return s(r)==s(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function vu(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Su,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||zr,mergeTokens:n.mergeTokens!==!1}}function Su(n){if(typeof n!="object")return n;let e={};for(let t in n){let i=n[t];e[t]=i instanceof Array?i.slice():i}return e}var ka=new WeakMap,Li=class n extends de{constructor(e){let t=eu(e.languageData),i=vu(e),s,r=new class extends Ti{createParse(o,l,a){return new Wr(s,o,l,a)}};super(t,r,[],e.name),this.topNode=Tu(t,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=e.tokenTable?new In(i.tokenTable):Mu}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:i}=e.options;i&&(t=ka.get(e.state),t!=null&&t1e4)return null;for(;r=i&&t+e.length<=s&&e.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=t+e.positions[o],h=l instanceof G&&a=e.length)return e;!s&&t==0&&e.type==n.topNode&&(s=!0);for(let r=e.children.length-1;r>=0;r--){let o=e.positions[r],l=e.children[r],a;if(ot&&Vr(n,r.tree,0-r.offset,t,l),h;if(a&&a.pos<=i&&(h=Pa(n,r.tree,t+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?lt(s):4),tree:G.empty}}var Wr=class{constructor(e,t,i,s){this.lang=e,this.input=t,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=Cu(e,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(lt(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let e=Bi.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(t,this.chunkStart+512);for(e&&(i=Math.min(i,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`&&(t="");else{let i=t.indexOf(` +`);i>-1&&(t=t.slice(0,i))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),i=e+t.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(t=t.slice(0,r-(i-t.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);t+=l,i=o+l.length}return{line:t,end:i}}skipGapsTo(e,t,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=e+t;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;t+=o-s}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(t,s,1),t+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=i:this.chunk.push(e,t,i,r),s}parseLine(e){let{line:t,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(t,e?e.state.tabSize:4,e?lt(e.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Ia(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}var zr=Object.create(null),Ri=[oe.none],Au=new Dn(Ri),va=[],Sa=Object.create(null),Na=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Na[n]=Ha(zr,e);var In=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Na)}resolve(e){return e?this.table[e]||(this.table[e]=Ha(this.extra,e)):0}},Mu=new In(zr);function Lr(n,e){va.indexOf(n)>-1||(va.push(n),console.warn(e))}function Ha(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Lr(h,`Modifier ${h} used at start of tag`):a.length?Lr(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Lr(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+t.map(l=>l.id),r=Sa[s];if(r)return r.id;let o=Sa[s]=oe.define({id:Ri.length,name:i,props:[pa({[i]:t})]});return Ri.push(o),o.id}function Tu(n,e){let t=oe.define({id:Ri.length,name:"Document",props:[Xt.add(()=>n),Aa.add(()=>i=>e.getIndent(i))],top:!0});return Ri.push(t),t}var Bp={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:$.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:$.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Du=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=Gr(n.state,t.from);return i.line?Ou(n):i.block?Eu(n):!1};function _r(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}var Ou=_r(Pu,0);var Bu=_r(Ua,0);var Eu=_r((n,e)=>Ua(n,e,Ru(e)),0);function Gr(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var Pi=50;function Lu(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-t.length;return f.slice(u,u+e.length)==e&&c.slice(p,p+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(f.charAt(u+e.length))?1:0},close:{pos:s-d-t.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Ru(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to);s.from>i.from&&s.from==t.to&&(s=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}function Ua(n,e,t=e.selection.ranges){let i=t.map(r=>Gr(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>Lu(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var Kr=me.define(),Iu=me.define(),Nu=M.define(),_a=M.define({combine(n){return mt(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(i,s)=>e(i,s)||t(i,s)})}}),Ga=Ce.define({create(){return Bt.empty},update(n,e){let t=e.state.facet(_a),i=e.annotation(Kr);if(i){let a=Pe.fromTransaction(e,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,t.minDepth,a):f=Qa(f,e.startState.selection),new Bt(h==0?i.rest:f,h==0?f:i.rest)}let s=e.annotation(Iu);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(X.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=Pe.fromTransaction(e),o=e.annotation(X.time),l=e.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Bt(n.done.map(Pe.fromJSON),n.undone.map(Pe.fromJSON))}});function Ja(n={}){return[Ga,_a.of(n),D.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?Ya:e.inputType=="historyRedo"?$r:null;return i?(e.preventDefault(),i(t)):!1}})]}function Vn(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field(Ga,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}var Ya=Vn(0,!1),$r=Vn(1,!1),Hu=Vn(0,!0),Fu=Vn(1,!0);var Pe=class n{constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new n(e.changes&&se.fromJSON(e.changes),[],e.mapped&&_e.fromJSON(e.mapped),e.startSelection&&w.fromJSON(e.startSelection),e.selectionsAfter.map(w.fromJSON))}static fromTransaction(e,t){let i=ke;for(let s of e.startState.facet(Nu)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,ke)}static selection(e){return new n(void 0,ke,void 0,void 0,e)}};function Wn(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}function Wu(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function Vu(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function Xa(n,e){return n.length?e.length?n.concat(e):n:e}var ke=[],zu=200;function Qa(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-zu));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),Wn(n,n.length-1,1e9,t.setSelAfter(i)))}else return[Pe.selection([e])]}function qu(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function qr(n,e){if(!n.length)return n;let t=n.length,i=ke;for(;t;){let s=Ku(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[Pe.selection(i)]:ke}function Ku(n,e,t){let i=Xa(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):ke,t);if(!n.changes)return Pe.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pe(s,U.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}var $u=/^(input\.type|delete)($|\.)/,Bt=class n{constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||$u.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):zn(t,e))}function ie(n){return n.textDirectionAt(n.state.selection.main.head)==$.LTR}var th=n=>eh(n,!ie(n)),ih=n=>eh(n,ie(n));function nh(n,e){return Ne(n,t=>t.empty?n.moveByGroup(t,e):zn(t,e))}var ju=n=>nh(n,!ie(n)),Uu=n=>nh(n,ie(n));var Wp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function _u(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function qn(n,e,t){let i=Re(n).resolveInner(e.head),s=t?B.closedBy:B.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;_u(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?Le(n,i.from,1):Le(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,w.cursor(l,t?-1:1)}var Gu=n=>Ne(n,e=>qn(n.state,e,!ie(n))),Ju=n=>Ne(n,e=>qn(n.state,e,ie(n)));function sh(n,e){return Ne(n,t=>{if(!t.empty)return zn(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}var rh=n=>sh(n,!1),oh=n=>sh(n,!0);function lh(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):zn(o,e));if(s.eq(i.selection))return!1;let r;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottomah(n,!1),jr=n=>ah(n,!0);function at(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Yu=n=>Ne(n,e=>at(n,e,!0)),Xu=n=>Ne(n,e=>at(n,e,!1)),Qu=n=>Ne(n,e=>at(n,e,!ie(n))),Zu=n=>Ne(n,e=>at(n,e,ie(n))),ed=n=>Ne(n,e=>w.cursor(n.lineBlockAt(e.head).from,1)),td=n=>Ne(n,e=>w.cursor(n.lineBlockAt(e.head).to,-1));function id(n,e,t){let i=!1,s=ii(n.selection,r=>{let o=Le(n,r.head,-1)||Le(n,r.head,1)||r.head>0&&Le(n,r.head-1,1)||r.headid(n,e,!1);function ve(n,e){let t=ii(n.state.selection,i=>{let s=e(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return t.eq(n.state.selection)?!1:(n.dispatch(Ie(n.state,t)),!0)}function hh(n,e){return ve(n,t=>n.moveByChar(t,e))}var fh=n=>hh(n,!ie(n)),ch=n=>hh(n,ie(n));function uh(n,e){return ve(n,t=>n.moveByGroup(t,e))}var sd=n=>uh(n,!ie(n)),rd=n=>uh(n,ie(n));var od=n=>ve(n,e=>qn(n.state,e,!ie(n))),ld=n=>ve(n,e=>qn(n.state,e,ie(n)));function dh(n,e){return ve(n,t=>n.moveVertically(t,e))}var ph=n=>dh(n,!1),gh=n=>dh(n,!0);function mh(n,e){return ve(n,t=>n.moveVertically(t,e,lh(n).height))}var Wa=n=>mh(n,!1),Va=n=>mh(n,!0),ad=n=>ve(n,e=>at(n,e,!0)),hd=n=>ve(n,e=>at(n,e,!1)),fd=n=>ve(n,e=>at(n,e,!ie(n))),cd=n=>ve(n,e=>at(n,e,ie(n))),ud=n=>ve(n,e=>w.cursor(n.lineBlockAt(e.head).from)),dd=n=>ve(n,e=>w.cursor(n.lineBlockAt(e.head).to)),za=({state:n,dispatch:e})=>(e(Ie(n,{anchor:0})),!0),qa=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.doc.length})),!0),Ka=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.selection.main.anchor,head:0})),!0),$a=({state:n,dispatch:e})=>(e(Ie(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),pd=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),gd=({state:n,dispatch:e})=>{let t=Kn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:w.create(t),userEvent:"select"})),!0},md=({state:n,dispatch:e})=>{let t=ii(n.selection,i=>{let s=Re(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(Ie(n,t)),!0)};function yh(n,e){let{state:t}=n,i=t.selection,s=t.selection.ranges.slice();for(let r of t.selection.ranges){let o=t.doc.lineAt(r.head);if(e?o.to0)for(let l=r;;){let a=n.moveVertically(l,e);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Ie(t,w.create(s,s.length-1))),!0)}var yd=n=>yh(n,!1),bd=n=>yh(n,!0),wd=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=w.create([t.main]):t.main.empty||(i=w.create([w.cursor(t.main.head)])),i?(e(Ie(n,i)),!0):!1};function Ii(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(r);ao&&(t="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(e,e,(s,r)=>{se&&(e=t?r:s)});return e}var bh=(n,e,t)=>Ii(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(t&&!e&&s>o.from&&sbh(n,!1,!0);var wh=n=>bh(n,!0,!1),xh=(n,e)=>Ii(n,t=>{let i=t.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t.head&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=Q(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=t.head)&&(l=f),i=a}return i}),kh=n=>xh(n,!1),xd=n=>xh(n,!0);var kd=n=>Ii(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headIi(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),Sd=n=>Ii(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},Ad=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Kn(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}function vh(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of Kn(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Md=({state:n,dispatch:e})=>vh(n,e,!1),Td=({state:n,dispatch:e})=>vh(n,e,!0);function Sh(n,e,t){if(n.readOnly)return!1;let i=[];for(let r of Kn(n))t?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return e(n.update({changes:s,selection:n.selection.map(s,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Dd=({state:n,dispatch:e})=>Sh(n,e,!1),Od=({state:n,dispatch:e})=>Sh(n,e,!0),Bd=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(Kn(e).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Ed(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=Re(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var ja=Ch(!1),Ld=Ch(!0);function Ch(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&Ed(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new Ot(e,{simulateBreak:r,simulateDoubleBreak:!!a}),f=Nn(h,r);for(f==null&&(f=yt(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Rd=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new Ot(n,{overrideIndentation:r=>{let o=t[r];return o??-1}}),s=Jr(n,(r,o,l)=>{let a=Nn(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ti(n,a);(h!=f||l.fromn.readOnly?!1:(e(n.update(Jr(n,(t,i)=>{i.push({from:t.from,insert:n.facet(ei)})}),{userEvent:"input.indent"})),!0),Mh=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Jr(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=yt(s,n.tabSize),o=0,l=ti(n,Math.max(0,r-lt(n)));for(;o(n.setTabFocusMode(),!0);var Id=[{key:"Ctrl-b",run:th,shift:fh,preventDefault:!0},{key:"Ctrl-f",run:ih,shift:ch},{key:"Ctrl-p",run:rh,shift:ph},{key:"Ctrl-n",run:oh,shift:gh},{key:"Ctrl-a",run:ed,shift:ud},{key:"Ctrl-e",run:td,shift:dd},{key:"Ctrl-d",run:wh},{key:"Ctrl-h",run:Ur},{key:"Ctrl-k",run:kd},{key:"Ctrl-Alt-h",run:kh},{key:"Ctrl-o",run:Cd},{key:"Ctrl-t",run:Ad},{key:"Ctrl-v",run:jr}],Nd=[{key:"ArrowLeft",run:th,shift:fh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:ju,shift:sd,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Qu,shift:fd,preventDefault:!0},{key:"ArrowRight",run:ih,shift:ch,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Uu,shift:rd,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Zu,shift:cd,preventDefault:!0},{key:"ArrowUp",run:rh,shift:ph,preventDefault:!0},{mac:"Cmd-ArrowUp",run:za,shift:Ka},{mac:"Ctrl-ArrowUp",run:Fa,shift:Wa},{key:"ArrowDown",run:oh,shift:gh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:qa,shift:$a},{mac:"Ctrl-ArrowDown",run:jr,shift:Va},{key:"PageUp",run:Fa,shift:Wa},{key:"PageDown",run:jr,shift:Va},{key:"Home",run:Xu,shift:hd,preventDefault:!0},{key:"Mod-Home",run:za,shift:Ka},{key:"End",run:Yu,shift:ad,preventDefault:!0},{key:"Mod-End",run:qa,shift:$a},{key:"Enter",run:ja,shift:ja},{key:"Mod-a",run:pd},{key:"Backspace",run:Ur,shift:Ur,preventDefault:!0},{key:"Delete",run:wh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:kh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:xd,preventDefault:!0},{mac:"Mod-Backspace",run:vd,preventDefault:!0},{mac:"Mod-Delete",run:Sd,preventDefault:!0}].concat(Id.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Th=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Gu,shift:od},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Ju,shift:ld},{key:"Alt-ArrowUp",run:Md},{key:"Shift-Alt-ArrowUp",run:Dd},{key:"Alt-ArrowDown",run:Td},{key:"Shift-Alt-ArrowDown",run:Od},{key:"Mod-Alt-ArrowUp",run:yd},{key:"Mod-Alt-ArrowDown",run:bd},{key:"Escape",run:wd},{key:"Mod-Enter",run:Ld},{key:"Alt-l",mac:"Ctrl-l",run:gd},{key:"Mod-i",run:md,preventDefault:!0},{key:"Mod-[",run:Mh},{key:"Mod-]",run:Ah},{key:"Mod-Alt-\\",run:Rd},{key:"Shift-Mod-k",run:Bd},{key:"Shift-Mod-\\",run:nd},{key:"Mod-/",run:Du},{key:"Alt-A",run:Bu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Pd}].concat(Nd),Dh={key:"Tab",run:Ah,shift:Mh};var Hd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Fd={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Oh=/[+\-*&^%:=<>!|\/]/,Qe;function $n(n,e){var t=n.next();if(t=='"'||t=="'"||t=="`")return e.tokenize=Wd(t),e.tokenize(n,e);if(/[\d\.]/.test(t))return t=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):t=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(t))return Qe=t,null;if(t=="/"){if(n.eat("*"))return e.tokenize=Bh,Bh(n,e);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Oh.test(t))return n.eatWhile(Oh),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Hd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qe="case"),"keyword"):Fd.propertyIsEnumerable(i)?"atom":"variable"}function Wd(n){return function(e,t){for(var i=!1,s,r=!1;(s=e.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(t.tokenize=$n),"string"}}function Bh(n,e){for(var t=!1,i;i=n.next();){if(i=="/"&&t){e.tokenize=$n;break}t=i=="*"}return"comment"}function Lh(n,e,t,i,s){this.indented=n,this.column=e,this.type=t,this.align=i,this.prev=s}function Yr(n,e,t){return n.context=new Lh(n.indented,e,t,null,n.context)}function Eh(n){if(n.context.prev){var e=n.context.type;return(e==")"||e=="]"||e=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Rh={name:"go",startState:function(n){return{tokenize:null,context:new Lh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,e){var t=e.context;if(n.sol()&&(t.align==null&&(t.align=!1),e.indented=n.indentation(),e.startOfLine=!0,t.type=="case"&&(t.type="}")),n.eatSpace())return null;Qe=null;var i=(e.tokenize||$n)(n,e);return i=="comment"||(t.align==null&&(t.align=!0),Qe=="{"?Yr(e,n.column(),"}"):Qe=="["?Yr(e,n.column(),"]"):Qe=="("?Yr(e,n.column(),")"):Qe=="case"?t.type="case":(Qe=="}"&&t.type=="}"||Qe==t.type)&&Eh(e),e.startOfLine=!1),i},indent:function(n,e,t){if(n.tokenize!=$n&&n.tokenize!=null)return null;var i=n.context,s=e&&e.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(e))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:t.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Ph={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,e){let t;if(!e.inString&&(t=n.match(/^('''|"""|'|")/))&&(e.stringType=t[0],e.inString=!0),n.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(n.match(e.stringType))e.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&n.peek()==="]")return n.next(),e.inArray--,"bracket";if(e.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(e.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(e.lhs&&n.peek()==="=")return n.next(),e.lhs=!1,null;if(!e.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(n.match("true")||n.match("false")))return"atom";if(!e.lhs&&n.peek()==="[")return e.inArray++,n.next(),"bracket";if(!e.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var Vd="#e5c07b",Ih="#e06c75",zd="#56b6c2",qd="#ffffff",jn="#abb2bf",Qr="#7d8799",Kd="#61afef",$d="#98c379",Nh="#d19a66",jd="#c678dd",Ud="#21252b",Hh="#2c313a",Fh="#282c34",Xr="#353a42",_d="#3E4451",Wh="#528bff";var Gd=D.theme({"&":{color:jn,backgroundColor:Fh},".cm-content":{caretColor:Wh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Wh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:_d},".cm-panels":{backgroundColor:Ud,color:jn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Fh,color:Qr,border:"none"},".cm-activeLineGutter":{backgroundColor:Hh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Xr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Xr,borderBottomColor:Xr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Hh,color:jn}}},{dark:!0}),Jd=Zt.define([{tag:y.keyword,color:jd},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Ih},{tag:[y.function(y.variableName),y.labelName],color:Kd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Nh},{tag:[y.definition(y.name),y.separator],color:jn},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:Vd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:zd},{tag:[y.meta,y.comment],color:Qr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Qr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Ih},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Nh},{tag:[y.processingInstruction,y.string,y.inserted],color:$d},{tag:y.invalid,color:qd}]),Vh=[Gd,Hn(Jd)];var Yd=Li.define(Rh),Xd=Li.define(Ph);function zh(n){return n.endsWith(".toml")?Xd:Yd}function qh(n){return n?Vh:Hn(Oa,{fallback:!0})}function Zr(){return document.documentElement.getAttribute("data-theme")==="dark"}var Un=class{view;langCompartment=new pt;themeCompartment=new pt;constructor(e){let t=[ra(),sa(),oa(),ia(),Ja(),Ta(),ei.of(" "),Ra(),this.langCompartment.of(zh(e.fileName)),this.themeCompartment.of(qh(e.isDarkMode))];if(e.onRun){let i=e.onRun;t.push(An.of([{key:"Mod-Enter",preventDefault:!0,run:()=>(i(),!0)}]))}t.push(An.of([Dh,...Za,...Th])),this.view=new D({parent:e.parent,state:j.create({doc:e.content,extensions:t})})}getCode(){return this.view.state.doc.toString()}setCode(e){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:e}})}setLanguage(e){this.view.dispatch({effects:this.langCompartment.reconfigure(zh(e))})}changeTheme(e){this.view.dispatch({effects:this.themeCompartment.reconfigure(qh(e))})}focus(){this.view.focus()}};import{BaseController as Qd}from"./controller.js";var Kh=class extends Qd{connect(){this.pkgPath=this.getValue("pkg-path"),this.pkgAlias=this.getValue("pkg-alias")||"pkg",this.remote=this.getValue("remote"),this.chainId=this.getValue("chain-id"),this.editorEl=this.getTarget("editor"),this.keyEl=this.getTarget("key"),this.gasWantedEl=this.getTarget("gasWanted"),this.gasFeeEl=this.getTarget("gasFee"),this.sendEl=this.getTarget("send"),this.dryRunCmdEl=this.getTarget("dryRunCmd"),this.executeCmdEl=this.getTarget("executeCmd"),!(!this.editorEl||!this.dryRunCmdEl||!this.executeCmdEl)&&(this.editor=new Un({parent:this.editorEl,content:this._buildTemplate(),fileName:"script.gno",isDarkMode:Zr()}),this.on("theme:changed",()=>{this.editor.changeTheme(Zr())}),this._setupInputListeners(),this._updateCommands())}_buildTemplate(){return`package main import "${this.pkgPath}" @@ -6,5 +17,5 @@ func main() { // Call ${this.pkgAlias} functions here, e.g.: // ${this.pkgAlias}.Render("") } -`}_setupKeyboardShortcuts(){this.codeEl.addEventListener("keydown",e=>{if(e.key==="Tab"&&!e.shiftKey){e.preventDefault();let s=this.codeEl.selectionStart,t=this.codeEl.selectionEnd;this.codeEl.value=`${this.codeEl.value.substring(0,s)} ${this.codeEl.value.substring(t)}`,this.codeEl.selectionStart=this.codeEl.selectionEnd=s+1}})}_setupInputListeners(){let e=()=>this._updateCommands();this.keyEl.addEventListener("input",e),this.gasWantedEl.addEventListener("input",e),this.gasFeeEl.addEventListener("input",e),this.sendEl.addEventListener("input",e)}_buildCmd(e){let s=this.keyEl.value.trim()||"",t=this.gasWantedEl.value.trim()||"2000000",n=this.gasFeeEl.value.trim()||"1000000ugnot",a=this.sendEl.value.trim(),i=["gnokey maketx run",` -gas-wanted ${t}`,` -gas-fee ${n}`];return a&&a!=="0ugnot"&&i.push(` -send "${a}"`),i.push(" -broadcast"),e&&i.push(" -simulate only"),this.chainId&&i.push(` -chainid ${this.chainId}`),this.remote&&i.push(` -remote "${this.remote}"`),i.push(` ${s} script.gno`),i.join(` \\ -`)}_updateCommands(){this.dryRunCmdEl.textContent=this._buildCmd(!0),this.executeCmdEl.textContent=this._buildCmd(!1)}_copyToClipboard(e,s){navigator.clipboard.writeText(e).then(()=>{let t=s.querySelector("span");if(!t)return;let n=t.textContent;t.textContent="Copied!",setTimeout(()=>{t.textContent=n},1500)}).catch(()=>{let t=s.closest(".b-run-command-block")?.querySelector("pre");if(t){let n=window.getSelection(),a=document.createRange();a.selectNodeContents(t),n?.removeAllRanges(),n?.addRange(a)}})}resetCode(){this.codeEl.value=this._buildTemplate()}downloadCode(){let e=new Blob([this.codeEl.value],{type:"text/plain"}),s=URL.createObjectURL(e),t=document.createElement("a");t.href=s,t.download="script.gno",t.click(),URL.revokeObjectURL(s)}copyDryRun(e){this._copyToClipboard(this._buildCmd(!0),e.currentTarget)}copyExecute(e){this._copyToClipboard(this._buildCmd(!1),e.currentTarget)}};export{l as RunController}; +`}_setupInputListeners(){let e=()=>this._updateCommands();this.keyEl.addEventListener("input",e),this.gasWantedEl.addEventListener("input",e),this.gasFeeEl.addEventListener("input",e),this.sendEl.addEventListener("input",e)}_buildCmd(e){let t=this.keyEl.value.trim()||"",i=this.gasWantedEl.value.trim()||"2000000",s=this.gasFeeEl.value.trim()||"1000000ugnot",r=this.sendEl.value.trim(),o=["gnokey maketx run",` -gas-wanted ${i}`,` -gas-fee ${s}`];return r&&r!=="0ugnot"&&o.push(` -send "${r}"`),o.push(" -broadcast"),e&&o.push(" -simulate only"),this.chainId&&o.push(` -chainid ${this.chainId}`),this.remote&&o.push(` -remote "${this.remote}"`),o.push(` ${t} script.gno`),o.join(` \\ +`)}_updateCommands(){this.dryRunCmdEl.textContent=this._buildCmd(!0),this.executeCmdEl.textContent=this._buildCmd(!1)}resetCode(){this.editor.setCode(this._buildTemplate())}downloadCode(){let e=new Blob([this.editor.getCode()],{type:"text/plain"}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download="script.gno",i.click(),URL.revokeObjectURL(t)}};export{Kh as RunController}; diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css index c2fb6a11ab8..bcf2835c863 100644 --- a/gno.land/pkg/gnoweb/public/main.css +++ b/gno.land/pkg/gnoweb/public/main.css @@ -3,4 +3,4 @@ li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) - article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-code{display:flex;flex:1;min-height:300px}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);display:flex;flex-direction:column;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);gap:0;line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2)}.b-playground-output-item{align-items:flex-start;display:flex;gap:var(--g-space-2)}.b-playground-output-item-text{color:inherit;flex:1;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;white-space:pre-wrap;word-break:break-word}.b-playground-output-copy-btn{align-items:center;background:none;border:none;border-radius:var(--g-radius-1);color:var(--s-color-fg-muted);cursor:pointer;display:flex;flex-shrink:0;padding:var(--g-space-1);transition:color .15s,background-color .15s}.b-playground-output-copy-btn:hover{background-color:var(--s-color-bg-surface-secondary);color:var(--s-color-fg-default)}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-run-copy-btn{margin-left:auto}.b-run-command-pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);min-height:var(--g-space-12);padding:var(--g-space-4);white-space:pre-wrap;word-break:break-word}.doc-example{background:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);margin-bottom:var(--g-space-3);margin-top:var(--g-space-3);overflow:hidden}.doc-example>summary{color:var(--s-color-text-secondary);cursor:pointer;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);padding:var(--g-space-2) var(--g-space-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.doc-example>summary:hover{background:var(--s-color-bg-surface-secondary)}.doc-example>pre{border-radius:0;border-top:var(--s-border-secondary);font-size:var(--g-font-size-100);margin-bottom:0;margin-top:0;overflow-x:auto;padding:var(--g-space-3)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);display:flex;flex-direction:column;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);gap:0;line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2)}.b-playground-output-item{align-items:flex-start;display:flex;gap:var(--g-space-2)}.b-playground-output-item-text{color:inherit;flex:1;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;white-space:pre-wrap;word-break:break-word}.b-playground-output-copy-btn{align-items:center;background:none;border:none;border-radius:var(--g-radius-1);color:var(--s-color-fg-muted);cursor:pointer;display:flex;flex-shrink:0;padding:var(--g-space-1);transition:color .15s,background-color .15s}.b-playground-output-copy-btn:hover{background-color:var(--s-color-bg-surface-secondary);color:var(--s-color-fg-default)}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.doc-example{background:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);margin-bottom:var(--g-space-3);margin-top:var(--g-space-3);overflow:hidden}.doc-example>summary{color:var(--s-color-text-secondary);cursor:pointer;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);padding:var(--g-space-2) var(--g-space-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.doc-example>summary:hover{background:var(--s-color-bg-surface-secondary)}.doc-example>pre{border-radius:0;border-top:var(--s-border-secondary);font-size:var(--g-font-size-100);margin-bottom:0;margin-top:0;overflow-x:auto;padding:var(--g-space-3)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From 0d45ffe1755c055cf5df455854b235f34e79a94d Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 18 May 2026 11:15:46 +0200 Subject: [PATCH 34/40] chore: fix typo --- gno.land/pkg/gnoweb/frontend/js/controller-playground.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts index 32d0de7b2ae..3070b81cfa2 100644 --- a/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts +++ b/gno.land/pkg/gnoweb/frontend/js/controller-playground.ts @@ -127,7 +127,7 @@ export class PlaygroundController extends BaseController { // Make sure file name has no path prefix if (name.includes("/") || name.includes("\\") || name.includes("..")) { console.warn( - `PlaygroundControler: rejected unsafe file name: "${name}"`, + `PlaygroundController: rejected unsafe file name: "${name}"`, ); continue; } From 3394690412bc4a41c688e8a4a2c76be3808233d8 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Mon, 18 May 2026 11:21:20 +0200 Subject: [PATCH 35/40] chore: make generate --- gno.land/pkg/gnoweb/public/js/controller-playground.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gno.land/pkg/gnoweb/public/js/controller-playground.js b/gno.land/pkg/gnoweb/public/js/controller-playground.js index e0984dcef81..c23ebfb02cb 100644 --- a/gno.land/pkg/gnoweb/public/js/controller-playground.js +++ b/gno.land/pkg/gnoweb/public/js/controller-playground.js @@ -10,7 +10,7 @@ var Gn=[],so=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2, `))};if((S.mac||S.android)&&c.from==o-1&&/^\. ?$/.test(i.text)&&t.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:l,to:a,insert:R.of([i.text.replace("."," ")])}),this.pendingContextChange=c,!t.state.readOnly){let u=this.to-this.from+(c.to-c.from+c.insert.length);yr(t,c,w.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(t.state),this.setSelection(t.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(e.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(e.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{t.inputState.composing<0&&(t.inputState.composing=0,t.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(t.inputState.composing=-1,t.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(t.state)}};for(let i in this.handlers)e.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=xi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(t){let e=0,i=!1,s=this.pendingContextChange;return t.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let f=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,e+=f,this.to+=f;return}else s=null,this.revertPending(t.state);if(r+=e,o+=e,o<=this.from)this.from+=f,this.to+=f;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=f}e+=f}),s&&!i&&this.revertPending(t.state),!i}update(t){let e=this.pendingContextChange,i=t.startState.selection.main;this.composing&&(this.composing.drifted||!t.changes.touchesRange(i.from,i.to)&&t.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=t.changes.mapPos(this.composing.editorBase)):!this.applyEdits(t)||!this.rangeIsValid(t.state)?(this.pendingContextChange=null,this.reset(t.state)):(t.docChanged||t.selectionSet||e)&&this.setSelection(t.state),(t.geometryChanged||t.docChanged||t.selectionSet)&&t.view.requestMeasure(this.measureReq)}resetRange(t){let{head:e}=t.selection.main;this.from=Math.max(0,e-1e4),this.to=Math.min(t.doc.length,e+1e4)}reset(t){this.resetRange(t),this.editContext.updateText(0,this.editContext.text.length,t.doc.sliceString(this.from,this.to)),this.setSelection(t)}revertPending(t){let e=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(e.from),this.toContextPos(e.from+e.insert.length),t.doc.sliceString(e.from,e.to))}setSelection(t){let{main:e}=t.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),s=this.toContextPos(e.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(t){let{head:e}=t.selection.main;return!(this.from>0&&e-this.from<500||this.to1e4*3)}toEditorPos(t,e=this.to-this.from){t=Math.min(t,e);let i=this.composing;return i&&i.drifted?i.editorBase+(t-i.contextBase):t+this.from}toContextPos(t){let e=this.composing;return e&&e.drifted?e.contextBase+(t-e.editorBase):t-this.from}destroy(){for(let t in this.handlers)this.editContext.removeEventListener(t,this.handlers[t])}},D=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(t={}){var e;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),t.parent&&t.parent.appendChild(this.dom);let{dispatch:i}=t;this.dispatchTransactions=t.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=t.root||pf(t.parent)||document,this.viewState=new bn(this,t.state||$.create(t)),t.scrollTo&&t.scrollTo.is(Gi)&&(this.viewState.scrollTarget=t.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ve).map(s=>new di(s));for(let s of this.plugins)s.update(this);this.observer=new nr(this),this.inputState=new Ks(this),this.inputState.ensureHandlers(this.plugins),this.docView=new dn(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((e=document.fonts)===null||e===void 0)&&e.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...t){let e=t.length==1&&t[0]instanceof X?t:t.length==1&&Array.isArray(t[0])?t[0]:[this.state.update(...t)];this.dispatchTransactions(e,this)}update(t){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let e=!1,i=!1,s,r=this.state;for(let u of t){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;t.some(u=>u.annotation(Gl))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Jl(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(f=null)):this.observer.clear(),r.facet($.phrases)!=this.state.facet($.phrases))return this.setState(r);s=cn.create(this,r,t),s.flags|=l;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let u of t){if(c&&(c=c.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);c=new ui(d.empty?d:w.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",g,p)}for(let d of u.effects)d.is(Gi)&&(c=d.value.clip(this.state))}this.viewState.update(s,c),this.bidiCache=wn.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),e=this.docView.update(s),this.state.facet(ai)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(t),this.docView.updateSelection(e,t.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Zi)!=s.state.facet(Zi)&&(this.viewState.mustMeasureContent=!0),(e||i||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),e&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Bs))try{u(s)}catch(d){Mt(this.state,d,"update listener")}(a||f)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),f&&!zl(this,f)&&h.force&&Ke(this.contentDOM,h.key,h.keyCode)})}setState(t){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=t;return}this.updateState=2;let e=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new bn(this,t),this.plugins=t.facet(Ve).map(i=>new di(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new dn(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}e&&this.focus(),this.requestMeasure()}updatePlugins(t){let e=t.startState.facet(Ve),i=t.state.facet(Ve);if(e!=i){let s=[];for(let r of i){let o=e.indexOf(r);if(o<0)s.push(new di(r));else{let l=this.plugins[o];l.mustUpdate=t,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=t&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=t;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,t&&this.observer.forceFlush();let e=null,i=this.viewState.scrollParent,s=this.viewState.getScrollOffset(),{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(pl(i||this.win))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure();if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(d=>{try{return d.read(this)}catch(p){return Mt(this.state,p),il}}),c=cn.create(this,this.state,[]),u=!1;c.flags|=a,e?e.flags|=a:e=c,this.updateState=2,c.empty||(this.updatePlugins(c),this.inputState.update(c),this.updateAttrs(),u=this.docView.update(c),u&&this.docViewUpdate());for(let d=0;d1||p<-1)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){s=s+p,i?i.scrollTop+=p:this.win.scrollBy(0,p),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(e&&!e.empty)for(let l of this.state.facet(Bs))l(e)}get themeClasses(){return er+" "+(this.state.facet(tr)?Ql:Xl)+" "+this.state.facet(Zi)}updateAttrs(){let t=nl(this,Ll,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),e={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Jt)?"true":"false",class:"cm-content",style:`${S.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(e["aria-readonly"]="true"),nl(this,gr,e);let i=this.observer.ignore(()=>{let s=No(this.contentDOM,this.contentAttrs,e),r=No(this.dom,this.editorAttrs,t);return s||r});return this.editorAttrs=t,this.contentAttrs=e,i}showAnnouncements(t){let e=!0;for(let i of t)for(let s of i.effects)if(s.is(n.announce)){e&&(this.announceDOM.textContent=""),e=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(ai);let t=this.state.facet(n.cspNonce);yt.mount(this.root,this.styleModules.concat(bc).reverse(),t?{nonce:t}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t){if(this.measureRequests.indexOf(t)>-1)return;if(t.key!=null){for(let e=0;ei.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(t){return this.readMeasured(),this.viewState.elementAtHeight(t)}lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlockAtHeight(t)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(t){return this.viewState.lineBlockAt(t)}get contentHeight(){return this.viewState.contentHeight}moveByChar(t,e,i){return bs(this,t,zo(this,t,e,i))}moveByGroup(t,e){return bs(this,t,zo(this,t,e,i=>qf(this,t.head,i)))}visualLineSide(t,e){let i=this.bidiSpans(t),s=this.textDirectionAt(t.from),r=i[e?i.length-1:0];return w.cursor(r.side(e,s)+t.from,r.forward(!e,s)?1:-1)}moveToLineBoundary(t,e,i=!0){return _f(this,t,e,i)}moveVertically(t,e,i){return bs(this,t,Kf(this,t,e,i))}domAtPos(t,e=1){return this.docView.domAtPos(t,e)}posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)}posAtCoords(t,e=!0){this.readMeasured();let i=Vs(this,t,e);return i&&i.pos}posAndSideAtCoords(t,e=!0){return this.readMeasured(),Vs(this,t,e)}coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(t),r=this.bidiSpans(s),o=r[xt.find(r,t-s.from,-1,e)];return fn(i,o.dir==K.LTR==e>0)}coordsForChar(t){return this.readMeasured(),this.docView.coordsForChar(t)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(t){return!this.state.facet(Dl)||tthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(t))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(t){if(t.length>vc)return xl(t.length);let e=this.textDirectionAt(t.from),i;for(let r of this.bidiCache)if(r.from==t.from&&r.dir==e&&(r.fresh||wl(r.isolates,i=Fo(this,t))))return r.order;i||(i=Fo(this,t));let s=kf(t.text,e,i);return this.bidiCache.push(new wn(t.from,t.to,e,i,!0,s)),s}get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||S.safari&&((t=this.inputState)===null||t===void 0?void 0:t.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{dl(this.contentDOM),this.docView.updateSelection()})}setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((t.nodeType==9?t:t.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let t of this.plugins)t.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(t,e={}){var i,s,r,o;return Gi.of(new ui(typeof t=="number"?w.cursor(t):t,(i=e.y)!==null&&i!==void 0?i:"nearest",(s=e.x)!==null&&s!==void 0?s:"nearest",(r=e.yMargin)!==null&&r!==void 0?r:5,(o=e.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:t,scrollLeft:e}=this.scrollDOM,i=this.viewState.scrollAnchorAt(t);return Gi.of(new ui(w.cursor(i.from),"start","start",i.top-t,e,!0))}setTabFocusMode(t){t==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof t=="boolean"?this.inputState.tabFocusMode=t?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+t)}static domEventHandlers(t){return Dt.define(()=>({}),{eventHandlers:t})}static domEventObservers(t){return Dt.define(()=>({}),{eventObservers:t})}static theme(t,e){let i=yt.newName(),s=[Zi.of(i),ai.of(ir(`.${i}`,t))];return e&&e.dark&&s.push(tr.of(!0)),s}static baseTheme(t){return He.lowest(ai.of(ir("."+er,t,Zl)))}static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),s=i&&j.get(i)||j.get(t);return((e=s?.root)===null||e===void 0?void 0:e.view)||null}};D.styleModule=ai;D.inputHandler=Ml;D.clipboardInputFilter=dr;D.clipboardOutputFilter=pr;D.scrollHandler=Bl;D.focusChangeEffect=Tl;D.perLineTextDirection=Dl;D.exceptionSink=Al;D.updateListener=Bs;D.editable=Jt;D.mouseSelectionStyle=Cl;D.dragMovesSelection=Sl;D.clickAddsSelectionRange=kl;D.decorations=Sn;D.blockWrappers=Rl;D.outerDecorations=mr;D.atomicRanges=ki;D.bidiIsolatedRanges=Pl;D.cursorScrollMargin=M.define({combine:n=>{let t=5,e=5;for(let i of n)typeof i=="number"?t=e=i:{x:t,y:e}=i;return{x:t,y:e}}});D.scrollMargins=Nl;D.darkTheme=tr;D.cspNonce=M.define({combine:n=>n.length?n[0]:""});D.contentAttributes=gr;D.editorAttributes=Ll;D.lineWrapping=D.contentAttributes.of({class:"cm-lineWrapping"});D.announce=U.define();var vc=4096,il={},wn=class n{constructor(t,e,i,s,r,o){this.from=t,this.to=e,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(t,e){if(e.empty&&!t.some(r=>r.fresh))return t;let i=[],s=t.length?t[t.length-1].dir:K.LTR;for(let r=Math.max(0,t.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&fr(o,e)}return e}var kc=S.mac?"mac":S.windows?"win":S.linux?"linux":"key";function Sc(n,t){let e=n.split(/-(?!$)/),i=e[e.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),e}var te=null,Mc=4e3;function Tc(n,t=kc){let e=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,f)=>{var c,u;let d=e[o]||(e[o]=Object.create(null)),p=l.split(/ (?!$)/).map(b=>Sc(b,t));for(let b=1;b{let P=te={view:T,prefix:C,scope:o};return setTimeout(()=>{te==P&&(te=null)},Mc),!0}]})}let g=p.join(" ");s(g,!1);let m=d[g]||(d[g]={preventDefault:!1,stopPropagation:!1,run:((u=(c=d._any)===null||c===void 0?void 0:c.run)===null||u===void 0?void 0:u.slice())||[]});a&&m.run.push(a),h&&(m.preventDefault=!0),f&&(m.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let f=e[h]||(e[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=o;for(let u in f)f[u].run.push(d=>c(d,rr))}let a=o[t]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return e}var rr=null;function Dc(n,t,e,i){rr=t;let s=Eo(t),r=go(s,0),o=mo(r)==s.length&&s!=" ",l="",a=!1,h=!1,f=!1;te&&te.view==e&&te.scope==i&&(l=te.prefix+" ",Kl.indexOf(t.keyCode)<0&&(h=!0,te=null));let c=new Set,u=m=>{if(m){for(let b of m.run)if(!c.has(b)&&(c.add(b),b(e)))return m.stopPropagation&&(f=!0),!0;m.preventDefault&&(m.stopPropagation&&(f=!0),h=!0)}return!1},d=n[i],p,g;return d&&(u(d[l+tn(s,t,!o)])?a=!0:o&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&!(S.mac&&t.altKey&&!(t.ctrlKey||t.metaKey))&&(p=Gt[t.keyCode])&&p!=s?(u(d[l+tn(p,t,!0)])||t.shiftKey&&(g=Fe[t.keyCode])!=s&&g!=p&&u(d[l+tn(g,t,!1)]))&&(a=!0):o&&t.shiftKey&&u(d[l+tn(s,t,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&f&&t.stopPropagation(),rr=null,a}var xe=class n{constructor(t,e,i,s,r){this.className=t,this.left=e,this.top=i,this.width=s,this.height=r}draw(){let t=document.createElement("div");return t.className=this.className,this.adjust(t),t}update(t,e){return e.className!=this.className?!1:(this.adjust(t),!0)}adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.width!=null&&(t.style.width=this.width+"px"),t.style.height=this.height+"px"}eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&this.height==t.height&&this.className==t.className}static forRange(t,e,i){if(i.empty){let s=t.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=ta(t);return[new n(e,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Oc(t,e,i)}};function ta(n){let t=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==K.LTR?t.left:t.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:t.top-n.scrollDOM.scrollTop*n.scaleY}}function rl(n,t,e,i){let s=n.coordsAtPos(t,e*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Oc(n,t,e){if(e.to<=n.viewport.from||e.from>=n.viewport.to)return[];let i=Math.max(e.from,n.viewport.from),s=Math.min(e.to,n.viewport.to),r=n.textDirection==K.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=ta(n),h=o.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),c=l.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),u=l.right-(f?parseInt(f.paddingRight):0),d=Ws(n,i,1),p=Ws(n,s,-1),g=d.type==tt.Text?d:null,m=p.type==tt.Text?p:null;if(g&&(n.lineWrapping||d.widgetLineBreaks)&&(g=rl(n,i,1,g)),m&&(n.lineWrapping||p.widgetLineBreaks)&&(m=rl(n,s,-1,m)),g&&m&&g.from==m.from&&g.to==m.to)return C(T(e.from,e.to,g));{let A=g?T(e.from,null,g):P(d,!1),k=m?T(null,e.to,m):P(p,!0),v=[];return(g||d).to<(m||p).from-(g&&m?1:0)||d.widgetLineBreaks>1&&A.bottom+n.defaultLineHeight/2O&&I.from=nt)break;pt>_&&E(Math.max(Z,_),A==null&&Z<=O,Math.min(pt,nt),k==null&&pt>=H,Ht.dir)}if(_=ft.to+1,_>=nt)break}return W.length==0&&E(O,A==null,H,k==null,n.textDirection),{top:N,bottom:L,horizontal:W}}function P(A,k){let v=l.top+(k?A.top:A.bottom);return{top:v,bottom:v,horizontal:[]}}}function Bc(n,t){return n.constructor==t.constructor&&n.eq(t)}var or=class{constructor(t,e){this.view=t,this.layer=e,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=t.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),e.above&&this.dom.classList.add("cm-layer-above"),e.class&&this.dom.classList.add(e.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(t.state),t.requestMeasure(this.measureReq),e.mount&&e.mount(this.dom,t)}update(t){t.startState.facet(sn)!=t.state.facet(sn)&&this.setOrder(t.state),(this.layer.update(t,this.dom)||t.geometryChanged)&&(this.scale(),t.view.requestMeasure(this.measureReq))}docViewUpdate(t){this.layer.updateOnDocViewUpdate!==!1&&t.requestMeasure(this.measureReq)}setOrder(t){let e=0,i=t.facet(sn);for(;e!Bc(e,this.drawn[i]))){let e=this.dom.firstChild,i=0;for(let s of t)s.update&&e&&s.constructor&&this.drawn[i].constructor&&s.update(e,this.drawn[i])?(e=e.nextSibling,i++):this.dom.insertBefore(s.draw(),e);for(;e;){let s=e.nextSibling;e.remove(),e=s}this.drawn=t,S.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},sn=M.define();function ea(n){return[Dt.define(t=>new or(t,n)),sn.of(n)]}var Ye=M.define({combine(n){return me(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(t,e)=>Math.min(t,e),drawRangeCursor:(t,e)=>t||e})}});function ia(n={}){return[Ye.of(n),Ec,Lc,Rc,Ol.of(!0)]}function na(n){return n.startState.facet(Ye)!=n.state.facet(Ye)}var Ec=ea({above:!0,markers(n){let{state:t}=n,e=t.facet(Ye),i=[];for(let s of t.selection.ranges){let r=s==t.selection.main;if(s.empty||e.drawRangeCursor&&!(r&&S.ios&&e.iosSelectionHandles)){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:w.cursor(s.head,s.assoc);for(let a of xe.forRange(n,o,l))i.push(a)}}return i},update(n,t){n.transactions.some(i=>i.selection)&&(t.style.animationName=t.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let e=na(n);return e&&ol(n.state,t),n.docChanged||n.selectionSet||e},mount(n,t){ol(t.state,n)},class:"cm-cursorLayer"});function ol(n,t){t.style.animationDuration=n.facet(Ye).cursorBlinkRate+"ms"}var Lc=ea({above:!1,markers(n){let t=[],{main:e,ranges:i}=n.state.selection;for(let s of i)if(!s.empty)for(let r of xe.forRange(n,"cm-selectionBackground",s))t.push(r);if(S.ios&&!e.empty&&n.state.facet(Ye).iosSelectionHandles){for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-start",w.cursor(e.from,1)))t.push(s);for(let s of xe.forRange(n,"cm-selectionHandle cm-selectionHandle-end",w.cursor(e.to,1)))t.push(s)}return t},update(n,t){return n.docChanged||n.selectionSet||n.viewportChanged||na(n)},class:"cm-selectionLayer"}),Rc=He.highest(D.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));var mp=/x/.unicode!=null?"gu":"g";function sa(){return Nc}var Pc=z.line({class:"cm-activeLine"}),Nc=Dt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let t=-1,e=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>t&&(e.push(Pc.range(s.from)),t=s.from)}return z.set(e)}},{decorations:n=>n.decorations});var yp=D.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}});var Bt=class extends Wt{compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)}eq(t){return!1}destroy(t){}};Bt.prototype.elementClass="";Bt.prototype.toDOM=void 0;Bt.prototype.mapMode=lt.TrackBefore;Bt.prototype.startSide=Bt.prototype.endSide=-1;Bt.prototype.point=!0;var rn=M.define(),Ic=M.define();var on=M.define();var lr=M.define({combine:n=>n.some(t=>t)});function Hc(n){let t=[Fc];return n&&n.fixed===!1&&t.push(lr.of(!0)),t}var Fc=Dt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(on).map(t=>new xn(n,t)),this.fixed=!n.state.facet(lr);for(let t of this.gutters)t.config.side=="after"?this.getDOMAfter().appendChild(t.dom):this.dom.appendChild(t.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let t=this.prevViewport,e=n.view.viewport,i=Math.min(t.to,e.to)-Math.max(t.from,e.from);this.syncGutters(i<(e.to-e.from)*.8)}if(n.geometryChanged){let t=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=t,this.domAfter&&(this.domAfter.style.minHeight=t)}this.view.state.facet(lr)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let t=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let e=F.iter(this.view.state.facet(rn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new hr(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==tt.Text&&o){ar(e,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==tt.Text){ar(e,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,t),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let t=n.startState.facet(on),e=n.state.facet(on),i=n.docChanged||n.heightChanged||n.viewportChanged||!F.eq(n.startState.facet(rn),n.state.facet(rn),n.view.viewport.from,n.view.viewport.to);if(t==e)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of e){let o=t.indexOf(r);o<0?s.push(new xn(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>D.scrollMargins.of(t=>{let e=t.plugin(n);if(!e||e.gutters.length==0||!e.fixed)return null;let i=e.dom.offsetWidth*t.scaleX,s=e.domAfter?e.domAfter.offsetWidth*t.scaleX:0;return t.textDirection==K.LTR?{left:i,right:s}:{right:i,left:s}})});function ll(n){return Array.isArray(n)?n:[n]}function ar(n,t,e){for(;n.value&&n.from<=e;)n.from==e&&t.push(n.value),n.next()}var hr=class{constructor(t,e,i){this.gutter=t,this.height=i,this.i=0,this.cursor=F.iter(t.markers,e.from)}addElement(t,e,i){let{gutter:s}=this,r=(e.top-this.height)/t.scaleY,o=e.height/t.scaleY;if(this.i==s.elements.length){let l=new vn(t,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(t,o,r,i);this.height=e.bottom,this.i++}line(t,e,i){let s=[];ar(this.cursor,s,e.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(t,e,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(t,e,s)}widget(t,e){let i=this.gutter.config.widgetMarker(t,e.widget,e),s=i?[i]:null;for(let r of t.state.facet(Ic)){let o=r(t,e.widget,e);o&&(s||(s=[])).push(o)}s&&this.addElement(t,e,s)}finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.elements.pop();t.dom.removeChild(e.dom),e.destroy()}}},xn=class{constructor(t,e){this.view=t,this.config=e,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in e.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=t.lineBlockAtHeight(o-t.documentTop);e.domEventHandlers[i](t,l,s)&&s.preventDefault()});this.markers=ll(e.markers(t)),e.initialSpacer&&(this.spacer=new vn(t,0,0,[e.initialSpacer(t)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(t){let e=this.markers;if(this.markers=ll(this.config.markers(t.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],t);s!=this.spacer.markers[0]&&this.spacer.update(t.view,0,0,[s])}let i=t.view.viewport;return!F.eq(this.markers,e,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(t):!1)}destroy(){for(let t of this.elements)t.destroy()}},vn=class{constructor(t,e,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(t,e,i,s)}update(t,e,i,s){this.height!=e&&(this.height=e,this.dom.style.height=e+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Wc(this.markers,s)||this.setMarkers(t,s)}setMarkers(t,e){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}}),yi=class extends Bt{constructor(t){super(),this.number=t}eq(t){return this.number==t.number}toDOM(){return document.createTextNode(this.number)}};function xs(n,t){return n.state.facet(_e).formatNumber(t,n.state)}var _c=on.compute([_e],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(t){return t.state.facet(Vc)},lineMarker(t,e,i){return i.some(s=>s.toDOM)?null:new yi(xs(t,t.state.doc.lineAt(e.from).number))},widgetMarker:(t,e,i)=>{for(let s of t.state.facet(zc)){let r=s(t,e,i);if(r)return r}return null},lineMarkerChange:t=>t.startState.facet(_e)!=t.state.facet(_e),initialSpacer(t){return new yi(xs(t,al(t.state.doc.lines)))},updateSpacer(t,e){let i=xs(e.view,al(e.view.state.doc.lines));return i==t.number?t:new yi(i)},domEventHandlers:n.facet(_e).domEventHandlers,side:"before"}));function ra(n={}){return[_e.of(n),Hc(),_c]}function al(n){let t=9;for(;t{let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>e&&(e=s,t.push(qc.range(s)))}return F.of(t)});function oa(){return Kc}var $c=0,Si=class{constructor(t,e){this.from=t,this.to=e}},B=class{constructor(t={}){this.id=$c++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=t.combine||null}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof t!="function"&&(t=ot.match(t)),e=>{let i=t(e);return i===void 0?null:[this,i]}}};B.closedBy=new B({deserialize:n=>n.split(" ")});B.openedBy=new B({deserialize:n=>n.split(" ")});B.group=new B({deserialize:n=>n.split(" ")});B.isolate=new B({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});B.contextHash=new B({perNode:!0});B.lookAhead=new B({perNode:!0});B.mounted=new B({perNode:!0});var Ae=class{constructor(t,e,i,s=!1){this.tree=t,this.overlay=e,this.parser=i,this.bracketed=s}static get(t){return t&&t.props&&t.props[B.mounted.id]}},Uc=Object.create(null),ot=class n{constructor(t,e,i,s=0){this.name=t,this.props=e,this.id=i,this.flags=s}static define(t){let e=t.props&&t.props.length?Object.create(null):Uc,i=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(t.name==null?8:0),s=new n(t.name||"",e,t.id,i);if(t.props){for(let r of t.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}}return s}prop(t){return this.props[t.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(t){if(typeof t=="string"){if(this.name==t)return!0;let e=this.prop(B.group);return e?e.indexOf(t)>-1:!1}return this.id==t}static match(t){let e=Object.create(null);for(let i in t)for(let s of i.split(" "))e[s]=t[i];return i=>{for(let s=i.prop(B.group),r=-1;r<(s?s.length:0);r++){let o=e[r<0?i.name:s[r]];if(o)return o}}}};ot.none=new ot("",Object.create(null),0,8);var Dn=class n{constructor(t){this.types=t;for(let e=0;e0;for(let a=this.cursor(o|J.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||e(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:Cr(ot.none,this.children,this.positions,0,this.children.length,0,this.length,(e,i,s)=>new n(this.type,e,i,s,this.propValues),t.makeTree||((e,i,s)=>new n(ot.none,e,i,s)))}static build(t){return Gc(t)}};G.empty=new G(ot.none,[],[],0);var br=class n{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},se=class n{constructor(t,e,i){this.buffer=t,this.length=e,this.set=i}get type(){return ot.none}toString(){let t=[];for(let e=0;e0));a=o[a+3]);return l}slice(t,e,i){let s=this.buffer,r=new Uint16Array(e-t),o=0;for(let l=t,a=0;l=t&&et;case 1:return e<=t&&i>t;case 2:return i>t;case 4:return!0}}function Ci(n,t,e,i){for(var s;n.from==n.to||(e<1?n.from>=t:n.from>t)||(e>-1?n.to<=t:n.to0?l.length:-1;t!=h;t+=e){let f=l[t],c=a[t]+o.from,u;if(!(!(r&J.EnterBracketed&&f instanceof G&&(u=Ae.get(f))&&!u.overlay&&u.bracketed&&i>=c&&i<=c+f.length)&&!fa(s,i,c,c+f.length))){if(f instanceof se){if(r&J.ExcludeBuffers)continue;let d=f.findChild(0,f.buffer.length,e,i-c,s);if(d>-1)return new Ai(new xr(o,f,t,c),null,d)}else if(r&J.IncludeAnonymous||!f.type.isAnonymous||Sr(f)){let d;if(!(r&J.IgnoreMounts)&&(d=Ae.get(f))&&!d.overlay)return new n(d.tree,c,t,o);let p=new n(f,c,t,o);return r&J.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(e<0?f.children.length-1:0,e,i,s,r)}}}if(r&J.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?t=o.index+e:t=e<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}prop(t){return this._tree.prop(t)}enter(t,e,i=0){let s;if(!(i&J.IgnoreOverlays)&&(s=Ae.get(this._tree))&&s.overlay){let r=t-this.from,o=i&J.EnterBracketed&&s.bracketed;for(let{from:l,to:a}of s.overlay)if((e>0||o?l<=r:l=r:a>r))return new n(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,i)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function aa(n,t,e,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(e!=null){for(let o=!1;!o;)if(o=s.type.is(e),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(t)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function wr(n,t,e=t.length-1){for(let i=n;e>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(t[e]&&t[e]!=i.name)return!1;e--}}return!0}var xr=class{constructor(t,e,i,s){this.parent=t,this.buffer=e,this.index=i,this.start=s}},Ai=class n extends On{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,i){super(),this.context=t,this._parent=e,this.index=i,this.type=t.buffer.set.types[t.buffer.buffer[i]]}child(t,e,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.context.start,i);return r<0?null:new n(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}prop(t){return this.type.prop(t)}enter(t,e,i=0){if(i&J.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return r<0?null:new n(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new n(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new n(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];t.push(i.slice(s,r,o)),e.push(0)}return new G(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function ca(n){if(!n.length)return null;let t=0,e=n[0];for(let r=1;re.from||o.to=t){let l=new _t(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Ci(l,t,e,!1))}}return s?ca(s):i}var Mi=class{get name(){return this.type.name}constructor(t,e=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=e&~J.EnterBracketed,t instanceof _t)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let i=t._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return t?(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0):!1}yieldBuf(t,e){this.index=t;let{start:i,buffer:s}=this.buffer;return this.type=e||s.set.types[s.buffer[t]],this.from=i+s.buffer[t+1],this.to=i+s.buffer[t+2],!0}yield(t){return t?t instanceof _t?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],t,e-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,i=this.mode){return this.buffer?i&J.ExcludeBuffers?!1:this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&J.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&J.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode)):!1;let{buffer:e}=this.buffer,i=this.stack.length-1;if(t<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(e.findChild(s,this.index,-1,0,4))}else{let s=e.buffer[this.index+3];if(s<(i<0?e.buffer.length:e.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,i,{buffer:s}=this;if(s){if(t>0){if(this.index-1)for(let r=e+t,o=t<0?-1:i._tree.children.length;r!=o;r+=t){let l=i._tree.children[r];if(this.mode&J.IncludeAnonymous||l instanceof se||!l.type.isAnonymous||Sr(l))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to=0;){for(let o=t;o;o=o._parent)if(o.index==s){if(s==this.index)return o;e=o,i=r+1;break t}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return wr(this._tree,t,s);let o=i[e.buffer[this.stack[r]]];if(!o.isAnonymous){if(t[s]&&t[s]!=o.name)return!1;s--}}return!0}};function Sr(n){return n.children.some(t=>t instanceof se||!t.type.isAnonymous||Sr(t))}function Gc(n){var t;let{buffer:e,nodeSet:i,maxBufferLength:s=1024,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(e)?new br(e,e.length):e,a=i.types,h=0,f=0;function c(A,k,v,N,L,W){let{id:E,start:O,end:H,size:I}=l,_=f,nt=h;if(I<0)if(l.next(),I==-1){let Ut=r[E];v.push(Ut),N.push(O-A);return}else if(I==-3){h=E;return}else if(I==-4){f=E;return}else throw new RangeError(`Unrecognized record size: ${I}`);let ft=a[E],Ht,Z,pt=O-A;if(H-O<=s&&(Z=m(l.pos-k,L))){let Ut=new Uint16Array(Z.size-Z.skip),gt=l.pos-Z.size,Ft=Ut.length;for(;l.pos>gt;)Ft=b(Z.start,Ut,Ft);Ht=new se(Ut,H-Z.start,i),pt=Z.start-A}else{let Ut=l.pos-I;l.next();let gt=[],Ft=[],he=E>=o?E:-1,Ee=0,Ii=H;for(;l.pos>Ut;)he>=0&&l.id==he&&l.size>=0?(l.end<=Ii-s&&(p(gt,Ft,O,Ee,l.end,Ii,he,_,nt),Ee=gt.length,Ii=l.end),l.next()):W>2500?u(O,Ut,gt,Ft):c(O,Ut,gt,Ft,he,W+1);if(he>=0&&Ee>0&&Ee-1&&Ee>0){let to=d(ft,nt);Ht=Cr(ft,gt,Ft,0,gt.length,0,H-O,to,to)}else Ht=g(ft,gt,Ft,H-O,_-H,nt)}v.push(Ht),N.push(pt)}function u(A,k,v,N){let L=[],W=0,E=-1;for(;l.pos>k;){let{id:O,start:H,end:I,size:_}=l;if(_>4)l.next();else{if(E>-1&&H=0;I-=3)O[_++]=L[I],O[_++]=L[I+1]-H,O[_++]=L[I+2]-H,O[_++]=_;v.push(new se(O,L[2]-H,i)),N.push(H-A)}}function d(A,k){return(v,N,L)=>{let W=0,E=v.length-1,O,H;if(E>=0&&(O=v[E])instanceof G){if(!E&&O.type==A&&O.length==L)return O;(H=O.prop(B.lookAhead))&&(W=N[E]+O.length+H)}return g(A,v,N,L,W,k)}}function p(A,k,v,N,L,W,E,O,H){let I=[],_=[];for(;A.length>N;)I.push(A.pop()),_.push(k.pop()+v-L);A.push(g(i.types[E],I,_,W-L,O-W,H)),k.push(L-v)}function g(A,k,v,N,L,W,E){if(W){let O=[B.contextHash,W];E=E?[O].concat(E):[O]}if(L>25){let O=[B.lookAhead,L];E=E?[O].concat(E):[O]}return new G(A,k,v,N,E)}function m(A,k){let v=l.fork(),N=0,L=0,W=0,E=v.end-s,O={size:0,start:0,skip:0};t:for(let H=v.pos-A;v.pos>H;){let I=v.size;if(v.id==k&&I>=0){O.size=N,O.start=L,O.skip=W,W+=4,N+=4,v.next();continue}let _=v.pos-I;if(I<0||_=o?4:0,ft=v.start;for(v.next();v.pos>_;){if(v.size<0)if(v.size==-3||v.size==-4)nt+=4;else break t;else v.id>=o&&(nt+=4);v.next()}L=ft,N+=I,W+=nt}return(k<0||N==A)&&(O.size=N,O.start=L,O.skip=W),O.size>4?O:void 0}function b(A,k,v){let{id:N,start:L,end:W,size:E}=l;if(l.next(),E>=0&&N4){let H=l.pos-(E-4);for(;l.pos>H;)v=b(A,k,v)}k[--v]=O,k[--v]=W-A,k[--v]=L-A,k[--v]=N}else E==-3?h=N:E==-4&&(f=N);return v}let C=[],T=[];for(;l.pos>0;)c(n.start||0,n.bufferStart||0,C,T,-1,0);let P=(t=n.length)!==null&&t!==void 0?t:C.length?T[0]+C[0].length:0;return new G(a[n.topID],C.reverse(),T.reverse(),P)}var ha=new WeakMap;function Tn(n,t){if(!n.isAnonymous||t instanceof se||t.type!=n)return 1;let e=ha.get(t);if(e==null){e=1;for(let i of t.children){if(i.type!=n||!(i instanceof G)){e=1;break}e+=Tn(n,i)}ha.set(t,e)}return e}function Cr(n,t,e,i,s,r,o,l,a){let h=0;for(let p=i;p=f)break;k+=v}if(T==P+1){if(k>f){let v=p[P];d(v.children,v.positions,0,v.children.length,g[P]+C);continue}c.push(p[P])}else{let v=g[T-1]+p[T-1].length-A;c.push(Cr(n,p,g,P,T,A,v,null,a))}u.push(A+C-r)}}return d(t,e,i,s,0),(l||a)(c,u,o)}var Me=class n{constructor(t,e,i,s,r=!1,o=!1){this.from=t,this.to=e,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(t,e=[],i=!1){let s=[new n(0,t.length,t,0,!1,i)];for(let r of e)r.to>t.length&&s.push(r);return s}static applyChanges(t,e,i=128){if(!e.length)return t;let s=[],r=1,o=t.length?t[0]:null;for(let l=0,a=0,h=0;;l++){let f=l=i)for(;o&&o.from=u.from||c<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,c)-h;u=d>=p?null:new n(d,p,u.tree,u.offset+h,l>0,!!f)}if(u&&s.push(u),o.to>c)break;o=rnew Si(s.from,s.to)):[new Si(0,0)]:[new Si(0,t.length)],this.createParse(t,e||[],i)}parse(t,e,i){let s=this.startParse(t,e,i);for(;;){let r=s.advance();if(r)return r}}},kr=class{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}};var Sp=new B({perNode:!0});var Jc=0,Et=class n{constructor(t,e,i,s){this.name=t,this.set=e,this.base=i,this.modified=s,this.id=Jc++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let i=typeof t=="string"?t:"?";if(t instanceof n&&(e=t),e?.base)throw new Error("Can not derive from a modified tag");let s=new n(i,[],null,[]);if(s.set.push(s),e)for(let r of e.set)s.set.push(r);return s}static defineModifier(t){let e=new Rn(t);return i=>i.modified.indexOf(e)>-1?i:Rn.get(i.base||i,i.modified.concat(e).sort((s,r)=>s.id-r.id))}},Yc=0,Rn=class n{constructor(t){this.name=t,this.instances=[],this.id=Yc++}static get(t,e){if(!e.length)return t;let i=e[0].instances.find(l=>l.base==t&&Xc(e,l.modified));if(i)return i;let s=[],r=new Et(t.name,s,t,e);for(let l of e)l.instances.push(r);let o=Qc(e);for(let l of t.set)if(!l.modified.length)for(let a of o)s.push(n.get(l,a));return r}};function Xc(n,t){return n.length==t.length&&n.every((e,i)=>e==t[i])}function Qc(n){let t=[[]];for(let e=0;ei.length-e.length)}function pa(n){let t=Object.create(null);for(let e in n){let i=n[e];Array.isArray(i)||(i=[i]);for(let s of e.split(" "))if(s){let r=[],o=2,l=s;for(let c=0;;){if(l=="..."&&c>0&&c+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),c+=u[0].length,c==s.length)break;let d=s[c++];if(c==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(c)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let f=new De(i,o,a>0?r.slice(0,a):null);t[h]=f.sort(t[h])}}return ga.add(t)}var ga=new B({combine(n,t){let e,i,s;for(;n||t;){if(!n||t&&n.depth>=t.depth?(s=t,t=t.next):(s=n,n=n.next),e&&e.mode==s.mode&&!s.context&&!e.context)continue;let r=new De(s.tags,s.mode,s.context);e?e.next=r:i=r,e=r}return i}}),De=class{constructor(t,e,i,s){this.tags=t,this.mode=e,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(t){return!t||t.depth{let o=s;for(let l of r)for(let a of l.set){let h=e[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function Zc(n,t){let e=null;for(let i of n){let s=i.style(t);s&&(e=e?e+" "+s:s)}return e}function ma(n,t,e,i=0,s=n.length){let r=new Mr(i,Array.isArray(t)?t:[t],e);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}var Mr=class{constructor(t,e,i){this.at=t,this.highlighters=e,this.span=i,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,i,s,r){let{type:o,from:l,to:a}=t;if(l>=i||a<=e)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,f=tu(t)||De.empty,c=Zc(r,f.tags);if(c&&(h&&(h+=" "),h+=c,f.mode==1&&(s+=(s?" ":"")+c)),this.startSpan(Math.max(e,l),h),f.opaque)return;let u=t.tree&&t.tree.prop(B.mounted);if(u&&u.overlay){let d=t.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(m=>!m.scope||m.scope(u.tree.type)),g=t.firstChild();for(let m=0,b=l;;m++){let C=m=T||!t.nextSibling())););if(!C||T>i)break;b=C.to+l,b>e&&(this.highlightRange(d.cursor(),Math.max(e,C.from+l),Math.min(i,b),"",p),this.startSpan(Math.min(i,b),h))}g&&t.parent()}else if(t.firstChild()){u&&(s="");do if(!(t.to<=e)){if(t.from>=i)break;this.highlightRange(t,e,i,s,r),this.startSpan(Math.min(i,t.to),h)}while(t.nextSibling());t.parent()}}};function tu(n){let t=n.type.prop(ga);for(;t&&t.context&&!n.matchContext(t.context);)t=t.next;return t||null}var x=Et.define,Bn=x(),re=x(),ua=x(re),da=x(re),oe=x(),En=x(oe),Ar=x(oe),$t=x(),Te=x($t),qt=x(),Kt=x(),Tr=x(),Di=x(Tr),Ln=x(),y={comment:Bn,lineComment:x(Bn),blockComment:x(Bn),docComment:x(Bn),name:re,variableName:x(re),typeName:ua,tagName:x(ua),propertyName:da,attributeName:x(da),className:x(re),labelName:x(re),namespace:x(re),macroName:x(re),literal:oe,string:En,docString:x(En),character:x(En),attributeValue:x(En),number:Ar,integer:x(Ar),float:x(Ar),bool:x(oe),regexp:x(oe),escape:x(oe),color:x(oe),url:x(oe),keyword:qt,self:x(qt),null:x(qt),atom:x(qt),unit:x(qt),modifier:x(qt),operatorKeyword:x(qt),controlKeyword:x(qt),definitionKeyword:x(qt),moduleKeyword:x(qt),operator:Kt,derefOperator:x(Kt),arithmeticOperator:x(Kt),logicOperator:x(Kt),bitwiseOperator:x(Kt),compareOperator:x(Kt),updateOperator:x(Kt),definitionOperator:x(Kt),typeOperator:x(Kt),controlOperator:x(Kt),punctuation:Tr,separator:x(Tr),bracket:Di,angleBracket:x(Di),squareBracket:x(Di),paren:x(Di),brace:x(Di),content:$t,heading:Te,heading1:x(Te),heading2:x(Te),heading3:x(Te),heading4:x(Te),heading5:x(Te),heading6:x(Te),contentSeparator:x($t),list:x($t),quote:x($t),emphasis:x($t),strong:x($t),link:x($t),monospace:x($t),strikethrough:x($t),inserted:x(),deleted:x(),changed:x(),invalid:x(),meta:Ln,documentMeta:x(Ln),annotation:x(Ln),processingInstruction:x(Ln),definition:Et.defineModifier("definition"),constant:Et.defineModifier("constant"),function:Et.defineModifier("function"),standard:Et.defineModifier("standard"),local:Et.defineModifier("local"),special:Et.defineModifier("special")};for(let n in y){let t=y[n];t instanceof Et&&(t.name=n)}var Mp=Dr([{tag:y.link,class:"tok-link"},{tag:y.heading,class:"tok-heading"},{tag:y.emphasis,class:"tok-emphasis"},{tag:y.strong,class:"tok-strong"},{tag:y.keyword,class:"tok-keyword"},{tag:y.atom,class:"tok-atom"},{tag:y.bool,class:"tok-bool"},{tag:y.url,class:"tok-url"},{tag:y.labelName,class:"tok-labelName"},{tag:y.inserted,class:"tok-inserted"},{tag:y.deleted,class:"tok-deleted"},{tag:y.literal,class:"tok-literal"},{tag:y.string,class:"tok-string"},{tag:y.number,class:"tok-number"},{tag:[y.regexp,y.escape,y.special(y.string)],class:"tok-string2"},{tag:y.variableName,class:"tok-variableName"},{tag:y.local(y.variableName),class:"tok-variableName tok-local"},{tag:y.definition(y.variableName),class:"tok-variableName tok-definition"},{tag:y.special(y.variableName),class:"tok-variableName2"},{tag:y.definition(y.propertyName),class:"tok-propertyName tok-definition"},{tag:y.typeName,class:"tok-typeName"},{tag:y.namespace,class:"tok-namespace"},{tag:y.className,class:"tok-className"},{tag:y.macroName,class:"tok-macroName"},{tag:y.propertyName,class:"tok-propertyName"},{tag:y.operator,class:"tok-operator"},{tag:y.comment,class:"tok-comment"},{tag:y.meta,class:"tok-meta"},{tag:y.invalid,class:"tok-invalid"},{tag:y.punctuation,class:"tok-punctuation"}]);var Or,Xe=new B;function eu(n){return M.define({combine:n?t=>t.concat(n):void 0})}var iu=new B,dt=class{constructor(t,e,i=[],s=""){this.data=t,this.name=s,$.prototype.hasOwnProperty("tree")||Object.defineProperty($.prototype,"tree",{get(){return Rt(this)}}),this.parser=e,this.extension=[Qe.of(this),$.languageData.of((r,o,l)=>{let a=ya(r,o,l),h=a.type.prop(Xe);if(!h)return[];let f=r.facet(h),c=a.type.prop(iu);if(c){let u=a.resolve(o-a.from,l);for(let d of c)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(f)}}return f})].concat(i)}isActiveAt(t,e,i=-1){return ya(t,e,i).type.prop(Xe)==this.data}findRegions(t){let e=t.facet(Qe);if(e?.data==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Xe)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(B.mounted);if(l){if(l.tree.prop(Xe)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;a=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-i,e-i)}},Oi=null,Bi=class n{constructor(t,e,i=[],s,r,o,l,a){this.parser=t,this.state=e,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(t,e,i){return new n(t,e,[],G.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Rr(this.state.doc),this.fragments)}work(t,e){return e!=null&&e>=this.state.doc.length&&(e=void 0),this.tree!=G.empty&&this.isDone(e??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof t=="number"){let s=Date.now()+t;t=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),e!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&e=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(Me.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Oi;Oi=this;try{return t()}finally{Oi=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=ba(t,e.from,e.to);return t}changes(t,e){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!t.empty){let a=[];if(t.iterChangedRanges((h,f,c,u)=>a.push({fromA:h,toA:f,fromB:c,toB:u})),i=Me.applyChanges(i,a),s=G.empty,r=0,o={from:t.mapPos(o.from,-1),to:t.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let f=t.mapPos(h.from,1),c=t.mapPos(h.to,-1);ft.from&&(this.fragments=ba(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=e?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends Ti{createParse(e,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=Oi;if(a){for(let h of s)a.tempSkipped.push(h);t&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,t]):t)}return this.parsedPos=o,new G(ot.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&e[0].from==0&&e[0].to>=t}static get(){return Oi}};function ba(n,t,e){return Me.applyChanges(n,[{fromA:t,toA:e,fromB:t,toB:e}])}var Ei=class n{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),i=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,i)||e.takeTree(),new n(e)}static init(t){let e=Math.min(3e3,t.doc.length),i=Bi.create(t.facet(Qe).parser,t,{from:0,to:e});return i.work(20,e)||i.takeTree(),new n(i)}};dt.state=Ct.define({create:Ei.init,update(n,t){for(let e of t.effects)if(e.is(dt.setState))return e.value;return t.startState.facet(Qe)!=t.state.facet(Qe)?Ei.init(t.state):n.apply(t)}});var Ca=n=>{let t=setTimeout(()=>n(),500);return()=>clearTimeout(t)};typeof requestIdleCallback<"u"&&(Ca=n=>{let t=-1,e=setTimeout(()=>{t=requestIdleCallback(n,{timeout:400})},100);return()=>t<0?clearTimeout(e):cancelIdleCallback(t)});var Br=typeof navigator<"u"&&(!((Or=navigator.scheduling)===null||Or===void 0)&&Or.isInputPending)?()=>navigator.scheduling.isInputPending():null,nu=Dt.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(dt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(dt.state);(e.tree!=e.context.tree||!e.context.isDone(t.doc.length))&&(this.working=Ca(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>Br&&Br()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-e,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:dt.setState.of(new Ei(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(e=>Mt(this.view.state,e)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Qe=M.define({combine(n){return n.length?n[0]:null},enables:n=>[dt.state,nu,D.contentAttributes.compute([n],t=>{let e=t.facet(n);return e&&e.name?{"data-language":e.name}:{}})]});var su=M.define(),ti=M.define({combine:n=>{if(!n.length)return" ";let t=n[0];if(!t||/\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return t}});function le(n){let t=n.facet(ti);return t.charCodeAt(0)==9?n.tabSize*t.length:t.length}function ei(n,t){let e="",i=n.tabSize,s=n.facet(ti)[0];if(s==" "){for(;t>=i;)e+=" ",t-=i;s=" "}for(let r=0;r=t?ru(n,e,t):null}var Oe=class{constructor(t,e={}){this.state=t,this.options=e,this.unit=le(t)}lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==t?{text:"",from:t}:(e<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(t,e=t.length){return ye(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:i,from:s}=this.lineAt(t,e),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Aa=new B;function ru(n,t,e){let i=t.resolveStack(e),s=t.resolveInner(e,-1).resolve(e,0).enterUnfinishedNodesBefore(e);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return Ma(i,n,e)}function Ma(n,t,e){for(let i=n;i;i=i.next){let s=lu(i.node);if(s)return s(Pr.create(t,e,i))}return 0}function ou(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function lu(n){let t=n.type.prop(Aa);if(t)return t;let e=n.firstChild,i;if(e&&(i=e.type.prop(B.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>cu(o,!0,1,void 0,r&&!ou(o)?s.from:void 0)}return n.parent==null?au:null}function au(){return 0}var Pr=class n extends Oe{constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,this.context=i}get node(){return this.context.node}static create(t,e,i){return new n(t,e,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let i=t.resolve(e.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(hu(i,t))break;e=this.state.doc.lineAt(i.from)}return this.lineIndent(e.from)}continue(){return Ma(this.context.next,this.base,this.pos)}};function hu(n,t){for(let e=t;e;e=e.parent)if(n==e)return!0;return!1}function fu(n){let t=n.node,e=t.childAfter(t.from),i=t.lastChild;if(!e)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(e.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=e.to;;){let a=t.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(e.to-r.from))[0].length;return{from:e.from,to:e.to+h}}l=a.to}}function cu(n,t,e,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=t?fu(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*e)}var uu=200;function Ta(){return $.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let t=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!t.length)return n;let e=n.newDoc,{head:i}=n.newSelection.main,s=e.lineAt(i);if(i>s.from+uu)return n;let r=e.sliceString(s.from,i);if(!t.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let f=o.doc.lineAt(h);if(f.from==l)continue;l=f.from;let c=In(o,f.from);if(c==null)continue;let u=/^\s*/.exec(f.text)[0],d=ei(o,c);u!=d&&a.push({from:f.from,to:f.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}var Ze=class n{constructor(t,e){this.specs=t;let i;function s(l){let a=yt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}let r=typeof e.all=="string"?e.all:e.all?s(e.all):void 0,o=e.scope;this.scope=o instanceof dt?l=>l.prop(Xe)==o.data:o?l=>l==o:void 0,this.style=Dr(t.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new yt(i):null,this.themeType=e.themeType}static define(t,e){return new n(t,e||{})}},Nr=M.define(),Da=M.define({combine(n){return n.length?[n[0]]:null}});function Er(n){let t=n.facet(Nr);return t.length?t:n.facet(Da)}function Hn(n,t){let e=[du],i;return n instanceof Ze&&(n.module&&e.push(D.styleModule.of(n.module)),i=n.themeType),t?.fallback?e.push(Da.of(n)):i?e.push(Nr.computeN([D.darkTheme],s=>s.facet(D.darkTheme)==(i=="dark")?[n]:[])):e.push(Nr.of(n)),e}var Ir=class{constructor(t){this.markCache=Object.create(null),this.tree=Rt(t.state),this.decorations=this.buildDeco(t,Er(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Rt(t.state),i=Er(t.state),s=i!=Er(t.startState),{viewport:r}=t.view,o=t.changes.mapPos(this.decoratedTo,1);e.length=r.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=o):(e!=this.tree||t.viewportChanged||s)&&(this.tree=e,this.decorations=this.buildDeco(t.view,i),this.decoratedTo=r.to)}buildDeco(t,e){if(!e||!this.tree.length)return z.none;let i=new ge;for(let{from:s,to:r}of t.visibleRanges)ma(this.tree,e,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=z.mark({class:a})))},s,r);return i.finish()}},du=He.high(Dt.fromClass(Ir,{decorations:n=>n.decorations})),Oa=Ze.define([{tag:y.meta,color:"#404740"},{tag:y.link,textDecoration:"underline"},{tag:y.heading,textDecoration:"underline",fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strong,fontWeight:"bold"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.keyword,color:"#708"},{tag:[y.atom,y.bool,y.url,y.contentSeparator,y.labelName],color:"#219"},{tag:[y.literal,y.inserted],color:"#164"},{tag:[y.string,y.deleted],color:"#a11"},{tag:[y.regexp,y.escape,y.special(y.string)],color:"#e40"},{tag:y.definition(y.variableName),color:"#00f"},{tag:y.local(y.variableName),color:"#30a"},{tag:[y.typeName,y.namespace],color:"#085"},{tag:y.className,color:"#167"},{tag:[y.special(y.variableName),y.macroName],color:"#256"},{tag:y.definition(y.propertyName),color:"#00c"},{tag:y.comment,color:"#940"},{tag:y.invalid,color:"#f00"}]),pu=D.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Ba=1e4,Ea="()[]{}",La=M.define({combine(n){return me(n,{afterCursor:!0,brackets:Ea,maxScanDistance:Ba,renderMatch:yu})}}),gu=z.mark({class:"cm-matchingBracket"}),mu=z.mark({class:"cm-nonmatchingBracket"});function yu(n){let t=[],e=n.matched?gu:mu;return t.push(e.range(n.start.from,n.start.to)),n.end&&t.push(e.range(n.end.from,n.end.to)),t}function wa(n){let t=[],e=n.facet(La);for(let i of n.selection.ranges){if(!i.empty)continue;let s=Lt(n,i.head,-1,e)||i.head>0&&Lt(n,i.head-1,1,e)||e.afterCursor&&(Lt(n,i.head,1,e)||i.headn.decorations}),wu=[bu,pu];function Ra(n={}){return[La.of(n),wu]}var xu=new B;function Hr(n,t,e){let i=n.prop(t<0?B.openedBy:B.closedBy);if(i)return i;if(n.name.length==1){let s=e.indexOf(n.name);if(s>-1&&s%2==(t<0?1:0))return[e[s+t]]}return null}function Fr(n){let t=n.type.prop(xu);return t?t(n.node):n}function Lt(n,t,e,i={}){let s=i.maxScanDistance||Ba,r=i.brackets||Ea,o=Rt(n),l=o.resolveInner(t,e);for(let a=l;a;a=a.parent){let h=Hr(a.type,e,r);if(h&&a.from0?t>=f.from&&tf.from&&t<=f.to))return vu(n,t,e,a,f,h,r)}}return ku(n,t,e,o,l.type,s,r)}function vu(n,t,e,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,f=l?.cursor();if(f&&(e<0?f.childBefore(i.from):f.childAfter(i.to)))do if(e<0?f.to<=i.from:f.from>=i.to){if(h==0&&r.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:e<0?t-1:t,to:e>0?t+1:t},f=n.doc.iterRange(t,e>0?n.doc.length:0),c=0;for(let u=0;!f.next().done&&u<=r;){let d=f.value;e<0&&(u+=d.length);let p=t+u*e;for(let g=e>0?0:d.length-1,m=e>0?d.length:-1;g!=m;g+=e){let b=o.indexOf(d[g]);if(!(b<0||i.resolveInner(p+g,1).type!=s))if(b%2==0==e>0)c++;else{if(c==1)return{start:h,end:{from:p+g,to:p+g+1},matched:b>>1==a>>1};c--}}e>0&&(u+=d.length)}return f.done?{start:h,matched:!1}:null}function xa(n,t,e,i=0,s=0){t==null&&(t=n.search(/[^\s\u00a0]/),t==-1&&(t=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pose}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,t.length);return s(r)==s(t)?(e!==!1&&(this.pos+=t.length),!0):null}else{let s=this.string.slice(this.pos).match(t);return s&&s.index>0?null:(s&&e!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}};function Su(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Cu,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||zr,mergeTokens:n.mergeTokens!==!1}}function Cu(n){if(typeof n!="object")return n;let t={};for(let e in n){let i=n[e];t[e]=i instanceof Array?i.slice():i}return t}var va=new WeakMap,Li=class n extends dt{constructor(t){let e=eu(t.languageData),i=Su(t),s,r=new class extends Ti{createParse(o,l,a){return new Wr(s,o,l,a)}};super(e,r,[],t.name),this.topNode=Du(e,this),s=this,this.streamParser=i,this.stateAfter=new B({perNode:!0}),this.tokenTable=t.tokenTable?new Nn(i.tokenTable):Tu}static define(t){return new n(t)}getIndent(t){let e,{overrideIndentation:i}=t.options;i&&(e=va.get(t.state),e!=null&&e1e4)return null;for(;r=i&&e+t.length<=s&&t.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:e+t.length};for(let o=t.children.length-1;o>=0;o--){let l=t.children[o],a=e+t.positions[o],h=l instanceof G&&a=t.length)return t;!s&&e==0&&t.type==n.topNode&&(s=!0);for(let r=t.children.length-1;r>=0;r--){let o=t.positions[r],l=t.children[r],a;if(oe&&Vr(n,r.tree,0-r.offset,e,l),h;if(a&&a.pos<=i&&(h=Pa(n,r.tree,e+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?le(s):4),tree:G.empty}}var Wr=class{constructor(t,e,i,s){this.lang=t,this.input=e,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=Bi.get(),o=s[0].from,{state:l,tree:a}=Au(t,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(le(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let t=Bi.get(),e=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(e,this.chunkStart+512);for(t&&(i=Math.min(i,t.viewport.to));this.parsedPos=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)e==` `&&(e="");else{let i=e.indexOf(` `);i>-1&&(e=e.slice(0,i))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),i=t+e.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(e=e.slice(0,r-(i-e.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);e+=l,i=o+l.length}return{line:e,end:i}}skipGapsTo(t,e,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=t+e;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;e+=o-s}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(e,s,1),e+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==t&&this.chunk[o+2]==e?this.chunk[o+2]=i:this.chunk.push(t,e,i,r),s}parseLine(t){let{line:e,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Pn(e,t?t.state.tabSize:4,t?le(t.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Na(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPost.start)return s}throw new Error("Stream parser failed to advance stream.")}var zr=Object.create(null),Ri=[ot.none],Mu=new Dn(Ri),ka=[],Sa=Object.create(null),Ia=Object.create(null);for(let[n,t]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Ia[n]=Ha(zr,t);var Nn=class{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),Ia)}resolve(t){return t?this.table[t]||(this.table[t]=Ha(this.extra,t)):0}},Tu=new Nn(zr);function Lr(n,t){ka.indexOf(n)>-1||(ka.push(n),console.warn(t))}function Ha(n,t){let e=[];for(let l of t.split(" ")){let a=[];for(let h of l.split(".")){let f=n[h]||y[h];f?typeof f=="function"?a.length?a=a.map(f):Lr(h,`Modifier ${h} used at start of tag`):a.length?Lr(h,`Tag ${h} used as modifier`):a=Array.isArray(f)?f:[f]:Lr(h,`Unknown highlighting tag ${h}`)}for(let h of a)e.push(h)}if(!e.length)return 0;let i=t.replace(/ /g,"_"),s=i+" "+e.map(l=>l.id),r=Sa[s];if(r)return r.id;let o=Sa[s]=ot.define({id:Ri.length,name:i,props:[pa({[i]:e})]});return Ri.push(o),o.id}function Du(n,t){let e=ot.define({id:Ri.length,name:"Document",props:[Xe.add(()=>n),Aa.add(()=>i=>t.getIndent(i))],top:!0});return Ri.push(e),e}var Np={rtl:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:K.RTL}),ltr:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:K.LTR}),auto:z.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Ou=n=>{let{state:t}=n,e=t.doc.lineAt(t.selection.main.from),i=Gr(n.state,e.from);return i.line?Bu(n):i.block?Lu(n):!1};function jr(n,t){return({state:e,dispatch:i})=>{if(e.readOnly)return!1;let s=n(t,e);return s?(i(e.update(s)),!0):!1}}var Bu=jr(Nu,0);var Eu=jr(Ua,0);var Lu=jr((n,t)=>Ua(n,t,Pu(t)),0);function Gr(n,t){let e=n.languageDataAt("commentTokens",t,1);return e.length?e[0]:{}}var Pi=50;function Ru(n,{open:t,close:e},i,s){let r=n.sliceDoc(i-Pi,i),o=n.sliceDoc(s,s+Pi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-t.length,h)==t&&o.slice(a,a+e.length)==e)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let f,c;s-i<=2*Pi?f=c=n.sliceDoc(i,s):(f=n.sliceDoc(i,i+Pi),c=n.sliceDoc(s-Pi,s));let u=/^\s*/.exec(f)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-e.length;return f.slice(u,u+t.length)==t&&c.slice(p,p+e.length)==e?{open:{pos:i+u+t.length,margin:/\s/.test(f.charAt(u+t.length))?1:0},close:{pos:s-d-e.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function Pu(n){let t=[];for(let e of n.selection.ranges){let i=n.doc.lineAt(e.from),s=e.to<=i.to?i:n.doc.lineAt(e.to);s.from>i.from&&s.from==e.to&&(s=e.to==i.to+1?i:n.doc.lineAt(e.to-1));let r=t.length-1;r>=0&&t[r].to>i.from?t[r].to=s.to:t.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return t}function Ua(n,t,e=t.selection.ranges){let i=e.map(r=>Gr(t,r.from).block);if(!i.every(r=>r))return null;let s=e.map((r,o)=>Ru(t,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:t.changes(e.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>c.from)){s=c.from;let u=/^\s*/.exec(c.text)[0].length,d=u==c.length,p=c.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:f,single:c}of i)(c||!f)&&r.push({from:l.from+h,insert:a+" "});let o=t.changes(r);return{changes:o,selection:t.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,f=h+a.length;o.text[f-o.from]==" "&&f++,r.push({from:h,to:f})}return{changes:r}}return null}var qr=mt.define(),Iu=mt.define(),Hu=M.define(),ja=M.define({combine(n){return me(n,{minDepth:100,newGroupDelay:500,joinToEvent:(t,e)=>e},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(t,e)=>(i,s)=>t(i,s)||e(i,s)})}}),Ga=Ct.define({create(){return Be.empty},update(n,t){let e=t.state.facet(ja),i=t.annotation(qr);if(i){let a=Pt.fromTransaction(t,i.selection),h=i.side,f=h==0?n.undone:n.done;return a?f=Wn(f,f.length,e.minDepth,a):f=Qa(f,t.startState.selection),new Be(h==0?i.rest:f,h==0?f:i.rest)}let s=t.annotation(Iu);if((s=="full"||s=="before")&&(n=n.isolate()),t.annotation(X.addToHistory)===!1)return t.changes.empty?n:n.addMapping(t.changes.desc);let r=Pt.fromTransaction(t),o=t.annotation(X.time),l=t.annotation(X.userEvent);return r?n=n.addChanges(r,o,l,e,t):t.selection&&(n=n.addSelection(t.startState.selection,o,l,e.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(t=>t.toJSON()),undone:n.undone.map(t=>t.toJSON())}},fromJSON(n){return new Be(n.done.map(Pt.fromJSON),n.undone.map(Pt.fromJSON))}});function Ja(n={}){return[Ga,ja.of(n),D.domEventHandlers({beforeinput(t,e){let i=t.inputType=="historyUndo"?Ya:t.inputType=="historyRedo"?Kr:null;return i?(t.preventDefault(),i(e)):!1}})]}function Vn(n,t){return function({state:e,dispatch:i}){if(!t&&e.readOnly)return!1;let s=e.field(Ga,!1);if(!s)return!1;let r=s.pop(n,e,t);return r?(i(r),!0):!1}}var Ya=Vn(0,!1),Kr=Vn(1,!1),Fu=Vn(0,!0),Wu=Vn(1,!0);var Pt=class n{constructor(t,e,i,s,r){this.changes=t,this.effects=e,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(t){return new n(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){var t,e,i;return{changes:(t=this.changes)===null||t===void 0?void 0:t.toJSON(),mapped:(e=this.mapped)===null||e===void 0?void 0:e.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(t){return new n(t.changes&&st.fromJSON(t.changes),[],t.mapped&&jt.fromJSON(t.mapped),t.startSelection&&w.fromJSON(t.startSelection),t.selectionsAfter.map(w.fromJSON))}static fromTransaction(t,e){let i=vt;for(let s of t.startState.facet(Hu)){let r=s(t);r.length&&(i=i.concat(r))}return!i.length&&t.changes.empty?null:new n(t.changes.invert(t.startState.doc),i,void 0,e||t.startState.selection,vt)}static selection(t){return new n(void 0,vt,void 0,void 0,t)}};function Wn(n,t,e,i){let s=t+1>e+20?t-e-1:0,r=n.slice(s,t);return r.push(i),r}function Vu(n,t){let e=[],i=!1;return n.iterChangedRanges((s,r)=>e.push(s,r)),t.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=f&&(i=!0)}}),i}function zu(n,t){return n.ranges.length==t.ranges.length&&n.ranges.filter((e,i)=>e.empty!=t.ranges[i].empty).length===0}function Xa(n,t){return n.length?t.length?n.concat(t):n:t}var vt=[],_u=200;function Qa(n,t){if(n.length){let e=n[n.length-1],i=e.selectionsAfter.slice(Math.max(0,e.selectionsAfter.length-_u));return i.length&&i[i.length-1].eq(t)?n:(i.push(t),Wn(n,n.length-1,1e9,e.setSelAfter(i)))}else return[Pt.selection([t])]}function qu(n){let t=n[n.length-1],e=n.slice();return e[n.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),e}function _r(n,t){if(!n.length)return n;let e=n.length,i=vt;for(;e;){let s=Ku(n[e-1],t,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,e);return r[e-1]=s,r}else t=s.mapped,e--,i=s.selectionsAfter}return i.length?[Pt.selection(i)]:vt}function Ku(n,t,e){let i=Xa(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(t)):vt,e);if(!n.changes)return Pt.selection(i);let s=n.changes.map(t),r=t.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Pt(s,U.mapEffects(n.effects,t),o,n.startSelection.map(r),i)}var $u=/^(input\.type|delete)($|\.)/,Be=class n{constructor(t,e,i=0,s=void 0){this.done=t,this.undone=e,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(t,e,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&t.changes&&(!i||$u.test(i))&&(!l.selectionsAfter.length&&e-this.prevTime0&&e-this.prevTimee.empty?n.moveByChar(e,t):zn(e,t))}function it(n){return n.textDirectionAt(n.state.selection.main.head)==K.LTR}var eh=n=>th(n,!it(n)),ih=n=>th(n,it(n));function nh(n,t){return It(n,e=>e.empty?n.moveByGroup(e,t):zn(e,t))}var Uu=n=>nh(n,!it(n)),ju=n=>nh(n,it(n));var Kp=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function Gu(n,t,e){if(t.type.prop(e))return!0;let i=t.to-t.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(t.from,t.to)))||t.firstChild}function _n(n,t,e){let i=Rt(n).resolveInner(t.head),s=e?B.closedBy:B.openedBy;for(let a=t.head;;){let h=e?i.childAfter(a):i.childBefore(a);if(!h)break;Gu(n,h,s)?i=h:a=e?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=e?Lt(n,i.from,1):Lt(n,i.to,-1))&&o.matched?l=e?o.end.to:o.end.from:l=e?i.to:i.from,w.cursor(l,e?-1:1)}var Ju=n=>It(n,t=>_n(n.state,t,!it(n))),Yu=n=>It(n,t=>_n(n.state,t,it(n)));function sh(n,t){return It(n,e=>{if(!e.empty)return zn(e,t);let i=n.moveVertically(e,t);return i.head!=e.head?i:n.moveToLineBoundary(e,t)})}var rh=n=>sh(n,!1),oh=n=>sh(n,!0);function lh(n){let t=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,t,e.height):zn(o,t));if(s.eq(i.selection))return!1;let r;if(e.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+e.marginTop,h=l.bottom-e.marginBottom;o&&o.top>a&&o.bottomah(n,!1),$r=n=>ah(n,!0);function ae(n,t,e){let i=n.lineBlockAt(t.head),s=n.moveToLineBoundary(t,e);if(s.head==t.head&&s.head!=(e?i.to:i.from)&&(s=n.moveToLineBoundary(t,e,!1)),!e&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(s=w.cursor(i.from+r))}return s}var Xu=n=>It(n,t=>ae(n,t,!0)),Qu=n=>It(n,t=>ae(n,t,!1)),Zu=n=>It(n,t=>ae(n,t,!it(n))),td=n=>It(n,t=>ae(n,t,it(n))),ed=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).from,1)),id=n=>It(n,t=>w.cursor(n.lineBlockAt(t.head).to,-1));function nd(n,t,e){let i=!1,s=ii(n.selection,r=>{let o=Lt(n,r.head,-1)||Lt(n,r.head,1)||r.head>0&&Lt(n,r.head-1,1)||r.headnd(n,t,!1);function kt(n,t){let e=ii(n.state.selection,i=>{let s=t(i);return w.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return e.eq(n.state.selection)?!1:(n.dispatch(Nt(n.state,e)),!0)}function hh(n,t){return kt(n,e=>n.moveByChar(e,t))}var fh=n=>hh(n,!it(n)),ch=n=>hh(n,it(n));function uh(n,t){return kt(n,e=>n.moveByGroup(e,t))}var rd=n=>uh(n,!it(n)),od=n=>uh(n,it(n));var ld=n=>kt(n,t=>_n(n.state,t,!it(n))),ad=n=>kt(n,t=>_n(n.state,t,it(n)));function dh(n,t){return kt(n,e=>n.moveVertically(e,t))}var ph=n=>dh(n,!1),gh=n=>dh(n,!0);function mh(n,t){return kt(n,e=>n.moveVertically(e,t,lh(n).height))}var Wa=n=>mh(n,!1),Va=n=>mh(n,!0),hd=n=>kt(n,t=>ae(n,t,!0)),fd=n=>kt(n,t=>ae(n,t,!1)),cd=n=>kt(n,t=>ae(n,t,!it(n))),ud=n=>kt(n,t=>ae(n,t,it(n))),dd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).from)),pd=n=>kt(n,t=>w.cursor(n.lineBlockAt(t.head).to)),za=({state:n,dispatch:t})=>(t(Nt(n,{anchor:0})),!0),_a=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.doc.length})),!0),qa=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:0})),!0),Ka=({state:n,dispatch:t})=>(t(Nt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),gd=({state:n,dispatch:t})=>(t(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),md=({state:n,dispatch:t})=>{let e=qn(n).map(({from:i,to:s})=>w.range(i,Math.min(s+1,n.doc.length)));return t(n.update({selection:w.create(e),userEvent:"select"})),!0},yd=({state:n,dispatch:t})=>{let e=ii(n.selection,i=>{let s=Rt(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return w.range(l.to,l.from)}return i});return e.eq(n.selection)?!1:(t(Nt(n,e)),!0)};function yh(n,t){let{state:e}=n,i=e.selection,s=e.selection.ranges.slice();for(let r of e.selection.ranges){let o=e.doc.lineAt(r.head);if(t?o.to0)for(let l=r;;){let a=n.moveVertically(l,t);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Nt(e,w.create(s,s.length-1))),!0)}var bd=n=>yh(n,!1),wd=n=>yh(n,!0),xd=({state:n,dispatch:t})=>{let e=n.selection,i=null;return e.ranges.length>1?i=w.create([e.main]):e.main.empty||(i=w.create([w.cursor(e.main.head)])),i?(t(Nt(n,i)),!0):!1};function Ni(n,t){if(n.state.readOnly)return!1;let e="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=t(r);ao&&(e="delete.forward",a=Fn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Fn(n,o,!1),l=Fn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:w.cursor(o,os(n)))i.between(t,t,(s,r)=>{st&&(t=e?r:s)});return t}var bh=(n,t,e)=>Ni(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(e&&!t&&s>o.from&&sbh(n,!1,!0);var wh=n=>bh(n,!0,!1),xh=(n,t)=>Ni(n,e=>{let i=e.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(t?r.to:r.from)){i==e.head&&r.number!=(t?s.doc.lines:1)&&(i+=t?1:-1);break}let a=Q(r.text,i-r.from,t)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),f=o(h);if(l!=null&&f!=l)break;(h!=" "||i!=e.head)&&(l=f),i=a}return i}),vh=n=>xh(n,!1),vd=n=>xh(n,!0);var kd=n=>Ni(n,t=>{let e=n.lineBlockAt(t.head).to;return t.headNi(n,t=>{let e=n.moveToLineBoundary(t,!1).head;return t.head>e?e:Math.max(0,t.head-1)}),Cd=n=>Ni(n,t=>{let e=n.moveToLineBoundary(t,!0).head;return t.head{if(n.readOnly)return!1;let e=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:R.of(["",""])},range:w.cursor(i.from)}));return t(n.update(e,{scrollIntoView:!0,userEvent:"input"})),!0},Md=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:Q(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:Q(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:w.cursor(l)}});return e.changes.empty?!1:(t(n.update(e,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function qn(n){let t=[],e=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),e>=s.number){let o=t[t.length-1];o.to=r.to,o.ranges.push(i)}else t.push({from:s.from,to:r.to,ranges:[i]});e=r.number+1}return t}function kh(n,t,e){if(n.readOnly)return!1;let i=[],s=[];for(let r of qn(n)){if(e?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(e?r.to+1:r.from-1),l=o.length+1;if(e){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(w.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(w.range(a.anchor-l,a.head-l))}}return i.length?(t(n.update({changes:i,scrollIntoView:!0,selection:w.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Td=({state:n,dispatch:t})=>kh(n,t,!1),Dd=({state:n,dispatch:t})=>kh(n,t,!0);function Sh(n,t,e){if(n.readOnly)return!1;let i=[];for(let r of qn(n))e?i.push({from:r.from,insert:n.doc.slice(r.from,r.to)+n.lineBreak}):i.push({from:r.to,insert:n.lineBreak+n.doc.slice(r.from,r.to)});let s=n.changes(i);return t(n.update({changes:s,selection:n.selection.map(s,e?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Od=({state:n,dispatch:t})=>Sh(n,t,!1),Bd=({state:n,dispatch:t})=>Sh(n,t,!0),Ed=n=>{if(n.state.readOnly)return!1;let{state:t}=n,e=t.changes(qn(t).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(e);return n.dispatch({changes:e,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Ld(n,t){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(t-1,t+1)))return{from:t,to:t};let e=Rt(n).resolveInner(t),i=e.childBefore(t),s=e.childAfter(t),r;return i&&s&&i.to<=t&&s.from>=t&&(r=i.type.prop(B.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}var $a=Ch(!1),Rd=Ch(!0);function Ch(n){return({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=t.changeByRange(s=>{let{from:r,to:o}=s,l=t.doc.lineAt(r),a=!n&&r==o&&Ld(t,r);n&&(r=o=(o<=l.to?l:t.doc.lineAt(o)).to);let h=new Oe(t,{simulateBreak:r,simulateDoubleBreak:!!a}),f=In(h,r);for(f==null&&(f=ye(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>e&&(i.empty||i.to>l.from)&&(t(l,s,i),e=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:w.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}var Pd=({state:n,dispatch:t})=>{if(n.readOnly)return!1;let e=Object.create(null),i=new Oe(n,{overrideIndentation:r=>{let o=e[r];return o??-1}}),s=Jr(n,(r,o,l)=>{let a=In(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],f=ei(n,a);(h!=f||l.fromn.readOnly?!1:(t(n.update(Jr(n,(e,i)=>{i.push({from:e.from,insert:n.facet(ti)})}),{userEvent:"input.indent"})),!0),Mh=({state:n,dispatch:t})=>n.readOnly?!1:(t(n.update(Jr(n,(e,i)=>{let s=/^\s*/.exec(e.text)[0];if(!s)return;let r=ye(s,n.tabSize),o=0,l=ei(n,Math.max(0,r-le(n)));for(;o(n.setTabFocusMode(),!0);var Id=[{key:"Ctrl-b",run:eh,shift:fh,preventDefault:!0},{key:"Ctrl-f",run:ih,shift:ch},{key:"Ctrl-p",run:rh,shift:ph},{key:"Ctrl-n",run:oh,shift:gh},{key:"Ctrl-a",run:ed,shift:dd},{key:"Ctrl-e",run:id,shift:pd},{key:"Ctrl-d",run:wh},{key:"Ctrl-h",run:Ur},{key:"Ctrl-k",run:kd},{key:"Ctrl-Alt-h",run:vh},{key:"Ctrl-o",run:Ad},{key:"Ctrl-t",run:Md},{key:"Ctrl-v",run:$r}],Hd=[{key:"ArrowLeft",run:eh,shift:fh,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Uu,shift:rd,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Zu,shift:cd,preventDefault:!0},{key:"ArrowRight",run:ih,shift:ch,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ju,shift:od,preventDefault:!0},{mac:"Cmd-ArrowRight",run:td,shift:ud,preventDefault:!0},{key:"ArrowUp",run:rh,shift:ph,preventDefault:!0},{mac:"Cmd-ArrowUp",run:za,shift:qa},{mac:"Ctrl-ArrowUp",run:Fa,shift:Wa},{key:"ArrowDown",run:oh,shift:gh,preventDefault:!0},{mac:"Cmd-ArrowDown",run:_a,shift:Ka},{mac:"Ctrl-ArrowDown",run:$r,shift:Va},{key:"PageUp",run:Fa,shift:Wa},{key:"PageDown",run:$r,shift:Va},{key:"Home",run:Qu,shift:fd,preventDefault:!0},{key:"Mod-Home",run:za,shift:qa},{key:"End",run:Xu,shift:hd,preventDefault:!0},{key:"Mod-End",run:_a,shift:Ka},{key:"Enter",run:$a,shift:$a},{key:"Mod-a",run:gd},{key:"Backspace",run:Ur,shift:Ur,preventDefault:!0},{key:"Delete",run:wh,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:vh,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:vd,preventDefault:!0},{mac:"Mod-Backspace",run:Sd,preventDefault:!0},{mac:"Mod-Delete",run:Cd,preventDefault:!0}].concat(Id.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Th=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Ju,shift:ld},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Yu,shift:ad},{key:"Alt-ArrowUp",run:Td},{key:"Shift-Alt-ArrowUp",run:Od},{key:"Alt-ArrowDown",run:Dd},{key:"Shift-Alt-ArrowDown",run:Bd},{key:"Mod-Alt-ArrowUp",run:bd},{key:"Mod-Alt-ArrowDown",run:wd},{key:"Escape",run:xd},{key:"Mod-Enter",run:Rd},{key:"Alt-l",mac:"Ctrl-l",run:md},{key:"Mod-i",run:yd,preventDefault:!0},{key:"Mod-[",run:Mh},{key:"Mod-]",run:Ah},{key:"Mod-Alt-\\",run:Pd},{key:"Shift-Mod-k",run:Ed},{key:"Shift-Mod-\\",run:sd},{key:"Mod-/",run:Ou},{key:"Alt-A",run:Eu},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Nd}].concat(Hd),Dh={key:"Tab",run:Ah,shift:Mh};var Fd={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},Wd={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},Oh=/[+\-*&^%:=<>!|\/]/,Qt;function Kn(n,t){var e=n.next();if(e=='"'||e=="'"||e=="`")return t.tokenize=Vd(e),t.tokenize(n,t);if(/[\d\.]/.test(e))return e=="."?n.match(/^[0-9]+([eE][\-+]?[0-9]+)?/):e=="0"?n.match(/^[xX][0-9a-fA-F]+/)||n.match(/^0[0-7]+/):n.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(e))return Qt=e,null;if(e=="/"){if(n.eat("*"))return t.tokenize=Bh,Bh(n,t);if(n.eat("/"))return n.skipToEnd(),"comment"}if(Oh.test(e))return n.eatWhile(Oh),"operator";n.eatWhile(/[\w\$_\xa1-\uffff]/);var i=n.current();return Fd.propertyIsEnumerable(i)?((i=="case"||i=="default")&&(Qt="case"),"keyword"):Wd.propertyIsEnumerable(i)?"atom":"variable"}function Vd(n){return function(t,e){for(var i=!1,s,r=!1;(s=t.next())!=null;){if(s==n&&!i){r=!0;break}i=!i&&n!="`"&&s=="\\"}return(r||!(i||n=="`"))&&(e.tokenize=Kn),"string"}}function Bh(n,t){for(var e=!1,i;i=n.next();){if(i=="/"&&e){t.tokenize=Kn;break}e=i=="*"}return"comment"}function Lh(n,t,e,i,s){this.indented=n,this.column=t,this.type=e,this.align=i,this.prev=s}function Yr(n,t,e){return n.context=new Lh(n.indented,t,e,null,n.context)}function Eh(n){if(n.context.prev){var t=n.context.type;return(t==")"||t=="]"||t=="}")&&(n.indented=n.context.indented),n.context=n.context.prev}}var Rh={name:"go",startState:function(n){return{tokenize:null,context:new Lh(-n,0,"top",!1),indented:0,startOfLine:!0}},token:function(n,t){var e=t.context;if(n.sol()&&(e.align==null&&(e.align=!1),t.indented=n.indentation(),t.startOfLine=!0,e.type=="case"&&(e.type="}")),n.eatSpace())return null;Qt=null;var i=(t.tokenize||Kn)(n,t);return i=="comment"||(e.align==null&&(e.align=!0),Qt=="{"?Yr(t,n.column(),"}"):Qt=="["?Yr(t,n.column(),"]"):Qt=="("?Yr(t,n.column(),")"):Qt=="case"?e.type="case":(Qt=="}"&&e.type=="}"||Qt==e.type)&&Eh(t),t.startOfLine=!1),i},indent:function(n,t,e){if(n.tokenize!=Kn&&n.tokenize!=null)return null;var i=n.context,s=t&&t.charAt(0);if(i.type=="case"&&/^(?:case|default)\b/.test(t))return i.indented;var r=s==i.type;return i.align?i.column+(r?0:1):i.indented+(r?0:e.unit)},languageData:{indentOnInput:/^\s([{}]|case |default\s*:)$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}}}};var Ph={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,t){let e;if(!t.inString&&(e=n.match(/^('''|"""|'|")/))&&(t.stringType=e[0],t.inString=!0),n.sol()&&!t.inString&&t.inArray===0&&(t.lhs=!0),t.inString){for(;t.inString;)if(n.match(t.stringType))t.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return t.lhs?"property":"string"}else{if(t.inArray&&n.peek()==="]")return n.next(),t.inArray--,"bracket";if(t.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(t.lhs&&n.eatWhile(function(i){return i!="="&&i!=" "}))return"property";if(t.lhs&&n.peek()==="=")return n.next(),t.lhs=!1,null;if(!t.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!t.lhs&&(n.match("true")||n.match("false")))return"atom";if(!t.lhs&&n.peek()==="[")return t.inArray++,n.next(),"bracket";if(!t.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}};var zd="#e5c07b",Nh="#e06c75",_d="#56b6c2",qd="#ffffff",$n="#abb2bf",Qr="#7d8799",Kd="#61afef",$d="#98c379",Ih="#d19a66",Ud="#c678dd",jd="#21252b",Hh="#2c313a",Fh="#282c34",Xr="#353a42",Gd="#3E4451",Wh="#528bff";var Jd=D.theme({"&":{color:$n,backgroundColor:Fh},".cm-content":{caretColor:Wh},".cm-cursor, .cm-dropCursor":{borderLeftColor:Wh},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Gd},".cm-panels":{backgroundColor:jd,color:$n},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:Fh,color:Qr,border:"none"},".cm-activeLineGutter":{backgroundColor:Hh},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Xr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Xr,borderBottomColor:Xr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Hh,color:$n}}},{dark:!0}),Yd=Ze.define([{tag:y.keyword,color:Ud},{tag:[y.name,y.deleted,y.character,y.propertyName,y.macroName],color:Nh},{tag:[y.function(y.variableName),y.labelName],color:Kd},{tag:[y.color,y.constant(y.name),y.standard(y.name)],color:Ih},{tag:[y.definition(y.name),y.separator],color:$n},{tag:[y.typeName,y.className,y.number,y.changed,y.annotation,y.modifier,y.self,y.namespace],color:zd},{tag:[y.operator,y.operatorKeyword,y.url,y.escape,y.regexp,y.link,y.special(y.string)],color:_d},{tag:[y.meta,y.comment],color:Qr},{tag:y.strong,fontWeight:"bold"},{tag:y.emphasis,fontStyle:"italic"},{tag:y.strikethrough,textDecoration:"line-through"},{tag:y.link,color:Qr,textDecoration:"underline"},{tag:y.heading,fontWeight:"bold",color:Nh},{tag:[y.atom,y.bool,y.special(y.variableName)],color:Ih},{tag:[y.processingInstruction,y.string,y.inserted],color:$d},{tag:y.invalid,color:qd}]),Vh=[Jd,Hn(Yd)];var Xd=Li.define(Rh),Qd=Li.define(Ph);function zh(n){return n.endsWith(".toml")?Qd:Xd}function _h(n){return n?Vh:Hn(Oa,{fallback:!0})}function Zr(){return document.documentElement.getAttribute("data-theme")==="dark"}var Un=class{view;langCompartment=new pe;themeCompartment=new pe;constructor(t){let e=[ra(),sa(),oa(),ia(),Ja(),Ta(),ti.of(" "),Ra(),this.langCompartment.of(zh(t.fileName)),this.themeCompartment.of(_h(t.isDarkMode))];if(t.onRun){let i=t.onRun;e.push(An.of([{key:"Mod-Enter",preventDefault:!0,run:()=>(i(),!0)}]))}e.push(An.of([Dh,...Za,...Th])),this.view=new D({parent:t.parent,state:$.create({doc:t.content,extensions:e})})}getCode(){return this.view.state.doc.toString()}setCode(t){this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:t}})}setLanguage(t){this.view.dispatch({effects:this.langCompartment.reconfigure(zh(t))})}changeTheme(t){this.view.dispatch({effects:this.themeCompartment.reconfigure(_h(t))})}focus(){this.view.focus()}};import{BaseController as Zd,makeCopyIcon as tp}from"./controller.js";var qh="gnomod.toml",ep=`package main -`,ip=8e3,Kh=class extends Zd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.editorEl=this.getTarget("editor"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.editorEl||!this.outputEl||!this.tabsEl||!t)&&(this.editorEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this.editor=new Un({parent:this.editorEl,content:this.files[0].content,fileName:this.files[0].name,isDarkMode:Zr(),onRun:()=>this.runCode()}),this.on("theme:changed",()=>{this.editor.changeTheme(Zr())}),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.clearOutput())}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===qh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;icopy#copy"),o.setAttribute("data-copy-text-value",t),o.appendChild(tp()),s.appendChild(o)}this.outputEl.appendChild(s),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_setErrorOutput(t){this._resetOutput(t,!1,!0)}_switchToFile(t){this.files[this.activeFile].content=this.editor.getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this.editor.setCode(this.files[e].content),this.editor.setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=ep;t===qh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" +`,ip=8e3,Kh=class extends Zd{connect(){let t=this.getTarget("initial-code");this.files=[],this.activeFile=0,this.editorEl=this.getTarget("editor"),this.outputEl=this.getTarget("output"),this.tabsEl=this.getTarget("tabs"),this.tabsWrapEl=this.getTarget("tabs-wrap"),this.prevBtnEl=this.getTarget("prev-button"),this.nextBtnEl=this.getTarget("next-button"),!(!this.editorEl||!this.outputEl||!this.tabsEl||!t)&&(this.editorEl.addEventListener("focusin",()=>this._scrollActiveTabIntoView()),this._parseInitialCode(t.value),this.editor=new Un({parent:this.editorEl,content:this.files[0].content,fileName:this.files[0].name,isDarkMode:Zr(),onRun:()=>this.runCode()}),this.on("theme:changed",()=>{this.editor.changeTheme(Zr())}),this._switchToDefaultFile(),this._setupTabsScroll(),this.renderTabs(),this.clearOutput())}_setupTabsScroll(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;this.tabsEl.addEventListener("scroll",()=>this._updateNavButtons(),{passive:!0});let t=new ResizeObserver(()=>this._updateNavButtons());t.observe(this.tabsWrapEl),t.observe(this.tabsEl)}_updateNavButtons(){if(!this.tabsWrapEl||!this.prevBtnEl||!this.nextBtnEl)return;let t=this.tabsEl.scrollWidth>this.tabsWrapEl.clientWidth+1;if(this.prevBtnEl.hidden=!t,this.nextBtnEl.hidden=!t,!t)return;let{scrollLeft:e,scrollWidth:i,clientWidth:s}=this.tabsEl;this.prevBtnEl.disabled=e<=0,this.nextBtnEl.disabled=e+s>=i-1}_scrollByPage(t){let e=Math.max(this.tabsEl.clientWidth*.7,80);this.tabsEl.scrollBy({left:t*e,behavior:"smooth"})}_scrollActiveTabIntoView(){let t=this.tabsEl.querySelector(".b-playground-tab--active");t&&t.scrollIntoView({inline:"nearest",block:"nearest"})}scrollTabsPrev(){this._scrollByPage(-1)}scrollTabsNext(){this._scrollByPage(1)}_isValidFileName(t){return t.endsWith(".gno")||t===qh}_parseInitialCode(t){if(t.includes("// --- ")&&t.includes(" ---")){let e=t.split(/^\/\/ --- (.+?) ---$/m);for(let i=1;icopy#copy"),o.setAttribute("data-copy-text-value",t),o.appendChild(tp()),s.appendChild(o)}this.outputEl.appendChild(s),this.outputEl.scrollIntoView({behavior:"smooth",block:"nearest"})}_setErrorOutput(t){this._resetOutput(t,!1,!0)}_switchToFile(t){this.files[this.activeFile].content=this.editor.getCode();let e=this.files.findIndex(i=>i.name===t);return e>=0&&(this.activeFile=e,this.editor.setCode(this.files[e].content),this.editor.setLanguage(this.files[e].name),this.renderTabs()),e>=0}renderTabs(){for(;this.tabsEl.firstChild;)this.tabsEl.removeChild(this.tabsEl.firstChild);this.files.forEach((t,e)=>{let i=document.createElement("button");i.className=`b-playground-tab${e===this.activeFile?" b-playground-tab--active":""}`,i.textContent=t.name,i.addEventListener("click",()=>this._switchToFile(t.name)),this.tabsEl.appendChild(i)}),this._updateNavButtons(),this._scrollActiveTabIntoView()}switchTab(t){let e=t.params?.file;e&&this._switchToFile(e)}addFile(){let t=prompt("File name (e.g. main.gno or gnomod.toml):");if(t==null||this._switchToFile(t))return;if(!this._isValidFileName(t)){console.error(`PlaygroundController: invalid name, file not added: ${t}`);return}let e=ep;t===qh&&(e=`module = "${this.getValue("domain")||"gno.land"}/r/yourname/pkg" gno = "0.9"`),this.files[this.activeFile].content=this.editor.getCode(),this.files.push({name:t,content:e}),this.activeFile=this.files.length-1,this.editor.setCode(this.files[this.activeFile].content),this.editor.setLanguage(this.files[this.activeFile].name),this.renderTabs()}async runCode(){this.files[this.activeFile].content=this.editor.getCode(),this._resetOutput("Running...");let t=this.editor.getCode(),e=t.match(/^package\s+(\w+)/m),i=e?e[1]:"main",s=this.getValue("domain")||"gno.land";if(t.includes("func Render("))try{let o=await(await fetch("/_/api/eval",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pkg_path:`${s}/r/playground_preview`,expression:'Render("")'})})).json();o.error?this._setErrorOutput(`Error: ${o.error}`):this._resetOutput(o.result)}catch{this._resetOutput(`Note: Server-side execution not available for scratch pad code. Package: ${i} From d6737e526de50852d4a250c9ab534066602b4683 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 9 Jun 2026 10:08:40 +0200 Subject: [PATCH 36/40] ci: make generate --- gno.land/pkg/gnoweb/public/main.css | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 gno.land/pkg/gnoweb/public/main.css diff --git a/gno.land/pkg/gnoweb/public/main.css b/gno.land/pkg/gnoweb/public/main.css new file mode 100644 index 00000000000..dbcb97b0116 --- /dev/null +++ b/gno.land/pkg/gnoweb/public/main.css @@ -0,0 +1,6 @@ +:root{--g-px-base:16;--g-space-mult:4;--g-space-base:calc(1rem/var(--g-space-mult));--g-breakpoint-max:calc(1580/var(--g-px-base)*1rem);--g-z-min:-1;--g-z-1:1;--g-z-max:9999;--g-duration-75:75ms;--g-duration-150:150ms;--g-opacity-50:0.5;--g-grid-1:repeat(1,minmax(0,1fr));--g-grid-10:repeat(10,minmax(0,1fr));--g-space-px:1px;--g-space-0-5:calc(var(--g-space-base)*0.5);--g-space-1:var(--g-space-base);--g-space-1-5:calc(var(--g-space-base)*1.5);--g-space-2:calc(var(--g-space-base)*2);--g-space-2-5:calc(var(--g-space-base)*2.5);--g-space-3:calc(var(--g-space-base)*3);--g-space-4:calc(var(--g-space-base)*4);--g-space-4-5:calc(var(--g-space-base)*4.5);--g-space-5:calc(var(--g-space-base)*5);--g-space-6:calc(var(--g-space-base)*6);--g-space-7:calc(var(--g-space-base)*7);--g-space-8:calc(var(--g-space-base)*8);--g-space-10:calc(var(--g-space-base)*10);--g-space-12:calc(var(--g-space-base)*12);--g-space-14:calc(var(--g-space-base)*14);--g-space-20:calc(var(--g-space-base)*20);--g-space-24:calc(var(--g-space-base)*24);--g-space-28:calc(var(--g-space-base)*28);--g-space-32:calc(var(--g-space-base)*32);--g-space-36:calc(var(--g-space-base)*36);--g-space-44:calc(var(--g-space-base)*44);--g-space-48:calc(var(--g-space-base)*48);--g-space-52:calc(var(--g-space-base)*52);--g-space-72:calc(var(--g-space-base)*72);--g-space-96:calc(var(--g-space-base)*96);--g-font-size-50:calc(12/var(--g-px-base)*1rem);--g-font-size-100:calc(14/var(--g-px-base)*1rem);--g-font-size-200:calc(16/var(--g-px-base)*1rem);--g-font-size-300:calc(18/var(--g-px-base)*1rem);--g-font-size-400:calc(20/var(--g-px-base)*1rem);--g-font-size-500:calc(22/var(--g-px-base)*1rem);--g-font-size-600:calc(24/var(--g-px-base)*1rem);--g-font-size-700:calc(32/var(--g-px-base)*1rem);--g-font-size-800:calc(38/var(--g-px-base)*1rem);--g-font-family-mono:"Roboto",'Menlo, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace';--g-font-family-inter-var:"Inter",'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif';--g-font-normal:400;--g-font-medium:500;--g-font-semibold:600;--g-font-bold:700;--g-italic:oblique 14deg;--g-line-height-tight:1.25;--g-line-height-snug:1.375;--g-line-height-normal:1.5;--g-border-radius-sm:calc(4/var(--g-px-base)*1rem);--g-border-radius:calc(6/var(--g-px-base)*1rem);--g-border-radius-full:9999px;--g-color-light:#fff;--g-color-transparent:transparent;--g-color-gray-50:#f0f0f0;--g-color-gray-100:#e2e2e2;--g-color-gray-200:#bdbdbd;--g-color-gray-300:#999;--g-color-gray-400:#7c7c7c;--g-color-gray-500:#696969;--g-color-gray-600:#585858;--g-color-gray-700:#292929;--g-color-gray-750:#1f1f1f;--g-color-gray-800:#141414;--g-color-gray-850:#0e0e0e;--g-color-gray-900:#090909;--g-color-green-50:#e7efed;--g-color-green-400:#60ab96;--g-color-green-500:#277b63;--g-color-green-600:#226c57;--g-color-green-900:#144134;--g-color-green-950:#002c20;--g-color-blue-400:#49afeb;--g-color-blue-600:#3e96c9;--g-color-blue-900:#21506b;--g-color-yellow-50:#fff7eb;--g-color-yellow-400:#facc32;--g-color-yellow-600:#fbbf24;--g-color-yellow-900:#7b4807;--g-color-yellow-950:#362600;--g-color-red-400:#eb6c49;--g-color-red-600:#c95c3e;--g-color-red-900:#6b2521;--g-color-purple-400:#7f49eb;--g-color-purple-600:#6c3ec9;--g-color-purple-900:#39216b}@supports (color:color(display-p3 0 0 0%)){:root{--g-color-green-950:#002c20;--g-color-yellow-50:#fff7eb;--g-color-yellow-950:#362600}@media (color-gamut:p3){:root{--g-color-green-950:color(display-p3 0.04602 0.17026 0.1277);--g-color-yellow-50:color(display-p3 0.99709 0.97106 0.92232);--g-color-yellow-950:color(display-p3 0.2031 0.15112 0.01811)}}}:root{--s-color-bg-base:var(--g-color-light,#fff);--s-color-bg-base-dev:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary:var(--g-color-gray-50,#f0f0f0);--s-color-bg-surface-primary-hover:var(--g-color-gray-100,#f0f0f0);--s-color-bg-surface-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-bg-surface-tertiary:var(--g-color-gray-200,#bdbdbd);--s-color-bg-surface-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-bg-brand-default:var(--g-color-green-600,#226c57);--s-color-bg-brand-weak:var(--g-color-green-50,#f0f9ff);--s-color-bg-brand-action:var(--g-color-green-400,#60ab96);--s-color-bg-success-default:var(--g-color-green-600,#144134);--s-color-bg-info-default:var(--g-color-blue-600,#21506b);--s-color-bg-warning-default:var(--g-color-yellow-600,#665100);--s-color-bg-warning-weak:var(--g-color-yellow-50,#f9d985);--s-color-bg-warning-action:var(--g-color-yellow-400,#f9d985);--s-color-bg-caution-default:var(--g-color-red-600,#610);--s-color-bg-tip-default:var(--g-color-purple-600,#49216b);--s-color-bg-note-default:var(--g-color-gray-600,#21506b);--s-color-bg-input:var(--g-color-light,#fff);--s-color-text-base:var(--g-color-light,#fff);--s-color-text-primary:var(--g-color-gray-900,#080809);--s-color-text-secondary:var(--g-color-gray-600,#454a4e);--s-color-text-tertiary:var(--g-color-gray-400,#f0f0f0);--s-color-text-tertiary-hover:var(--g-color-gray-600,#e2e2e2);--s-color-text-quaternary:var(--g-color-gray-100,#f0f0f0);--s-color-text-muted:var(--g-color-gray-300,#999);--s-color-text-brand-default:var(--g-color-light,#fff);--s-color-text-link:var(--g-color-green-600,#226c57);--s-color-text-link-hover:var(--g-color-green-600,#226c57);--s-color-text-success:var(--g-color-green-900,#144134);--s-color-text-info:var(--g-color-blue-900,#21506b);--s-color-text-warning:var(--g-color-yellow-900,#665100);--s-color-text-caution:var(--g-color-red-900,#610);--s-color-text-tip:var(--g-color-purple-900,#49216b);--s-color-border-primary:var(--g-color-gray-200,#bdbdbd);--s-color-border-secondary:var(--g-color-gray-100,#e2e2e2);--s-color-border-tertiary:var(--g-color-gray-300,#999);--s-color-border-quaternary:var(--g-color-gray-400,#7c7c7c);--s-color-border-transparent:var(--g-color-transparent,transparent);--s-color-border-input:var(--g-color-gray-300,#999);--s-color-border-brand-default:var(--g-color-green-600,#226c57);--s-color-border-success:var(--g-color-green-600,#144134);--s-color-border-info:var(--g-color-blue-600,#21506b);--s-color-border-warning:var(--g-color-yellow-600,#665100);--s-color-border-error:var(--g-color-red-600,#610);--s-color-border-tip:var(--g-color-purple-600,#49216b);--s-color-border-note:var(--g-color-gray-600,#21506b);--s-rounded-sm:var(--g-border-radius-sm,4px);--s-rounded:var(--g-border-radius,6px);--s-rounded-full:var(--g-border-radius-full,9999px);--s-border:var(--g-space-px,1px) solid var(--s-color-border-primary);--s-border-secondary:var(--g-space-px,1px) solid var(--s-color-border-secondary);--s-logo-hat:var(--g-color-green-600,#226c57);--s-logo-beard:var(--g-color-gray-300,#999)}[data-theme=dark]{--s-color-bg-base:var(--g-color-gray-850);--s-color-bg-base-dev:var(--g-color-gray-800);--s-color-bg-surface-primary:var(--g-color-gray-800);--s-color-bg-surface-primary-hover:var(--g-color-gray-750);--s-color-bg-surface-secondary:var(--g-color-gray-750);--s-color-bg-surface-tertiary:var(--g-color-gray-700);--s-color-bg-surface-quaternary:var(--g-color-gray-600);--s-color-bg-brand-weak:var(--g-color-green-950);--s-color-bg-warning-weak:var(--g-color-yellow-950);--s-color-bg-input:var(--g-color-gray-800);--s-color-text-primary:var(--g-color-gray-100);--s-color-text-secondary:var(--g-color-gray-200);--s-color-text-tertiary:var(--g-color-gray-400);--s-color-text-tertiary-hover:var(--g-color-gray-300);--s-color-text-quaternary:var(--g-color-gray-500);--s-color-text-muted:var(--g-color-gray-500);--s-color-text-brand-default:var(--g-color-light);--s-color-text-link:var(--g-color-green-500);--s-color-text-link-hover:var(--g-color-green-400);--s-color-text-success:var(--g-color-green-400);--s-color-text-info:var(--g-color-blue-400);--s-color-text-warning:var(--g-color-yellow-400);--s-color-text-caution:var(--g-color-red-400);--s-color-text-tip:var(--g-color-purple-400);--s-color-border-primary:var(--g-color-gray-700);--s-color-border-secondary:var(--g-color-gray-750);--s-color-border-tertiary:var(--g-color-gray-600);--s-color-border-quaternary:var(--g-color-gray-500);--s-color-border-input:var(--g-color-gray-700);--s-color-border-brand-default:var(--g-color-green-600);--s-color-border-success:var(--g-color-green-400);--s-color-border-info:var(--g-color-blue-400);--s-color-border-warning:var(--g-color-yellow-400);--s-color-border-error:var(--g-color-red-400);--s-color-border-tip:var(--g-color-purple-400);--s-color-border-note:var(--g-color-gray-600);--s-logo-hat:#fff;--s-logo-beard:gray}*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub{bottom:-.25em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}table{border-collapse:collapse;border-color:inherit;text-indent:0}summary{display:list-item}menu,ol,ul{list-style:none}embed,img,object,svg{display:block;vertical-align:middle}img{height:auto;max-width:100%}::file-selector-button,button,input,select,textarea{background-color:transparent;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{margin-right:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}::file-selector-button,button,input:where([type=button],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}@font-face{font-display:swap;font-family:Roboto;font-style:normal;font-weight:900;src:url(fonts/roboto/roboto-mono-normal.woff2) format("woff2"),url(fonts/roboto/roboto-mono-normal.woff) format("woff")}@font-face{font-display:block;font-family:Inter;font-style:oblique 0deg 10deg;font-variant:normal;font-weight:100 900;src:url(fonts/intervar/Intervar.woff2) format("woff2")}html{background-color:var(--s-color-bg-base);color:var(--s-color-text-secondary);font-family:var(--g-font-family-inter-var);font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on,contextual common-ligatures,"kern";-webkit-font-feature-settings:"kern" on,"liga" on,"calt" off,"zero" on;font-size:calc(var(--g-px-base)*1px);line-height:var(--g-line-height-normal);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-kerning:normal;font-variant-ligatures:contextual common-ligatures;text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh}main{background-color:var(--s-color-bg-base);flex-grow:2;width:100%}main.dev-mode{background-color:var(--s-color-bg-base-dev)}main>section{display:grid;grid-auto-flow:dense;grid-template-columns:var(--g-grid-1);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20);min-height:100%;padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){main>section{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}@media (min-width:calc(820 / 16 * 1rem)){main>section{grid-template-columns:var(--g-grid-10)}}@media (min-width:calc(1366 / 16 * 1rem)){main>section{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}svg{max-height:100%;max-width:100%}form{margin-bottom:0;margin-top:0}code{font-family:var(--g-font-mono)}summary{cursor:pointer}md-renderer{margin-top:var(--g-space-4);padding-bottom:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){md-renderer{grid-column:span 7;margin-top:0}}::-moz-selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}::selection{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}summary::-webkit-details-marker{display:none}summary::marker{display:none}.c-stack{display:flex;flex-direction:column;justify-content:flex-start}.c-stack>*+*{margin-top:var(--g-space-4)}.c-inline{align-items:center;display:inline-flex;gap:var(--g-space-3)}.c-between{align-items:center;display:flex;justify-content:space-between}.c-center{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:var(--g-breakpoint-max);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}@media (min-width:calc(640 / 16 * 1rem)){.c-center{padding-left:var(--g-space-10);padding-right:var(--g-space-10)}}.c-full-screen{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;height:100%;justify-content:center;margin-top:var(--g-space-10);padding-bottom:var(--g-space-24);width:100%}.c-reel{display:flex;overflow:scroll}.c-icon{flex-shrink:0;height:1.15em;width:1.15em}.c-with-icon{align-items:flex-start;display:inline-flex}.c-with-icon .c-icon,.c-with-icon--inline .c-icon{margin-left:.3em;margin-right:.3em;margin-top:.15em}.c-with-icon--inline{display:inline-block}.c-with-icon--inline>*{vertical-align:middle}.c-with-icon--inline .c-icon{margin-top:0}.c-view-grid{display:flex;flex-direction:column}@media (min-width:calc(640 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-8);column-gap:var(--g-space-8);flex-direction:row}}@media (min-width:calc(820 / 16 * 1rem)){.c-view-grid{display:grid;grid-template-columns:var(--g-grid-10);grid-column-gap:var(--g-space-20);-moz-column-gap:var(--g-space-20);column-gap:var(--g-space-20)}}@media (min-width:calc(1366 / 16 * 1rem)){.c-view-grid{-moz-column-gap:var(--g-space-32);column-gap:var(--g-space-32)}}.c-toggle-btn>input{display:none}.c-toggle-btn label{visibility:hidden}.c-toggle-btn input:checked+label{visibility:visible}.c-readme-view,.c-realm-view{--cr-px-base:var(--g-px-base);--cr-space-mult:1;--cr-space-base:calc(1em/var(--g-space-mult)*var(--cr-space-mult));--cr-space-0:0;--cr-space-0-5:calc(var(--cr-space-base)*0.5);--cr-space-1:var(--cr-space-base);--cr-space-2:calc(var(--cr-space-base)*2);--cr-space-3:calc(var(--cr-space-base)*3);--cr-space-4:calc(var(--cr-space-base)*4);--cr-space-5:calc(var(--cr-space-base)*5);--cr-space-7:calc(var(--cr-space-base)*7);--cr-space-8:calc(var(--cr-space-base)*8);--cr-space-24:calc(var(--cr-space-base)*24);--cr-color-brand-default:var(--s-color-text-link);display:block;font-size:calc(var(--cr-px-base)*1px);padding-top:var(--g-space-4);word-break:break-word}.c-readme-view:empty,.c-realm-view:empty{display:none}.c-realm-view:has(.b-btn:only-child){display:none}.c-readme-view:has(.b-btn:only-child){display:none}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view,.c-realm-view{grid-row-start:1;padding-top:var(--g-space-6)}}.c-readme-view a,.c-realm-view a{color:var(--cr-color-brand-default);display:inline-block;font-weight:inherit;position:relative;text-wrap:balance;vertical-align:top}.c-readme-view a:hover,.c-realm-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-realm-view a:has(>img){vertical-align:middle}.c-readme-view a:has(>img){vertical-align:middle}.c-readme-view a>span,.c-realm-view a>span{margin-bottom:.1em}.c-readme-view a>.tooltip+.tooltip,.c-realm-view a>.tooltip+.tooltip{margin-left:.2em}.c-readme-view a>.tooltip:last-of-type,.c-realm-view a>.tooltip:last-of-type{margin-right:.2em}.c-realm-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip:last-child):not(:has(>:nth-child(3)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius-full);bottom:var(--g-space-2);left:var(--g-space-2);margin-left:0;position:absolute}.c-realm-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view a:has(>img:first-child):has(.tooltip+.tooltip:last-child):not(:has(>:nth-child(4)))>.tooltip:first-of-type{bottom:var(--g-space-2);left:var(--g-space-7);position:absolute}.c-readme-view h1+h2,.c-readme-view h2+h3,.c-readme-view h3+h4,.c-realm-view h1+h2,.c-realm-view h2+h3,.c-realm-view h3+h4{margin-top:var(--cr-space-4)}.c-readme-view h1,.c-readme-view h2,.c-readme-view h3,.c-readme-view h4,.c-realm-view h1,.c-realm-view h2,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-primary);line-height:var(--g-line-height-tight);margin-top:var(--cr-space-4)}.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h1,.c-realm-view h1{font-size:var(--g-font-size-800)}}.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-500);font-weight:var(--g-font-bold)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h2,.c-realm-view h2{font-size:var(--g-font-size-600)}}.c-readme-view h2 *,.c-realm-view h2 *{font-weight:var(--g-font-bold)}.c-readme-view h3,.c-readme-view h4,.c-realm-view h3,.c-realm-view h4{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold)}.c-readme-view h3,.c-realm-view h3{font-size:var(--g-font-size-400);margin-top:var(--cr-space-4)}.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300);margin-top:var(--cr-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view h4,.c-realm-view h4{font-size:var(--g-font-size-300)}}.c-readme-view h3 *,.c-readme-view h4 *,.c-realm-view h3 *,.c-realm-view h4 *{font-weight:var(--g-font-semibold)}.c-readme-view h5,.c-readme-view h6,.c-realm-view h5,.c-realm-view h6{font-size:var(--g-font-size-300);font-weight:var(--g-font-bold);margin-bottom:var(--cr-space-0);margin-top:var(--cr-space-0)}.c-readme-view h5+p,.c-readme-view h6+p,.c-realm-view h5+p,.c-realm-view h6+p{margin-top:var(--cr-space-0)}.c-readme-view img,.c-realm-view img{border:1px solid var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);max-width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.c-readme-view figure,.c-realm-view figure{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);text-align:center}.c-readme-view figcaption,.c-realm-view figcaption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-readme-view video,.c-realm-view video{margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);max-width:100%}.c-readme-view p,.c-realm-view p{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-realm-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-readme-view p:has(>a:only-child>img){margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4)}.c-realm-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view p:has(>a:only-child>img) img{margin-bottom:0;margin-top:0}.c-readme-view strong,.c-readme-view strong *,.c-realm-view strong,.c-realm-view strong *{font-weight:var(--g-font-bold)}.c-readme-view em,.c-realm-view em{font-style:var(--g-italic)}.c-readme-view blockquote,.c-realm-view blockquote{border-left:solid var(--g-space-0-5) var(--s-color-border-tertiary);color:var(--s-color-text-secondary);margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-3)}.c-readme-view blockquote>blockquote,.c-realm-view blockquote>blockquote{margin-bottom:var(--cr-space-7);margin-top:var(--cr-space-7)}.c-readme-view caption,.c-realm-view caption{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);margin-top:var(--cr-space-2);text-align:left}.c-readme-view q,.c-realm-view q{quotes:"“" "”"}.c-readme-view q:before,.c-realm-view q:before{content:open-quote}.c-readme-view q:after,.c-realm-view q:after{content:close-quote}.c-readme-view details,.c-realm-view details{margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3)}.c-readme-view summary,.c-realm-view summary{cursor:pointer;font-weight:var(--g-font-bold)}.c-readme-view math,.c-realm-view math{font-family:var(--g-font-family-mono)}.c-readme-view small,.c-realm-view small{font-size:var(--g-font-size-100)}.c-readme-view del,.c-realm-view del{-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view sub,.c-realm-view sub{font-size:var(--g-font-size-50);vertical-align:sub}.c-readme-view sup,.c-realm-view sup{font-size:var(--g-font-size-50);padding-left:var(--space-px);vertical-align:middle}.c-readme-view sup>a,.c-realm-view sup>a{vertical-align:middle}.c-readme-view ol,.c-readme-view ul,.c-realm-view ol,.c-realm-view ul{margin-bottom:var(--cr-space-4);margin-top:var(--cr-space-4);padding-left:var(--g-space-4)}.c-readme-view ul,.c-realm-view ul{list-style:disc}.c-readme-view ol,.c-realm-view ol{list-style:decimal}.c-readme-view ol ol,.c-readme-view ol ul,.c-readme-view ul ol,.c-readme-view ul ul,.c-realm-view ol ol,.c-realm-view ol ul,.c-realm-view ul ol,.c-realm-view ul ul{margin-bottom:var(--cr-space-2);margin-top:var(--cr-space-2);padding-left:var(--g-space-4)}.c-readme-view li,.c-realm-view li{margin-bottom:var(--cr-space-1);margin-top:var(--cr-space-1)}.c-readme-view code,.c-readme-view pre,.c-realm-view code,.c-realm-view pre{font-family:var(--g-font-family-mono)}.c-readme-view pre,.c-readme-view pre.chroma-chroma,.c-realm-view pre,.c-realm-view pre.chroma-chroma{background-color:var(--s-color-bg-surface-primary);border-radius:var(--g-border-radius-sm);margin-bottom:var(--cr-space-3);margin-top:var(--cr-space-3);overflow-x:auto;padding:var(--cr-space-4)}.c-readme-view :not(pre)>code,.c-realm-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--cr-space-0-5) var(--cr-space-1)}.c-readme-view a code,.c-realm-view a code{color:inherit}.c-readme-view hr,.c-realm-view hr{border-top:var(--s-border-secondary);margin-bottom:var(--cr-space-8);margin-top:var(--cr-space-8)}.c-readme-view table,.c-realm-view table{border-collapse:collapse;display:block;margin-bottom:var(--cr-space-5);margin-top:var(--cr-space-5);max-width:100%;width:100%}.c-readme-view td,.c-readme-view th,.c-realm-view td,.c-realm-view th{border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4);white-space:normal;word-break:break-word}.c-readme-view th,.c-realm-view th{background-color:var(--s-color-bg-surface-secondary);font-weight:var(--g-font-bold)}.c-readme-view button,.c-readme-view input,.c-readme-view select,.c-readme-view textarea,.c-realm-view button,.c-realm-view input,.c-realm-view select,.c-realm-view textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-input);border:var(--s-border);padding:var(--cr-space-2) var(--cr-space-4)}.c-readme-view>.realm-view__btns:first-child+*,.c-readme-view>:first-child:not(.realm-view__btns),.c-realm-view>.realm-view__btns:first-child+*,.c-realm-view>:first-child:not(.realm-view__btns){margin-top:0!important}.c-readme-view .footnote-backref,.c-readme-view h1:not(.does-not-exist),.c-readme-view h2:not(.does-not-exist),.c-readme-view h3:not(.does-not-exist),.c-readme-view h4:not(.does-not-exist),.c-readme-view sup:not(.does-not-exist),.c-realm-view .footnote-backref,.c-realm-view h1:not(.does-not-exist),.c-realm-view h2:not(.does-not-exist),.c-realm-view h3:not(.does-not-exist),.c-realm-view h4:not(.does-not-exist),.c-realm-view sup:not(.does-not-exist){scroll-margin-top:var(--cr-space-24)}.c-readme-view .b-btn,.c-realm-view .b-btn{color:var(--s-color-text-secondary);display:inline-flex}.c-readme-view .b-btn:hover,.c-realm-view .b-btn:hover{-webkit-text-decoration:none;text-decoration:none}.c-readme-view .b-btn:first-child,.c-realm-view .b-btn:first-child{float:right;margin-top:var(--g-space-4)}.c-readme-view>.b-btn:first-child+*,.c-readme-view>:first-child:not(.b-btn),.c-realm-view>.b-btn:first-child+*,.c-realm-view>:first-child:not(.b-btn){margin-top:0}.c-readme-view{background-color:var(--s-color-bg-base);border-radius:var(--g-border-radius);margin-bottom:var(--g-space-6);padding:var(--g-space-6) var(--g-space-4) var(--g-space-4);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view{grid-row-start:auto}}.c-doc-view{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100)}.c-doc-view>p{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.c-doc-view>p:first-child{margin-top:0}.c-doc-view>p:last-child{margin-bottom:0}.c-doc-view h1,.c-doc-view h2,.c-doc-view h3,.c-doc-view h4{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight);margin-bottom:var(--g-space-2);margin-top:var(--g-space-3)}.c-doc-view h1{font-size:var(--g-font-size-400)}.c-doc-view h2{font-size:var(--g-font-size-300)}.c-doc-view h3,.c-doc-view h4{font-size:var(--g-font-size-200)}.c-doc-view ol,.c-doc-view ul{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2);padding-left:var(--g-space-5)}.c-doc-view ul{list-style:disc}.c-doc-view ol{list-style:decimal}.c-doc-view li{margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-doc-view a{color:var(--s-color-text-link);-webkit-text-decoration:none;text-decoration:none}.c-doc-view a:hover{-webkit-text-decoration:underline;text-decoration:underline}.c-doc-view :not(pre)>code{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded-sm);font-family:var(--g-font-family-mono);font-size:.9em;padding:0 var(--g-space-1)}.c-doc-view>.doc-example:first-child{margin-top:0}.c-doc-view>.doc-example:last-child{margin-bottom:0}.b-gnome .hat,.b-logo .hat{fill:var(--s-logo-hat)}.b-gnome .beard,.b-logo .beard{fill:var(--s-logo-beard)}.b-banner{align-items:center;background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base);display:flex;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);justify-content:center;padding:var(--g-space-1-5) var(--g-space-4);text-align:center;width:100%}@media (min-width:calc(640 / 16 * 1rem)){.b-banner{font-size:var(--g-font-size-100)}}.b-banner a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.b-banner a:hover,a.b-banner:hover{opacity:.8}.b-banner code{background-color:var(--s-color-bg-brand-action);border-radius:var(--g-border-radius-sm);font-size:.96em;padding:var(--g-space-0-5) var(--g-space-1)}.b-header{background-color:var(--s-color-bg-base);border-bottom:var(--s-border);font-size:var(--g-font-size-100);position:sticky;top:0;z-index:var(--g-z-max)}.b-header nav{align-items:stretch;height:auto}.b-header .main-nav{align-items:stretch;display:flex;flex:1 1 auto;gap:var(--g-space-1);height:100%;min-width:0;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-header .main-nav{grid-column:span 7}}.b-header .main-nav--explorer{grid-column:span 10}.b-header .user-picture{border:var(--s-border-secondary);border-radius:var(--s-rounded);cursor:pointer;flex-shrink:0;height:var(--g-space-10);width:var(--g-space-10)}.b-header .user-picture>svg{height:100%;width:100%}.b-main-navigation{color:var(--s-color-text-quaternary);height:auto;position:relative;width:100%}.b-main-navigation>.inner{align-items:center;background-color:var(--s-color-bg-surface-secondary);border:var(--s-border-secondary);border-radius:var(--s-rounded);height:100%;padding-left:var(--g-space-1-5);padding-right:var(--g-space-1-5);position:relative}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation>.inner{padding-right:var(--g-space-8)}}.b-main-navigation>.inner:has([data-role=header-input-search]:focus-within){border-color:var(--s-color-border-tertiary)}.b-main-navigation .searchbar{bottom:0;color:var(--s-color-text-secondary);font-size:var(--g-font-size-200);font-weight:var(--g-font-medium);left:0;padding:var(--g-space-1-5);padding-right:var(--g-space-8);position:absolute;right:0;top:0}.b-main-navigation .searchbar>input{background-color:transparent;height:100%;outline:none;width:100%}.b-main-navigation .searchbar:focus-within+.b-breadcrumb{display:none}.b-main-navigation .network-toggle{align-items:center;background-color:var(--g-color-transparent);border-radius:var(--g-border-radius);cursor:pointer;display:none;height:calc(100% - 2px);justify-content:center;padding:var(--g-space-1-5);position:absolute;right:1px;top:1px;z-index:var(--g-z-max)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-navigation .network-toggle{display:flex}}.b-main-navigation .network-toggle>svg{color:var(--s-color-text-tertiary);height:var(--g-space-5);width:var(--g-space-5)}.b-main-navigation .network-toggle:hover>svg{color:var(--s-color-text-tertiary-hover)}.b-main-navigation .b-popup-dialog>.inner{color:var(--s-color-text-tertiary);width:var(--g-space-72)}.b-main-navigation .b-popup-dialog header>span{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-navigation .b-popup-dialog .item{display:flex;gap:var(--g-space-1)}.b-main-navigation .b-popup-dialog .item>svg{height:var(--g-space-4);width:var(--g-space-4)}.b-main-navigation .b-popup-dialog .item-content{display:flex;flex-direction:column}.b-main-navigation .b-popup-dialog .item-label{font-size:var(--g-font-size-50)}.b-main-navigation .b-popup-dialog .item-value{color:var(--s-color-text-secondary);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold)}.b-main-menu{display:flex;flex:0 0 auto;grid-column:span 3;height:var(--g-space-12)}@media (min-width:calc(640 / 16 * 1rem)){.b-main-menu{height:auto}}.b-main-menu .menu-toggle{align-items:center;cursor:pointer;display:flex;margin-left:auto;order:3}.b-main-menu .menu-toggle>svg{height:var(--g-space-5);margin-left:var(--g-space-4);width:var(--g-space-5)}@media (min-width:calc(820 / 16 * 1rem)){.b-main-menu .menu-toggle>svg{margin-left:var(--g-space-2)}}.b-main-menu .menu-toggle-input~.menu-dev{display:none}.b-main-menu .menu-toggle-input:checked~.menu-dev{display:flex}.b-main-menu .menu-toggle-input:checked~.menu-general{display:none}.b-main-menu .menu-dev,.b-main-menu .menu-general{display:flex;height:100%;justify-content:flex-end}.b-menu-link:last-child,.b-menu-link:last-child .link{margin-right:0}.b-menu-link .link{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);gap:var(--g-space-1);height:100%;margin-right:var(--g-space-3);position:relative}.b-menu-link .link:hover{color:var(--s-color-text-tertiary-hover)}.b-menu-link .link:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-menu-link .link>svg{flex-shrink:0;height:var(--g-space-5);min-width:var(--g-space-2);width:var(--g-space-5)}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link>svg{display:none}}@media (min-width:1760px){.b-menu-link .link>svg{display:inline-block;height:var(--g-space-4-5);width:var(--g-space-4-5)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link{font-weight:var(--g-font-bold)}}@media (min-width:calc(1580 / 16 * 1rem)){.b-menu-link .link{margin-right:var(--g-space-6);padding-right:var(--g-space-1)}}@media (min-width:calc(640 / 16 * 1rem)){.b-menu-link .link-label{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-menu-link .link-label{display:inline}}.b-menu-link .link--icon{font-weight:var(--g-font-regular);margin-right:var(--g-space-4)}@media (min-width:calc(480 / 16 * 1rem)){.b-menu-link .link--icon{margin-right:var(--g-space-6)}}.b-menu-link .link--is-active{color:var(--s-color-text-secondary)}.b-menu-link .link--is-active:after{width:100%}.b-menu-link .link--is-active>svg{color:var(--s-color-bg-brand-default)}.menu-general .link{color:var(--s-color-text-secondary)}.menu-general .link:hover{color:var(--s-color-text-link-hover)}.b-breadcrumb{display:flex}.b-breadcrumb,.b-breadcrumb:after{background-color:var(--s-color-bg-surface-secondary)}.b-breadcrumb:after{bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0}.b-breadcrumb>ol{color:var(--s-color-text-primary);display:flex;font-weight:var(--g-font-semibold);line-height:var(--g-line-height-snug)}.b-breadcrumb .argument,.b-breadcrumb .element,.b-breadcrumb .query{align-items:center;display:flex;white-space:nowrap;z-index:var(--g-z-1)}.b-breadcrumb .argument:not(:first-child):before,.b-breadcrumb .element:not(:first-child):before,.b-breadcrumb .query:not(:first-child):before{color:var(--s-color-text-tertiary);content:"/";line-height:var(--g-line-height-normal);padding-left:.18rem;padding-right:.18rem;padding-top:var(--g-space-px)}.b-breadcrumb .argument a,.b-breadcrumb .element a,.b-breadcrumb .query a{background-color:var(--s-color-bg-base);border:1px solid var(--s-color-border-transparent);border-radius:var(--s-rounded-sm);display:inline-block;min-width:var(--g-space-4);padding:var(--g-space-0-5);text-align:center}.b-breadcrumb .argument a:hover,.b-breadcrumb .element a:hover,.b-breadcrumb .query a:hover{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-breadcrumb .argument:not(:first-child):before{content:":"}.b-breadcrumb .argument a{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-breadcrumb .query:not(:first-child):before{content:"&"}.b-breadcrumb .query:nth-child(1 of .query):before{content:"?"}.b-breadcrumb .query label{background-color:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:text;display:inline-flex;height:100%;min-width:var(--g-space-4);padding:var(--g-space-0-5) var(--g-space-1);position:relative;text-align:center;width:100%}.b-breadcrumb .query label:focus-within{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query label:hover{border-color:var(--s-color-border-quaternary)}.b-breadcrumb .query input{background-color:var(--s-color-bg-surface-primary);field-sizing:content;max-width:10ch;order:3;outline:none}@supports not (field-sizing:content){.b-breadcrumb .query input{width:5rem!important}}.b-breadcrumb .query input::-moz-placeholder{opacity:0}.b-breadcrumb .query input::placeholder{opacity:0}.b-breadcrumb .query input:-moz-placeholder{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown{width:var(--g-space-px)}.b-breadcrumb .query input:placeholder-shown::-moz-placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:-moz-placeholder::placeholder{color:var(--g-color-transparent)}.b-breadcrumb .query input:placeholder-shown::placeholder{color:var(--g-color-transparent)}.b-footer{border-top:var(--s-border);font-size:var(--g-font-size-100);padding-bottom:var(--g-space-4);padding-top:var(--g-space-4);width:100%}.b-footer>nav{flex-direction:column;row-gap:var(--g-space-8)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer>nav{flex-wrap:wrap}}.b-footer .logo{color:var(--s-color-text-primary);grid-column:1/-1;width:var(--g-space-44)}.b-footer .logo:hover{color:var(--s-color-text-primary);-webkit-text-decoration:none;text-decoration:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .logo{align-self:center;grid-column:1/3;grid-row:1/1;width:60%}}.b-footer .nav-primary{display:flex;gap:var(--g-space-10);grid-column:1/-1;grid-row:2/3}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary{align-items:center;flex:1 0 0%;flex-direction:row;gap:var(--g-space-6);justify-content:space-between}}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .nav-primary{grid-column:2/8;grid-row:1/1}}.b-footer .nav-primary>ul{display:flex;flex:1;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-primary>ul{flex:initial;flex-direction:row}.b-footer .nav-social{margin-left:auto}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-social{grid-column:span 3;justify-self:end;margin-left:0}}.b-footer .nav-theme{align-items:center;display:flex;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .nav-theme{flex-basis:100%}}@media (min-width:calc(820 / 16 * 1rem)){.b-footer .nav-theme{grid-column:span 3}}.b-footer .nav-theme .nav-theme-label{color:var(--s-color-text-secondary)}.b-footer .nav-theme:has([data-theme-target=sun]:not(.u-hidden)) .nav-theme-label:before{content:"Light"}.b-footer .nav-theme:has([data-theme-target=moon]:not(.u-hidden)) .nav-theme-label:before{content:"Dark"}.b-footer .nav-theme:has([data-theme-target=system]:not(.u-hidden)) + .nav-theme-label:before{content:"System"}.b-footer .legal{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);margin-top:var(--g-space-3);padding-top:var(--g-space-3)}.b-footer .legal>nav{color:var(--s-color-text-secondary);display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--g-space-1) var(--g-space-3);margin-top:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.b-footer .legal>nav{flex-direction:row}.b-footer .legal>nav>a+a:before{color:var(--s-color-text-quaternary);content:"|";margin-right:var(--g-space-3)}}.b-footer .legal>nav:nth-child(3){grid-column:span 2/span 2}.b-footer .legal>:last-child:not(ul),.b-footer .legal>nav li{margin-bottom:var(--g-space-2);margin-top:var(--g-space-2)}.b-footer .legal>:last-child:not(ul){flex-basis:100%}@media (min-width:calc(1020 / 16 * 1rem)){.b-footer .legal>:last-child:not(ul){flex-basis:auto;grid-column:span 1/span 1}}.b-footer a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-content-header{display:flex;flex-direction:column;gap:var(--g-space-3);grid-row:span 1/span 1;margin-bottom:var(--g-space-6);margin-top:var(--g-space-10)}@media (min-width:calc(820 / 16 * 1rem)){.b-content-header{grid-column:span 7/span 7;grid-row-start:1;justify-content:space-between;margin-top:var(--g-space-10)}}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header{align-items:center;flex-direction:row}}.b-content-header .title{align-items:center;display:flex;gap:var(--g-space-3)}.b-content-header .header-info{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-12);justify-content:space-between}.b-content-header .b-inline-btn>span{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-content-header .b-inline-btn>span{display:inline}}.b-content-h1{font-size:var(--g-font-size-600);text-align:center}.b-content-h1,.b-content-h2{color:var(--s-color-text-primary);font-weight:var(--g-font-bold)}.b-content-h2{font-size:var(--g-font-size-400);margin-bottom:var(--g-space-4)}.b-btns{align-items:center;display:flex;gap:var(--g-space-1)}@media (min-width:calc(1020 / 16 * 1rem)){.b-btns{gap:var(--g-space-2)}}.b-btn{border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:inline-flex;gap:var(--g-space-1-5);min-width:-moz-max-content;min-width:max-content;padding:var(--g-space-1) var(--g-space-2)}.b-btn:hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-btn .c-icon{margin-left:0;margin-right:0}.b-btn--secondary:hover{background-color:var(--s-color-bg-surface-primary)}.b-inline-btn{color:var(--s-color-text-tertiary);cursor:pointer}.b-inline-btn:hover{color:var(--s-color-text-tertiary-hover)}.b-switch input,.b-switch label:last-child{display:none}.b-switch input+label,.b-switch input:checked~label:last-child{display:block}.b-switch input:checked+label{display:none}.b-block-form,.b-inline-form{color:var(--s-color-text-tertiary);display:flex;flex-direction:column;gap:var(--g-space-2) var(--g-space-3)}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form,.b-inline-form{flex-direction:row}}.b-block-form{align-items:stretch}@media (min-width:calc(820 / 16 * 1rem)){.b-block-form{flex-direction:column}}.b-input{border:var(--s-border);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:flex;font-size:var(--g-font-size-100);min-width:var(--g-space-48);overflow:hidden;position:relative}.b-input>svg{height:var(--g-space-4);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:var(--g-space-4)}.b-input>svg:first-child{left:var(--g-space-2)}.b-input>svg:last-child{right:var(--g-space-2)}.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:has(input:focus),.b-input:hover,.b-input>input:focus,.b-input>input:hover{border-color:var(--s-color-border-tertiary)}.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input:has(input:focus)>label,.b-input:hover>label{background-color:var(--s-color-bg-surface-primary)}.b-input>label{align-items:center;background-color:var(--s-color-bg-surface-secondary);gap:var(--g-space-3);white-space:nowrap}.b-input>input,.b-input>label,.b-input>select{display:flex;padding:var(--g-space-1-5) var(--g-space-3)}.b-input>input,.b-input>select{color:inherit;outline:none;width:100%}@media (min-width:calc(820 / 16 * 1rem)){.b-input>input,.b-input>select{padding:var(--g-space-1-5) var(--g-space-2)}}.b-input>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--s-color-bg-surface-secondary);cursor:pointer}.b-input>select:hover{background-color:var(--s-color-bg-surface-primary)}.b-input>input{background-color:var(--s-color-bg-base);border-left:none}.b-input>label+input{border-left:var(--s-border)}.b-list{margin-bottom:var(--g-space-10)}.b-list>li{border-bottom:var(--s-border);color:var(--s-color-text-tertiary)}.b-list>li:first-child{border-top:var(--s-border)}.b-list>li>:where(a,div){align-items:center;display:flex;justify-content:space-between;padding:var(--g-space-2)}.b-list>li>:where(a,div):hover{background-color:var(--s-color-bg-surface-primary-hover)}.b-list>li>:where(a,div) .c-icon{margin-left:0}.b-list>li>:where(a,div)>a{flex:1;min-width:0}.b-list>li>:where(a,div)>a:hover{background-color:transparent}.b-list .name{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;color:var(--s-color-text-secondary);margin-left:var(--g-space-1);max-width:100%;overflow:hidden;text-overflow:ellipsis}.b-user-sidebar{margin-top:var(--g-space-4)}.b-user-sidebar>*+*{margin-top:var(--g-space-8)}.b-user-sidebar .user-avatar{border:var(--s-border);border-radius:var(--s-rounded);height:var(--g-space-24);width:var(--g-space-24)}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .user-avatar{height:var(--g-space-36);width:var(--g-space-36)}}.b-user-sidebar .user-avatar img,.b-user-sidebar .user-avatar svg{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.b-user-sidebar .user-info{align-items:flex-start;display:flex;gap:var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info{flex-direction:column}}.b-user-sidebar .user-info>div:last-child{align-self:flex-end}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar .user-info>div:last-child{align-self:flex-start}}.b-user-sidebar .title{color:var(--s-color-text-primary);display:bock;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);line-height:var(--g-line-height-tight);text-transform:capitalize;word-break:break-all}@media (min-width:calc(640 / 16 * 1rem)){.b-user-sidebar .title{font-size:var(--g-font-size-800)}}.b-user-sidebar .subtitle{color:var(--s-color-text-secondary);display:block;font-size:var(--g-font-size-100);line-height:var(--g-line-height-tight);margin-top:var(--g-space-2)}.b-user-sidebar>a{align-items:center;display:flex;justify-content:center}@media (min-width:calc(820 / 16 * 1rem)){.b-user-sidebar>a{display:inline-flex}}.b-sidebar{border-bottom:var(--s-border);grid-column:span 1/span 1;padding-bottom:var(--g-space-10);position:relative}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar{border-bottom:none;grid-column:span 3/span 3;grid-row:span 2/span 2;grid-row-start:1;height:100%;margin-bottom:0;order:2;padding-bottom:0}.b-sidebar+md-renderer:empty+*{grid-row-start:1;padding-top:var(--g-space-6)}.b-sidebar+md-renderer:empty+*,.b-sidebar+md-renderer:has(.b-btn:only-child)+*{grid-row-start:1;padding-top:var(--g-space-6)}}.b-sidebar:first-child{margin-top:var(--g-space-8)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar:first-child{margin-top:0}}.b-sidebar>div{padding-top:var(--g-space-2);position:sticky;top:var(--g-space-14)}.b-sidebar>div:has(.inner):not(:has(nav li)){display:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar>div{padding-bottom:var(--g-space-2)}}.b-sidebar .inner{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded-sm);max-height:100vh;overflow:scroll;scrollbar-width:none}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner{background-color:var(--g-color-transparent)}}.b-sidebar .inner>nav{display:none;font-size:var(--g-font-size-100);margin-top:var(--g-space-2);padding:var(--g-space-2) var(--g-space-4) var(--g-space-6)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .inner>nav{display:block;margin-top:0;padding-bottom:var(--g-space-28);padding-left:0;padding-right:0}.b-sidebar .inner>nav>*{padding-left:0}}.b-sidebar .b-expend-btn{align-items:center;background-color:var(--s-color-bg-base);border:var(--s-border);border-radius:var(--s-rounded-sm);cursor:pointer;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;padding:var(--g-space-2) var(--g-space-4)}.b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .b-expend-btn{border:none;cursor:default;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-top:var(--g-space-10);padding:0}.b-sidebar .b-expend-btn,.b-sidebar .b-expend-btn:hover{background-color:var(--g-color-transparent)}}.b-sidebar .b-expend-btn:has(#toc-expend:checked)+nav{display:block}.b-sidebar .b-expend-btn>input{display:none}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon:before{content:"close"}.b-sidebar .b-expend-btn>input:checked+.wrapper-icon>svg{transform:rotate(180deg)}.b-sidebar .wrapper-icon{align-items:center;display:flex;gap:var(--g-space-1-5)}.b-sidebar .wrapper-icon:before{content:"open"}@media (min-width:calc(820 / 16 * 1rem)){.b-sidebar .wrapper-icon{display:none}}.dev-mode .b-sidebar .b-expend-btn{background-color:var(--s-color-bg-surface-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.dev-mode .b-sidebar .b-expend-btn{background-color:var(--g-color-transparent)}}.dev-mode .b-sidebar .b-expend-btn:hover{background-color:var(--s-color-bg-surface-primary)}.b-source-code{font-family:var(--g-font-mono)}.b-source-code>pre{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);overflow:scroll;padding:var(--g-space-4) var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-source-code>pre{font-size:var(--g-font-size-200);padding:var(--g-space-8) var(--g-space-3)}}.b-source-code>pre a:hover{-webkit-text-decoration:none;text-decoration:none}[data-theme=dark] .b-source-code>pre{background-color:var(--s-color-bg-base)}.b-toc{list-style:none;margin-top:var(--g-space-2)}.b-toc>*+*{margin-bottom:var(--g-space-1-5);margin-top:var(--g-space-1-5)}.b-toc .b-toc{border-left:1px solid var(--s-color-border-secondary);margin-bottom:var(--g-space-4);padding-left:var(--g-space-4)}.b-toc a>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.b-toc a:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}main.dev-mode .b-toc a{word-break:break-all}.b-source-toc>.b-toc{margin-bottom:var(--g-space-4)}.b-source-toc>*+*{margin-top:var(--g-space-1-5)}.b-source-toc .accordion summary>svg{transform:rotate(-90deg)}.b-source-toc .accordion summary:hover{color:var(--s-color-text-link-hover);-webkit-text-decoration:underline;text-decoration:underline}.b-source-toc .accordion[open] summary>svg{transform:rotate(0deg)}.b-source-toc .accordion>.b-toc{padding-left:var(--g-space-5)}.b-source-toc .accordion h3{font-size:var(--g-font-size-100);font-weight:var(--g-font-medium);margin-top:0}.b-action-overview{margin-bottom:var(--g-space-12)}.b-action-overview>p{font-size:var(--g-font-size-200)}.b-action-function{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);margin-bottom:var(--g-space-3);padding:var(--g-space-4)}.b-action-function .title{align-items:baseline;display:flex;flex-wrap:wrap;font-size:var(--g-font-size-50);gap:var(--g-space-1) var(--g-space-4);margin-bottom:var(--g-space-1)}.b-action-function>header{align-items:flex-start;display:flex;font-size:var(--g-font-size-100);justify-content:space-between;margin-bottom:var(--g-space-4)}.b-action-function>header .signature>code{color:var(--s--text-secondary)}@media (min-width:calc(820 / 16 * 1rem)){.b-action-function>header .signature{font-size:var(--g-font-size-50)}}.b-action-function>header h2{color:var(--s-color-text-primary);font-size:var(--g-font-size-300);font-weight:var(--g-font-semibold);line-height:var(--g-line-height-tight)}.b-action-function .description{color:var(--s-color-text-secondary);font-size:var(--g-font-size-200)}.b-action-function .params{align-items:stretch;color:var(--s-color-text-tertiary);display:flex;flex-direction:column;font-size:var(--g-font-size-100);gap:var(--g-space-1);margin-bottom:var(--g-space-1);margin-top:var(--g-space-6);width:100%}.b-action-function .params label{background-color:var(--s-color-bg-surface-primary)}.b-action-function .params .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .params .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-action-function .b-alert{background-color:var(--s-color-bg-warning-weak);border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-left-color:var(--s-color-border-warning);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);color:var(--s-color-text-warning);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.b-action-function .b-alert>h1:first-child,.b-action-function .b-alert>h2:first-child,.b-action-function .b-alert>h3:first-child{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2)}.b-action-function .b-alert .b-btn,.b-action-function .b-alert label{background-color:var(--s-color-bg-warning-action);border:none;color:var(--s-color-bg-warning-weak);cursor:pointer}.b-action-function .b-alert .b-btn{margin-top:var(--g-space-4)}.b-code{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded);font-size:var(--g-font-size-100);position:relative}.b-code pre{color:var(--s-color-text-secondary);padding:var(--g-space-4);padding-right:var(--g-space-10);white-space:pre-wrap}.b-code .btn-copy{background-color:var(--g-color-transparent);color:var(--s-color-text-tertiary);cursor:pointer;padding:0;position:absolute;right:var(--g-space-2);top:var(--g-space-2)}.b-code .btn-copy:hover{color:var(--s-color-text-primary)}.b-action-eval{display:flex;flex-direction:column;gap:var(--g-space-4);margin-bottom:var(--g-space-8)}.b-action-eval .b-content-h2{margin-bottom:0}.b-action-eval-form{align-items:flex-end;display:flex;gap:var(--g-space-2)}.b-action-eval-form .b-input--full{flex:1}.b-action-eval-result{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-action-eval-result-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-action-eval-result-title{font-size:var(--g-font-size-50);letter-spacing:.05em}.b-action-eval-result-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-50)}.b-action-eval-result-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-action-eval-result-content{background-color:var(--s-color-bg-base);font-family:var(--g-font-mono);font-size:var(--g-font-size-75);line-height:1.6;margin:0;max-height:400px;min-height:80px;overflow-y:auto;padding:var(--g-space-2);white-space:pre-wrap;word-break:break-word}.b-action-eval-history,.b-action-eval-history-list{display:flex;flex-direction:column;gap:var(--g-space-2)}.b-action-eval-history-entry{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--s-rounded);padding:var(--g-space-1-5)}.b-action-eval-history-entry+.b-action-eval-history-entry{margin-top:var(--g-space-1)}.b-action-eval-history-expr{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--g-space-1)}.b-action-eval-history-rerun{background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;font-size:var(--g-font-size-100)}.b-action-eval-history-rerun:hover{color:var(--s-color-text-base)}.b-action-eval-history-result{background-color:var(--s-color-bg-base);border-radius:var(--g-radius-1);font-family:var(--g-font-mono);font-size:var(--g-font-size-50);margin:0;padding:var(--g-space-1);white-space:pre-wrap;word-break:break-word}.b-packages{min-height:var(--g-space-96);padding-bottom:var(--g-space-24);scroll-margin-block-start:var(--g-space-24)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages{grid-column:span 7/span 7}}.b-packages .title{color:var(--s-color-text-primary);display:block;font-size:var(--g-font-size-700);font-weight:var(--g-font-bold);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .title{font-size:var(--g-font-size-800)}}.b-packages nav{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--g-space-3);gap:var(--g-space-3);margin-bottom:var(--g-space-6)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages nav{border-bottom:var(--s-border);padding-bottom:var(--g-space-2)}}.b-packages .packages-tabs{border-bottom:var(--s-border);color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);gap:var(--g-space-4);grid-column:span 4/span 4;padding-bottom:var(--g-space-2);width:auto}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-tabs{border-bottom:none;font-size:var(--g-font-size-100);grid-column:span 2/span 2;padding-bottom:0;width:100%}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs{gap:var(--g-space-6);margin-left:0;width:100%}}.b-packages .packages-tabs label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-1);position:relative}.b-packages .packages-tabs label:hover{color:var(--s-color-text-tertiary-hover)}.b-packages .packages-tabs label .b-tag--secondary{display:none}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages .packages-tabs label .b-tag--secondary{display:inline}}.b-packages .packages-filters{align-items:center;color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);grid-column:span 2/span 2}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-filters{grid-column:span 1/span 1}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters{justify-content:flex-end}}.b-packages .packages-filters>div{display:grid}.b-packages .packages-filters label{align-items:center;cursor:pointer;display:flex;gap:var(--g-space-0-5);grid-column:1/1;grid-row:1/1;justify-content:space-between}.b-packages .packages-filters label:hover>*{color:var(--s-color-text-tertiary-hover)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-filters label span{display:none}}@media (min-width:calc(1366 / 16 * 1rem)){.b-packages .packages-filters label span{display:inline}}.b-packages .packages-search{display:flex;font-size:var(--g-font-size-100);grid-column:span 2/span 2;position:relative}@media (min-width:calc(480 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 3/span 3}}@media (min-width:calc(640 / 16 * 1rem)){.b-packages .packages-search{grid-column:span 1/span 1}}.b-packages .range{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-gap:var(--g-space-2);color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);gap:var(--g-space-2)}.b-packages .range:before{color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-200);font-weight:var(--g-font-weight-bold);grid-column:1/-1;padding-bottom:var(--g-space-2);padding-top:var(--g-space-2);text-align:center;width:100%}.b-packages .range:after{content:"Add a package to your namespace to get started";display:none;font-size:var(--g-font-size-100);grid-column:1/-1;text-align:center}.b-packages .range:empty:before{content:"No packages found";display:block}.b-packages .range:empty:after{content:"Add a package to your namespace to get started";display:block}.b-packages article{background-color:var(--s-color-bg-surface-primary);border-radius:var(--s-rounded);display:flex;flex-direction:column;gap:var(--g-space-6);padding:var(--g-space-1)}@media (min-width:calc(640 / 16 * 1rem)){.b-packages article{gap:var(--g-space-2)}}.b-packages article .article-content{background-color:var(--s-color-bg-base);border-radius:var(--s-rounded-sm);display:flex;flex-direction:column;height:100%;padding:var(--g-space-2);width:100%}.b-packages article .article-content .title{align-items:center;display:flex;gap:var(--g-space-2);margin-bottom:var(--g-space-1);overflow:hidden;width:100%}.b-packages article .article-content h3{font-size:var(--g-font-size-200);font-weight:var(--g-font-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article .article-content h3>a{color:var(--s-color-text-link-hover)}.b-packages article .article-content h3>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article .article-content>p{overflow:hidden;text-overflow:ellipsis;width:100%}.b-packages article .article-content>p>a:hover{-webkit-text-decoration:underline;text-decoration:underline}.b-packages article footer{display:flex;font-size:var(--g-font-size-50);gap:var(--g-space-1);justify-content:space-between;padding-bottom:var(--g-space-1);padding-left:var(--g-space-2);padding-right:var(--g-space-2)}.b-packages article footer time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-packages article footer .size{text-align:right}.b-packages article,.b-packages li{display:none}.b-packages:has(input[value=packages]:checked) li{display:flex}.b-packages:has(input[value=packages]:checked) article{display:flex}.b-packages:has(input[value=realms]:checked) + li[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=realms]:checked) + article[data-list-type-value=realm]{display:flex}.b-packages:has(input[value=pures]:checked) + li[data-list-type-value=pure]{display:flex}.b-packages:has(input[value=pures]:checked) + article[data-list-type-value=pure]{display:flex}.b-packages label:has(input:checked){color:var(--s-color-text-tertiary)}.b-packages label:has(input:checked):after{background-color:var(--s-color-bg-brand-default);border-top-left-radius:var(--s-rounded-sm);border-top-right-radius:var(--s-rounded-sm);bottom:calc(var(--g-space-1)*-2);content:"";height:var(--g-space-1);left:0;position:absolute;width:100%}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{display:block}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):before{content:"No realms found"}.b-packages:has(input[value=realms]:checked) .range:not(:has(>[data-list-type-value=realm])):after{content:"Add a realm to your namespace to get started"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{display:block}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):before{content:"No pures found"}.b-packages:has(input[value=pures]:checked) .range:not(:has(>[data-list-type-value=pure])):after{content:"Add a pure to your namespace to get started"}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{gap:var(--g-space-3);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-grid]:checked) .range{grid-template-columns:repeat(4,minmax(0,1fr))}}.b-packages:has(input[value=display-grid]:checked) .range article .article-content p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.b-packages:has(input[value=display-list]:checked) .range article .article-content{display:flex;flex:none;flex-direction:row;gap:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article .article-content{flex:5;min-width:0}}.b-packages:has(input[value=display-list]:checked) .range article .article-content .title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:33.33333%}.b-packages:has(input[value=display-list]:checked) .range article .article-content p{white-space:nowrap}.b-packages:has(input[value=display-list]:checked) .range article footer{display:none;justify-content:center;min-width:0;padding-bottom:0;padding-left:0}@media (min-width:calc(640 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{flex:1}}@media (min-width:calc(820 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer{display:flex}}.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:none;min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer .size{display:block;flex:2}}.b-packages:has(input[value=display-list]:checked) .range article footer time{min-width:0}@media (min-width:calc(1020 / 16 * 1rem)){.b-packages:has(input[value=display-list]:checked) .range article footer time{flex:5}}.b-icon-action{flex-shrink:0;height:var(--g-space-5);width:var(--g-space-5)}.b-popup-bg,.b-popup-dialog{opacity:0;right:0;top:0;visibility:hidden;z-index:var(--g-z-max)}.b-popup-bg{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.b-popup-dialog{position:absolute}.b-popup-dialog>.inner{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);padding:var(--g-space-2-5) var(--g-space-4);position:absolute;transform:translateX(-100%);z-index:var(--g-z-max)}.b-popup-dialog>.inner>*+*{margin-top:var(--g-space-2-5)}.b-popup-dialog header{align-items:center;color:var(--s-color-text-secondary);display:flex;justify-content:space-between;width:100%}.b-popup-dialog header>svg{color:var(--s-color-text-tertiary);cursor:pointer;position:absolute;right:var(--g-space-3)}.b-popup-dialog header>svg>svg:hover{color:var(--s-color-text-primary)}.b-popup:checked+.b-popup-bg,.b-popup:checked~.b-popup-dialog{opacity:1;visibility:visible}.b-tag,.b-tag--secondary{align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-secondary);display:flex;font-family:var(--g-font-family-mono);font-size:var(--g-font-size-50);gap:var(--g-space-2);padding:var(--g-space-px) var(--g-space-2)}.b-tag--secondary{background-color:var(--s-color-bg-surface-primary);border-color:transparent;color:var(--s-color-text-primary)}.c-readme-view .gno-foreign,.c-realm-view .gno-foreign{background-color:var(--s-color-bg-surface-primary);border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);contain:layout paint;display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);padding:var(--g-space-3) var(--g-space-4);position:relative}.c-readme-view .gno-foreign__label,.c-realm-view .gno-foreign__label{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.04em;margin-bottom:var(--g-space-2);text-transform:uppercase}.c-readme-view .gno-foreign__body>:first-child,.c-realm-view .gno-foreign__body>:first-child{margin-top:0}.c-readme-view .gno-foreign__body>:last-child,.c-realm-view .gno-foreign__body>:last-child{margin-bottom:0}.c-readme-view .gno-columns,.c-realm-view .gno-columns{display:flex;flex-wrap:wrap;gap:var(--g-space-10)}@media (min-width:calc(1366 / 16 * 1rem)){.c-readme-view .gno-columns,.c-realm-view .gno-columns{gap:var(--g-space-12)}}.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-52);flex-grow:1;flex-shrink:1}@media (min-width:calc(820 / 16 * 1rem)){.c-readme-view .gno-columns>*,.c-realm-view .gno-columns>*{flex-basis:var(--g-space-44)}}.c-readme-view .tooltip,.c-realm-view .tooltip{--tooltip-left:0;--tooltip-right:initial;align-items:center;border:var(--s-border);border-radius:var(--s-rounded-full);color:var(--s-color-text-tertiary);display:inline-flex;height:var(--g-space-4);justify-content:center;margin-bottom:var(--g-space-px);position:relative;width:var(--g-space-4)}.c-readme-view .tooltip>svg,.c-realm-view .tooltip>svg{height:var(--g-space-3);width:var(--g-space-3)}.c-readme-view .tooltip:after,.c-realm-view .tooltip:after{background-color:var(--s-color-bg-base);border:var(--s-border-secondary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);content:attr(data-tooltip);font-size:var(--g-font-size-100);font-weight:var(--g-font-normal);left:var(--tooltip-left);max-width:var(--g-space-48);min-width:var(--g-space-32);opacity:0;padding:var(--g-space-1) var(--g-space-2);position:absolute;right:var(--tooltip-right);scale:0;text-align:center;top:100%;visibility:hidden;width:-moz-fit-content;width:fit-content;z-index:var(--g-z-max)}.c-readme-view .tooltip:hover:after,.c-realm-view .tooltip:hover:after{opacity:1;scale:1;transition-delay:var(--g-transition-fast);visibility:visible}.c-readme-view .tooltip:only-of-type,.c-realm-view .tooltip:only-of-type{margin-left:.3em;margin-right:.3em}.c-realm-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .tooltip:has(+span){margin-left:.3em}.c-readme-view .link-external,.c-realm-view .link-external{font-size:.67em}.c-readme-view .link-internal,.c-realm-view .link-internal{font-size:.75em;font-weight:400}.c-readme-view .link-tx,.c-readme-view .link-user,.c-realm-view .link-tx,.c-realm-view .link-user{font-size:.75em}.c-realm-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-readme-view ul:has(li>input[type=checkbox]:first-child){list-style:none;padding-left:0}.c-realm-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li:has(>input[type=checkbox]:first-child){align-items:center;display:flex;gap:var(--g-space-2)}.c-readme-view li>input[type=checkbox]:first-child,.c-realm-view li>input[type=checkbox]:first-child{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border-secondary);border-radius:var(--s-rounded-sm);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view li>input[type=checkbox]:first-child:disabled,.c-realm-view li>input[type=checkbox]:first-child:disabled{background-color:var(--s-color-bg-surface-primary);border-color:var(--s-color-border-tertiary);cursor:not-allowed}.c-readme-view li>input[type=checkbox]:first-child:disabled:after,.c-realm-view li>input[type=checkbox]:first-child:disabled:after{background-color:var(--s-color-bg-brand-default)}.c-readme-view li>input[type=checkbox]:first-child:checked:after,.c-realm-view li>input[type=checkbox]:first-child:checked:after{opacity:1}.c-readme-view li>input[type=checkbox]:first-child:after,.c-realm-view li>input[type=checkbox]:first-child:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .footnote-backref,.c-realm-view .footnote-backref{vertical-align:middle}.c-readme-view li[id^="fn:"],.c-realm-view li[id^="fn:"]{position:relative;z-index:var(--g-z-1)}.c-readme-view li[id^="fn:"]:before,.c-realm-view li[id^="fn:"]:before{background-color:var(--s-color-bg-brand-weak);border-radius:var(--s-rounded-sm);bottom:0;content:"";display:block;left:calc(var(--g-space-0-5)*-1);opacity:0;position:absolute;right:calc(var(--g-space-0-5)*-1);top:calc(var(--g-space-0-5)*-1);z-index:var(--g-z-min)}.c-readme-view li[id^="fn:"]:target:before,.c-realm-view li[id^="fn:"]:target:before{opacity:1;transition-delay:var(--g-duration-150);transition-duration:var(--g-duration-75)}.c-readme-view .gno-form,.c-realm-view .gno-form{border:var(--s-border-secondary);border-radius:var(--s-rounded);display:block;margin-bottom:var(--g-space-6);margin-top:var(--g-space-6)}.c-readme-view .gno-form input[type=submit],.c-realm-view .gno-form input[type=submit]{background-color:var(--s-color-bg-brand-default);border-color:var(--s-color-border-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base);cursor:pointer;margin-bottom:var(--g-space-2);margin-top:var(--g-space-4);width:100%}.c-readme-view .gno-form input[type=submit]:hover,.c-realm-view .gno-form input[type=submit]:hover{opacity:.9}.c-readme-view .gno-form .command,.c-realm-view .gno-form .command{background-color:var(--s-color-bg-base-dev);margin-top:var(--g-space-6);padding:var(--g-space-4)}.c-readme-view .gno-form .command .title,.c-realm-view .gno-form .command .title{font-size:var(--g-font-size-200);font-weight:var(--g-font-semibold);white-space:nowrap}.c-readme-view .gno-form .command>.b-code,.c-realm-view .gno-form .command>.b-code{background-color:var(--s-color-bg-base-dev)}.c-readme-view .gno-form .command>.b-code>pre,.c-realm-view .gno-form .command>.b-code>pre{background-color:var(--s-color-bg-base);margin-bottom:0}.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:flex-start;flex-direction:column;gap:var(--g-space-2)}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between,.c-readme-view .gno-form .command .c-inline,.c-realm-view .gno-form .command .c-between,.c-realm-view .gno-form .command .c-inline{align-items:center;flex-direction:row}}.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:100%}@media (min-width:calc(640 / 16 * 1rem)){.c-readme-view .gno-form .command .c-between>*,.c-readme-view .gno-form .command .c-inline>*,.c-realm-view .gno-form .command .c-between>*,.c-realm-view .gno-form .command .c-inline>*{width:auto}}.c-readme-view .gno-form_header,.c-realm-view .gno-form_header{color:var(--s-color-text-tertiary);display:flex;font-size:var(--g-font-size-50);justify-content:space-between;margin-bottom:var(--g-space-6);padding:var(--g-space-2) var(--g-space-4) 0}.c-readme-view .gno-form_input,.c-readme-view .gno-form_select,.c-realm-view .gno-form_input,.c-realm-view .gno-form_select{padding-left:var(--g-space-4);padding-right:var(--g-space-4);position:relative}.c-readme-view .gno-form_input label,.c-readme-view .gno-form_select label,.c-realm-view .gno-form_input label,.c-realm-view .gno-form_select label{background-color:var(--s-color-bg-input);color:var(--s-color-text-tertiary);display:none;font-size:var(--g-font-size-50);left:var(--g-space-5);padding-left:var(--g-space-1);padding-right:var(--g-space-1);position:absolute;top:0;transform:translateY(-50%)}.c-readme-view .gno-form_input svg,.c-readme-view .gno-form_select svg,.c-realm-view .gno-form_input svg,.c-realm-view .gno-form_select svg{height:var(--g-space-4);pointer-events:none;position:absolute;right:var(--g-space-6);top:50%;transform:translateY(-50%);width:var(--g-space-4)}.c-realm-view .gno-form_input:has(input:focus) label{display:block}.c-readme-view .gno-form_input:has(input:focus) label{display:block}.c-realm-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(input:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-realm-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:-moz-placeholder)) label{display:block}.c-readme-view .gno-form_input:has(textarea:not(:placeholder-shown)) label{display:block}.c-realm-view .gno-form_input:has(textarea:focus) label{display:block}.c-readme-view .gno-form_input:has(textarea:focus) label{display:block}.c-realm-view .gno-form_select:has(select:focus) label{display:block}.c-readme-view .gno-form_select:has(select:focus) label{display:block}.c-realm-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_select:has(select option:not([value=""]):checked) label{display:block}.c-readme-view .gno-form_input input,.c-readme-view .gno-form_input textarea,.c-readme-view .gno-form_select select,.c-realm-view .gno-form_input input,.c-realm-view .gno-form_input textarea,.c-realm-view .gno-form_select select{background-color:var(--s-color-bg-input);border:var(--g-space-px) solid var(--s-color-border-input);border-radius:var(--s-rounded-sm);color:var(--s-color-text-primary);display:block;margin-bottom:var(--g-space-4);margin-top:var(--g-space-4);outline:none;padding:var(--g-space-2);width:100%}.c-readme-view .gno-form_input input:focus,.c-readme-view .gno-form_input input:hover,.c-readme-view .gno-form_input textarea:focus,.c-readme-view .gno-form_input textarea:hover,.c-readme-view .gno-form_select select:focus,.c-readme-view .gno-form_select select:hover,.c-realm-view .gno-form_input input:focus,.c-realm-view .gno-form_input input:hover,.c-realm-view .gno-form_input textarea:focus,.c-realm-view .gno-form_input textarea:hover,.c-realm-view .gno-form_select select:focus,.c-realm-view .gno-form_select select:hover{border-color:var(--s-color-border-tertiary)}.c-realm-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input textarea::placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-realm-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::-moz-placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select::placeholder{color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_input input:disabled,.c-readme-view .gno-form_input input[readonly],.c-readme-view .gno-form_input textarea:disabled,.c-readme-view .gno-form_input textarea[readonly],.c-readme-view .gno-form_select select:disabled,.c-readme-view .gno-form_select select[readonly],.c-realm-view .gno-form_input input:disabled,.c-realm-view .gno-form_input input[readonly],.c-realm-view .gno-form_input textarea:disabled,.c-realm-view .gno-form_input textarea[readonly],.c-realm-view .gno-form_select select:disabled,.c-realm-view .gno-form_select select[readonly]{background-color:var(--s-color-bg-secondary);color:var(--s-color-text-tertiary);cursor:not-allowed}.c-readme-view .gno-form_input input:disabled:focus,.c-readme-view .gno-form_input input:disabled:hover,.c-readme-view .gno-form_input input[readonly]:focus,.c-readme-view .gno-form_input input[readonly]:hover,.c-readme-view .gno-form_input textarea:disabled:focus,.c-readme-view .gno-form_input textarea:disabled:hover,.c-readme-view .gno-form_input textarea[readonly]:focus,.c-readme-view .gno-form_input textarea[readonly]:hover,.c-readme-view .gno-form_select select:disabled:focus,.c-readme-view .gno-form_select select:disabled:hover,.c-readme-view .gno-form_select select[readonly]:focus,.c-readme-view .gno-form_select select[readonly]:hover,.c-realm-view .gno-form_input input:disabled:focus,.c-realm-view .gno-form_input input:disabled:hover,.c-realm-view .gno-form_input input[readonly]:focus,.c-realm-view .gno-form_input input[readonly]:hover,.c-realm-view .gno-form_input textarea:disabled:focus,.c-realm-view .gno-form_input textarea:disabled:hover,.c-realm-view .gno-form_input textarea[readonly]:focus,.c-realm-view .gno-form_input textarea[readonly]:hover,.c-realm-view .gno-form_select select:disabled:focus,.c-realm-view .gno-form_select select:disabled:hover,.c-realm-view .gno-form_select select[readonly]:focus,.c-realm-view .gno-form_select select[readonly]:hover{border-color:var(--s-color-border-secondary)}.c-realm-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:user-invalid:focus{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:user-invalid:focus{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input input:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_input textarea:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-realm-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:-moz-placeholder):not(:focus){border-color:var(--s-color-border-error)}.c-readme-view .gno-form_select select:invalid:not(:placeholder-shown):not(:focus){border-color:var(--s-color-border-error)}}.c-realm-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input input:focus::placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input input:focus::placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-realm-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::-moz-placeholder{opacity:0}.c-readme-view .gno-form_input textarea:focus::placeholder{opacity:0}.c-readme-view .gno-form textarea,.c-realm-view .gno-form textarea{resize:none}.c-realm-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_select select:has(option[value=""]:checked){color:var(--s-color-text-tertiary)}.c-readme-view .gno-form_description,.c-realm-view .gno-form_description{color:var(--s-color-text-secondary);font-weight:var(--g-font-semibold);margin-bottom:var(--g-space-2);margin-top:var(--g-space-5);padding-left:var(--g-space-4)}.c-readme-view .gno-form_info-badge,.c-realm-view .gno-form_info-badge{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-50);font-weight:var(--g-font-normal);margin-left:var(--g-space-1)}.c-readme-view .gno-form_selectable,.c-realm-view .gno-form_selectable{-moz-column-gap:var(--g-space-2);column-gap:var(--g-space-2);display:flex;margin-bottom:var(--g-space-1);padding-left:var(--g-space-4);padding-right:var(--g-space-4)}.c-readme-view .gno-form_selectable input,.c-realm-view .gno-form_selectable input{width:auto}.c-readme-view .gno-form_selectable input[type=checkbox],.c-readme-view .gno-form_selectable input[type=radio],.c-realm-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--s-border);border-radius:var(--s-rounded-full);flex-shrink:0;height:var(--g-space-5);padding:0;position:relative;width:var(--g-space-5)}.c-readme-view .gno-form_selectable input[type=checkbox]:checked,.c-readme-view .gno-form_selectable input[type=radio]:checked,.c-realm-view .gno-form_selectable input[type=checkbox]:checked,.c-realm-view .gno-form_selectable input[type=radio]:checked{background-color:var(--s-color-bg-brand-default);border-color:transparent}.c-readme-view .gno-form_selectable input[type=checkbox]:checked:after,.c-readme-view .gno-form_selectable input[type=radio]:checked:after,.c-realm-view .gno-form_selectable input[type=checkbox]:checked:after,.c-realm-view .gno-form_selectable input[type=radio]:checked:after{opacity:1}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=radio]:focus{outline:none}.c-readme-view .gno-form_selectable input[type=checkbox]:focus,.c-readme-view .gno-form_selectable input[type=checkbox]:hover,.c-readme-view .gno-form_selectable input[type=radio]:focus,.c-readme-view .gno-form_selectable input[type=radio]:hover,.c-realm-view .gno-form_selectable input[type=checkbox]:focus,.c-realm-view .gno-form_selectable input[type=checkbox]:hover,.c-realm-view .gno-form_selectable input[type=radio]:focus,.c-realm-view .gno-form_selectable input[type=radio]:hover{border-color:var(--s-color-border-tertiary);color:var(--s-color-text-brand-default)}.c-readme-view .gno-form_selectable input[type=checkbox]:focus+label,.c-readme-view .gno-form_selectable input[type=checkbox]:hover+label,.c-readme-view .gno-form_selectable input[type=radio]:focus+label,.c-readme-view .gno-form_selectable input[type=radio]:hover+label,.c-realm-view .gno-form_selectable input[type=checkbox]:focus+label,.c-realm-view .gno-form_selectable input[type=checkbox]:hover+label,.c-realm-view .gno-form_selectable input[type=radio]:focus+label,.c-realm-view .gno-form_selectable input[type=radio]:hover+label{color:var(--s-color-text-brand-default);-webkit-text-decoration:underline;text-decoration:underline}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled,.c-readme-view .gno-form_selectable input[type=radio]:disabled,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled,.c-realm-view .gno-form_selectable input[type=radio]:disabled{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:line-through;text-decoration:line-through}.c-readme-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-readme-view .gno-form_selectable input[type=radio]:disabled+label,.c-realm-view .gno-form_selectable input[type=checkbox]:disabled+label,.c-realm-view .gno-form_selectable input[type=radio]:disabled+label{cursor:not-allowed;opacity:var(--g-opacity-50);-webkit-text-decoration:none;text-decoration:none}.c-realm-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:user-invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:user-invalid{border-color:var(--s-color-border-error)}@supports not selector(:user-invalid){.c-realm-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=radio]:invalid{border-color:var(--s-color-border-error)}.c-realm-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}.c-readme-view .gno-form_selectable input[type=checkbox]:invalid{border-color:var(--s-color-border-error)}}.c-readme-view .gno-form_selectable input[type=radio]:after,.c-realm-view .gno-form_selectable input[type=radio]:after{background-color:var(--s-color-bg-brand-default);border:var(--s-border-secondary);border-radius:var(--s-rounded-full);border-width:calc(var(--g-space-px)*2);content:"";height:var(--g-space-4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-4)}.c-readme-view .gno-form_selectable input[type=checkbox],.c-realm-view .gno-form_selectable input[type=checkbox]{border-radius:var(--s-rounded-sm)}.c-readme-view .gno-form_selectable input[type=checkbox]:after,.c-realm-view .gno-form_selectable input[type=checkbox]:after{background-color:var(--s-color-bg-base);clip-path:polygon(25% 36%,43% 54%,76% 18%,89% 29%,44% 78%,13% 49%);content:"";height:var(--g-space-3);left:50%;margin:auto;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--g-space-3)}.c-readme-view .gno-form_selectable label,.c-realm-view .gno-form_selectable label{color:var(--s-color-text-secondary);cursor:pointer;display:block;position:relative}.c-readme-view .gno-form_selectable label:first-letter,.c-realm-view .gno-form_selectable label:first-letter{text-transform:capitalize}.c-readme-view .gno-alert,.c-realm-view .gno-alert{border-left:var(--g-space-1) solid var(--s-color-border-tertiary);border-radius:var(--s-rounded);color:var(--s-color-text-secondary);margin-bottom:var(--g-space-10);margin-top:var(--g-space-5);padding:var(--g-space-3) var(--g-space-4)}.c-readme-view .gno-alert>div>:first-child,.c-realm-view .gno-alert>div>:first-child{margin-top:var(--g-space-2)}.c-readme-view .gno-alert>div>:last-child,.c-realm-view .gno-alert>div>:last-child{margin-bottom:0}.c-readme-view .gno-alert>summary,.c-realm-view .gno-alert>summary{align-items:center;display:flex;font-weight:var(--g-font-bold);gap:var(--g-space-2);list-style:none;margin-bottom:var(--g-space-1);margin-top:var(--g-space-1)}.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary svg{height:var(--g-space-6);width:var(--g-space-6)}.c-readme-view .gno-alert>summary svg:last-of-type,.c-realm-view .gno-alert>summary svg:last-of-type{height:var(--g-space-4);margin-left:auto;transform:rotate(-90deg);width:var(--g-space-4)}.c-readme-view .gno-alert>summary a,.c-readme-view .gno-alert>summary svg,.c-realm-view .gno-alert>summary a,.c-realm-view .gno-alert>summary svg{color:inherit}.c-realm-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::marker{display:none}.c-readme-view .gno-alert>summary::-webkit-details-marker,.c-realm-view .gno-alert>summary::-webkit-details-marker{display:none}.c-readme-view .gno-alert[open]>summary svg:last-of-type,.c-realm-view .gno-alert[open]>summary svg:last-of-type{transform:rotate(0)}.c-readme-view .gno-alert.gno-alert-info,.c-realm-view .gno-alert.gno-alert-info{background-color:color-mix(in srgb,var(--s-color-bg-info-default) 10%,transparent);border-left-color:var(--s-color-border-info);color:var(--s-color-text-info)}.c-readme-view .gno-alert.gno-alert-note,.c-realm-view .gno-alert.gno-alert-note{background-color:color-mix(in srgb,var(--s-color-bg-note-default) 10%,transparent);border-left-color:var(--s-color-border-note);color:var(--s-color-text-note)}.c-readme-view .gno-alert.gno-alert-success,.c-realm-view .gno-alert.gno-alert-success{background-color:color-mix(in srgb,var(--s-color-bg-success-default) 10%,transparent);border-left-color:var(--s-color-border-success);color:var(--s-color-text-success)}.c-readme-view .gno-alert.gno-alert-warning,.c-realm-view .gno-alert.gno-alert-warning{background-color:color-mix(in srgb,var(--s-color-bg-warning-default) 10%,transparent);border-left-color:var(--s-color-border-warning);color:var(--s-color-text-warning)}.c-readme-view .gno-alert.gno-alert-caution,.c-realm-view .gno-alert.gno-alert-caution{background-color:color-mix(in srgb,var(--s-color-bg-caution-default) 10%,transparent);border-left-color:var(--s-color-border-error);color:var(--s-color-text-caution)}.c-readme-view .gno-alert.gno-alert-tip,.c-realm-view .gno-alert.gno-alert-tip{background-color:color-mix(in srgb,var(--s-color-bg-tip-default) 10%,transparent);border-left-color:var(--s-color-border-tip);color:var(--s-color-text-tip)}.b-playground{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-playground-toolbar-left{align-items:center;display:flex;gap:var(--g-space-2)}.b-playground-toolbar-right{align-items:center;display:flex;gap:var(--g-space-1)}.b-playground-editor-area{border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);display:flex;flex-direction:column;margin-bottom:var(--g-space-8);overflow:hidden}.b-playground-tabs-wrap{align-items:center;border-bottom:1px solid var(--s-color-border-default);display:flex;gap:0;padding-left:var(--g-space-1-5)}.b-playground-tabs{align-items:center;display:flex;flex:0 1 auto;gap:0;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.b-playground-tabs::-webkit-scrollbar{display:none}.b-playground-tabs-actions{gap:0;margin-left:var(--g-space-1);padding-bottom:var(--g-space-2)}.b-playground-tabs-actions,.b-playground-tabs-nav{align-items:center;display:inline-flex;flex:0 0 auto}.b-playground-tabs-nav{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;height:var(--g-space-6);justify-content:center;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tabs-nav:hover:not(:disabled){color:var(--s-color-text-secondary)}.b-playground-tabs-nav:disabled{cursor:default;opacity:.3}.b-playground-tabs-nav .c-icon{height:var(--g-space-3);width:var(--g-space-3)}.b-playground-tabs-nav--prev .c-icon{transform:rotate(90deg)}.b-playground-tabs-nav--next .c-icon{transform:rotate(-90deg)}.b-playground-tab{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-family:var(--g-font-mono);font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);margin-right:var(--g-space-1);padding:var(--g-space-1) var(--g-space-2) var(--g-space-3);position:relative;transition:color var(--g-transition-fast);white-space:nowrap}.b-playground-tab:after{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded) var(--s-rounded) 0 0;bottom:0;content:"";height:var(--g-space-1);left:0;position:absolute;transition:width var(--g-transition-fast);width:0}.b-playground-tab:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-tab--active{color:var(--s-color-text-secondary)}.b-playground-tab--active:after{width:100%}.b-playground-tab-add{align-items:center;background:none;border:none;color:var(--s-color-text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:var(--g-font-size-200);height:var(--g-space-6);justify-content:center;line-height:1;padding:0;transition:color var(--g-transition-fast);width:var(--g-space-6)}.b-playground-tab-add:hover{color:var(--s-color-text-secondary)}.b-playground-editor{display:flex;height:60vh;min-height:300px;overflow:hidden;resize:vertical}.b-playground-output{background-color:var(--s-color-bg-surface-secondary);border:1px solid var(--s-color-border-default);border-radius:var(--g-radius-2);overflow:hidden;padding:var(--g-space-4)}.b-playground-output-header{align-items:center;background-color:var(--s-color-bg-muted);border-bottom:1px solid var(--s-color-border-default);display:flex;justify-content:space-between;padding:var(--g-space-1) 0}.b-playground-output-title{font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);letter-spacing:.05em;margin-bottom:var(--g-space-1);text-transform:uppercase}.b-playground-output-clear{background:none;border:none;color:var(--s-color-text-tertiary);cursor:pointer;font-size:var(--g-font-size-100)}.b-playground-output-clear:hover{color:var(--s-color-text-tertiary-hover)}.b-playground-output-content{background-color:var(--s-color-bg-base);display:flex;flex-direction:column;font-family:var(--g-font-mono);font-size:var(--g-font-size-75);gap:0;line-height:1.6;margin:0;max-height:300px;min-height:80px;overflow-y:auto;padding:var(--g-space-2)}.b-playground-output-item{align-items:flex-start;display:flex;gap:var(--g-space-2)}.b-playground-output-item-text{color:inherit;flex:1;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;white-space:pre-wrap;word-break:break-word}.b-playground-output-copy-btn{align-items:center;background:none;border:none;border-radius:var(--g-radius-1);color:var(--s-color-fg-muted);cursor:pointer;display:flex;flex-shrink:0;padding:var(--g-space-1);transition:color .15s,background-color .15s}.b-playground-output-copy-btn:hover{background-color:var(--s-color-bg-surface-secondary);color:var(--s-color-fg-default)}.b-run{display:flex;flex-direction:column;grid-column:1/-1;min-height:70vh;padding-bottom:var(--g-space-24)}.b-run-commands,.b-run-settings{background-color:var(--s-color-bg-surface-secondary);border-radius:var(--s-rounded);padding:var(--g-space-4)}.b-run-commands{display:flex;flex-direction:column;gap:var(--g-space-3)}.b-run-commands h3{font-size:var(--g-font-size-400)}.b-run-settings-grid{align-items:stretch;display:flex;flex-direction:column;gap:var(--g-space-1);margin-top:var(--g-space-4);width:100%}.b-run-settings-grid label{background-color:var(--s-color-bg-surface-primary)}.b-run-settings-grid .b-input:has(input:focus) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-settings-grid .b-input:has(input:hover) label{background-color:var(--s-color-bg-surface-secondary)}.b-run-command-header{align-items:center;display:flex;font-size:var(--g-font-size-100);gap:var(--g-space-2);margin-bottom:var(--g-space-2)}.b-run-command-label{color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.doc-example{background:var(--s-color-bg-surface-primary);border:var(--s-border);border-radius:var(--s-rounded-sm);margin-bottom:var(--g-space-3);margin-top:var(--g-space-3);overflow:hidden}.doc-example>summary{color:var(--s-color-text-secondary);cursor:pointer;font-size:var(--g-font-size-100);font-weight:var(--g-font-semibold);padding:var(--g-space-2) var(--g-space-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.doc-example>summary:hover{background:var(--s-color-bg-surface-secondary)}.doc-example>pre{border-radius:0;border-top:var(--s-border-secondary);margin-bottom:0;margin-top:0;overflow-x:auto;padding:var(--g-space-3)}.b-omnisearch,.doc-example>pre{font-size:var(--g-font-size-100)}.b-omnisearch{background-color:var(--s-color-bg-surface-secondary);border:var(--s-border);border-radius:0 0 var(--s-rounded) var(--s-rounded);border-top:none;left:0;max-height:70vh;overflow-y:auto;padding:var(--g-space-1);position:absolute;right:0;top:calc(100% - var(--g-space-px));z-index:var(--g-z-max)}.b-omnisearch[hidden]{display:none}.b-omnisearch .b-omnisearch-section+.b-omnisearch-section{border-top:var(--s-border);margin-top:var(--g-space-1);padding-top:var(--g-space-1)}.b-omnisearch .b-omnisearch-label{color:var(--s-color-text-tertiary);display:block;font-size:var(--g-font-size-50);font-weight:var(--g-font-semibold);padding:var(--g-space-1) var(--g-space-2);text-transform:uppercase}.b-omnisearch .b-omnisearch-empty{color:var(--s-color-text-tertiary);font-size:var(--g-font-size-100);padding:var(--g-space-2)}.b-omnisearch .b-omnisearch-item{align-items:center;border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);cursor:pointer;display:flex;gap:var(--g-space-1-5);padding:var(--g-space-1-5) var(--g-space-2);text-align:left;width:100%}.b-omnisearch .b-omnisearch-item mark{background-color:transparent;color:var(--s-color-text-primary);font-weight:var(--g-font-semibold)}.b-omnisearch .b-omnisearch-item:hover,.b-omnisearch .b-omnisearch-item[aria-selected=true]{background-color:var(--s-color-bg-base);color:var(--s-color-text-primary)}.b-omnisearch .b-omnisearch-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-omnisearch .b-omnisearch-tag{align-items:center;background-color:var(--s-color-bg-surface-tertiary);border-radius:var(--s-rounded-sm);color:var(--s-color-text-secondary);display:inline-flex;flex-shrink:0;font-size:var(--g-font-size-50);font-weight:var(--g-font-bold);height:var(--g-space-4);justify-content:center;min-width:var(--g-space-4);padding-left:var(--g-space-1);padding-right:var(--g-space-1);text-transform:uppercase}.b-omnisearch .b-omnisearch-tag[data-type=r]{background-color:var(--s-color-bg-brand-default);color:var(--s-color-text-base)}.b-omnisearch .b-omnisearch-tag[data-type=u]{background-color:var(--s-color-bg-surface-quaternary);color:var(--s-color-text-base)}.b-omnisearch .b-omnisearch-tag[data-type=p]{background-color:var(--s-color-bg-info-default);color:var(--s-color-text-base)}.b-main-navigation:has(>.b-omnisearch:not([hidden]))>.inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.b-omnisearch-hl{background-color:var(--s-color-bg-brand-default);border-radius:var(--s-rounded-sm);color:var(--s-color-text-base)}.u-hidden{display:none}.u-inline{display:inline}.u-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.u-color-valid{color:var(--s-color-bg-brand-default)}.u-color-danger{color:var(--s-color-text-caution)}.u-text-stroke{-webkit-text-stroke:currentColor;-webkit-text-stroke-width:.6px}.u-font-mono{font-family:var(--g-font-family-mono)}.u-capitalize{text-transform:capitalize}.u-text-center{text-align:center}.u-no-scrollbar::-webkit-scrollbar{display:none}.u-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.u-is-loading{opacity:0}.u-icon-static{height:var(--g-space-4);width:var(--g-space-4)}.u-gap-0{gap:0}.u-mt-4{margin-top:var(--g-space-4)}.u-mb-0{margin-bottom:0}.u-mb-2{margin-bottom:var(--g-space-2)}@media (min-width:calc(820 / 16 * 1rem)){.u-lg-mb-4{margin-bottom:var(--g-space-4)}}.u-grid-full{grid-column:1/-1} \ No newline at end of file From 9b7a602eedaecff1ee233e53611db948c5a109a2 Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 9 Jun 2026 10:24:20 +0200 Subject: [PATCH 37/40] chore: fixup --- gno.land/cmd/gnoweb/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gno.land/cmd/gnoweb/main.go b/gno.land/cmd/gnoweb/main.go index 3a26259d005..fd737d0bd2f 100644 --- a/gno.land/cmd/gnoweb/main.go +++ b/gno.land/cmd/gnoweb/main.go @@ -350,7 +350,7 @@ func SecureHeadersMiddleware(next http.Handler, strict bool) http.Handler { // scripts, styles, images, and other resources. This helps prevent // cross-site scripting (XSS) and other code injection attacks. csp := fmt.Sprintf( - "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; connect-src 'self'; form-action 'self'", + "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; form-action 'self'", imgSrc, ) From da815c3327ac46389ee43b6117fb202407e3391f Mon Sep 17 00:00:00 2001 From: jeronimoalbi <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:00:59 +0200 Subject: [PATCH 38/40] chore: fixup --- gno.land/cmd/gnoweb/main.go | 2 +- gno.land/cmd/gnoweb/main_test.go | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gno.land/cmd/gnoweb/main.go b/gno.land/cmd/gnoweb/main.go index fd737d0bd2f..3a26259d005 100644 --- a/gno.land/cmd/gnoweb/main.go +++ b/gno.land/cmd/gnoweb/main.go @@ -350,7 +350,7 @@ func SecureHeadersMiddleware(next http.Handler, strict bool) http.Handler { // scripts, styles, images, and other resources. This helps prevent // cross-site scripting (XSS) and other code injection attacks. csp := fmt.Sprintf( - "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; form-action 'self'", + "default-src 'self'; script-src 'self' https://sa.gno.services; style-src 'self'; img-src %s; font-src 'self'; connect-src 'self'; form-action 'self'", imgSrc, ) diff --git a/gno.land/cmd/gnoweb/main_test.go b/gno.land/cmd/gnoweb/main_test.go index ce78271ec6a..ce01eb5eea7 100644 --- a/gno.land/cmd/gnoweb/main_test.go +++ b/gno.land/cmd/gnoweb/main_test.go @@ -107,10 +107,9 @@ func TestSecureHeadersMiddlewareStrict(t *testing.T) { if !strings.Contains(csp, "https://assets.gnoteam.com") { t.Errorf("Expected Content-Security-Policy to contain 'https://assets.gnoteam.com', got '%s'", csp) } - // The search dropdown fetches the same-origin /search.json, so connect-src - // must allow 'self' in addition to the RPC node. - if !strings.Contains(csp, "connect-src 'self' http://example.com/abci_query") { - t.Errorf("Expected Content-Security-Policy connect-src to contain 'self' and the RPC node, got '%s'", csp) + // The search dropdown fetches the same-origin /search.json, so connect-src must allow 'self'. + if !strings.Contains(csp, "connect-src 'self'") { + t.Errorf("Expected Content-Security-Policy connect-src to contain 'self', got '%s'", csp) } if res.Header.Get("Strict-Transport-Security") != "max-age=31536000" { t.Errorf("Expected Strict-Transport-Security 'max-age=31536000', got '%s'", res.Header.Get("Strict-Transport-Security")) From 928d8984895c2c50d757c6df4633d1ac238649bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jer=C3=B3nimo=20Albi?= <894299+jeronimoalbi@users.noreply.github.com> Date: Tue, 23 Jun 2026 16:33:25 +0200 Subject: [PATCH 39/40] feat(gnoweb): change built-in playground and run views into features (#5774) --- gno.land/pkg/gnoweb/Makefile | 47 +- gno.land/pkg/gnoweb/app.go | 4 +- gno.land/pkg/gnoweb/client_mock.go | 2 + gno.land/pkg/gnoweb/components/template.go | 7 +- .../pkg/gnoweb/components/view_playground.go | 22 +- gno.land/pkg/gnoweb/components/view_run.go | 23 +- .../gnoweb/feature/playground/component.go | 30 ++ gno.land/pkg/gnoweb/feature/playground/doc.go | 7 + .../pkg/gnoweb/feature/playground/feature.go | 80 +++ .../gnoweb/feature/playground/feature_test.go | 88 ++++ .../frontend}/controller-playground.ts | 20 +- .../playground/frontend/playground.css | 249 +++++++++ .../pkg/gnoweb/feature/playground/handler.go | 318 ++++++++++++ .../gnoweb/feature/playground/handler_test.go | 487 ++++++++++++++++++ .../gnoweb/feature/playground/ratelimit.go | 99 ++++ .../pkg/gnoweb/feature/playground/template.go | 22 + .../playground/templates/page.html} | 6 +- .../pkg/gnoweb/feature/playground/view.go | 23 + gno.land/pkg/gnoweb/feature/run/component.go | 30 ++ gno.land/pkg/gnoweb/feature/run/doc.go | 8 + gno.land/pkg/gnoweb/feature/run/feature.go | 47 ++ .../pkg/gnoweb/feature/run/feature_test.go | 87 ++++ .../run/frontend}/controller-run.ts | 26 +- .../pkg/gnoweb/feature/run/frontend/run.css | 62 +++ gno.land/pkg/gnoweb/feature/run/handler.go | 18 + gno.land/pkg/gnoweb/feature/run/template.go | 28 + .../run/templates/page.html} | 6 +- gno.land/pkg/gnoweb/feature/run/view.go | 16 + .../pkg/gnoweb/frontend/css/06-blocks.css | 316 +----------- gno.land/pkg/gnoweb/frontend/css/main.css | 5 + gno.land/pkg/gnoweb/handler_http.go | 153 ++---- gno.land/pkg/gnoweb/handler_http_test.go | 14 +- gno.land/pkg/gnoweb/handler_playground.go | 256 --------- .../pkg/gnoweb/handler_playground_test.go | 218 -------- .../gnoweb/public/js/controller-playground.js | 28 +- .../pkg/gnoweb/public/js/controller-run.js | 24 +- gno.land/pkg/gnoweb/public/main.css | 2 +- gno.land/pkg/gnoweb/tsconfig.json | 12 + gno.land/pkg/gnoweb/weburl/url.go | 5 - 39 files changed, 1901 insertions(+), 994 deletions(-) create mode 100644 gno.land/pkg/gnoweb/feature/playground/component.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/doc.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/feature.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/feature_test.go rename gno.land/pkg/gnoweb/{frontend/js => feature/playground/frontend}/controller-playground.ts (96%) create mode 100644 gno.land/pkg/gnoweb/feature/playground/frontend/playground.css create mode 100644 gno.land/pkg/gnoweb/feature/playground/handler.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/handler_test.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/ratelimit.go create mode 100644 gno.land/pkg/gnoweb/feature/playground/template.go rename gno.land/pkg/gnoweb/{components/views/playground.html => feature/playground/templates/page.html} (96%) create mode 100644 gno.land/pkg/gnoweb/feature/playground/view.go create mode 100644 gno.land/pkg/gnoweb/feature/run/component.go create mode 100644 gno.land/pkg/gnoweb/feature/run/doc.go create mode 100644 gno.land/pkg/gnoweb/feature/run/feature.go create mode 100644 gno.land/pkg/gnoweb/feature/run/feature_test.go rename gno.land/pkg/gnoweb/{frontend/js => feature/run/frontend}/controller-run.ts (88%) create mode 100644 gno.land/pkg/gnoweb/feature/run/frontend/run.css create mode 100644 gno.land/pkg/gnoweb/feature/run/handler.go create mode 100644 gno.land/pkg/gnoweb/feature/run/template.go rename gno.land/pkg/gnoweb/{components/views/run.html => feature/run/templates/page.html} (96%) create mode 100644 gno.land/pkg/gnoweb/feature/run/view.go delete mode 100644 gno.land/pkg/gnoweb/handler_playground.go delete mode 100644 gno.land/pkg/gnoweb/handler_playground_test.go create mode 100644 gno.land/pkg/gnoweb/tsconfig.json diff --git a/gno.land/pkg/gnoweb/Makefile b/gno.land/pkg/gnoweb/Makefile index d068ae43b81..b7b4772c00e 100644 --- a/gno.land/pkg/gnoweb/Makefile +++ b/gno.land/pkg/gnoweb/Makefile @@ -20,8 +20,10 @@ biome := $(node_modules)/.bin/biome # css config css_config_path := frontend/css/main.css -# main css config -main_css_files := $(shell find frontend/css -name '*.css') +# main css config — includes per-feature CSS pulled into the Cube CSS Block +# layer via @import from frontend/css/main.css (postcss-import resolves at +# compile time, so the final bundle and layer order are unchanged). +main_css_files := $(shell find frontend/css feature -name '*.css' 2>/dev/null) output_maincss := $(PUBLIC_DIR)/main.css templates_files := $(shell find . -iname '*.html') @@ -35,11 +37,31 @@ output_static := $(patsubst $(src_dir_static)/%, $(out_dir_static)/%, $(input_st # esbuild config src_dir_js := frontend/js out_dir_js := $(PUBLIC_DIR)/js -input_js := $(shell find $(src_dir_js) -name '*.ts' -not -name '*.d.ts') +# Pick up both legacy controllers under frontend/js/ and per-feature +# controllers under feature//frontend/. All compile to +# $(out_dir_js)/.js (flat output, no source-path mirroring). +input_js := $(shell find $(src_dir_js) -name '*.ts' -not -name '*.d.ts') \ + $(shell find feature -path 'feature/*/frontend/*.ts' 2>/dev/null) +# Guard against silent overwrites: two features cannot ship the same +# controller-X.ts basename (they would compile to the same target). +_dup_check := $(shell echo "$(notdir $(input_js))" | tr ' ' '\n' | sort | uniq -d) +ifneq ($(_dup_check),) +$(error duplicate JS controller basenames: $(_dup_check)) +endif # Separate shared and controller files shared_js := $(src_dir_js)/controller.ts controller_js := $(filter-out $(shared_js),$(input_js)) -output_js := $(patsubst $(src_dir_js)/%.ts,$(out_dir_js)/%.js,$(input_js)) +# Flatten: any .ts (legacy or feature) → $(out_dir_js)/.js. +output_js := $(addprefix $(out_dir_js)/,$(patsubst %.ts,%.js,$(notdir $(input_js)))) +# Tell make where to look for .ts sources so the %.js pattern rule below +# resolves both legacy and feature-local controllers. +vpath %.ts $(src_dir_js) $(shell find feature -path 'feature/*/frontend' -type d 2>/dev/null) + +# Alias so controllers outside frontend/js/ (per-feature controllers under +# feature//frontend/) can import shared modules as @gnoweb/js/... instead +# of brittle ../../../frontend/js/ relative paths. Resolved relative to esbuild's +# working directory (this Makefile's dir). +esbuild_alias := --alias:@gnoweb/js=./frontend/js # cache cache_dir := .cache @@ -82,10 +104,15 @@ $(output_maincss): $(main_css_files) $(templates_files) $(postcss) $(postcss) $(css_config_path) -o $@ --env production touch $@ +# Per-feature controllers live under feature//frontend/, outside +# frontend/js/. NODE_PATH points esbuild at the single frontend/node_modules +# so npm imports (e.g. "htmx.org") resolve from any source location. +node_path := $(node_modules) + ts: $(esbuild) $(output_js) # Build shared chunk first (always loaded) $(out_dir_js)/controller.js: $(shared_js) $(esbuild) - NODE_ENV=production $(esbuild) $< --log-level=error --bundle --outfile=$@ --format=esm --minify + NODE_ENV=production NODE_PATH=$(node_path) $(esbuild) $< --log-level=error --bundle --outfile=$@ --format=esm --minify $(esbuild_alias) # sa-bootstrap is loaded as a synchronous classic