@apipass/design-system 3.3.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/embedded-styles.js +1 -1
- package/dist/lib/json-viewer.index.cjs +2 -0
- package/dist/lib/json-viewer.index.cjs.map +1 -0
- package/dist/lib/json-viewer.index.js +5 -0
- package/dist/lib/json-viewer.index.js.map +1 -0
- package/dist/lib/lib.index.cjs +1 -1
- package/dist/lib/lib.index.js +742 -744
- package/dist/lib/lib.index.js.map +1 -1
- package/dist/lib/style.css +1 -1
- package/dist/lib/ui/primitives/JsonViewer/JsonViewer.cjs +1 -1
- package/dist/lib/ui/primitives/JsonViewer/JsonViewer.cjs.map +1 -1
- package/dist/lib/ui/primitives/JsonViewer/JsonViewer.js +8 -8
- package/dist/types/json-viewer.index.d.ts +1 -0
- package/dist/types/ui/primitives/index.d.ts +0 -1
- package/package.json +34 -7
- package/dist/lib/vendor/@codemirror/lang-json/dist/index.cjs +0 -2
- package/dist/lib/vendor/@codemirror/lang-json/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@codemirror/lang-json/dist/index.js +0 -28
- package/dist/lib/vendor/@codemirror/lang-json/dist/index.js.map +0 -1
- package/dist/lib/vendor/@codemirror/language/dist/index.cjs +0 -2
- package/dist/lib/vendor/@codemirror/language/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@codemirror/language/dist/index.js +0 -791
- package/dist/lib/vendor/@codemirror/language/dist/index.js.map +0 -1
- package/dist/lib/vendor/@codemirror/state/dist/index.cjs +0 -6
- package/dist/lib/vendor/@codemirror/state/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@codemirror/state/dist/index.js +0 -2633
- package/dist/lib/vendor/@codemirror/state/dist/index.js.map +0 -1
- package/dist/lib/vendor/@codemirror/view/dist/index.cjs +0 -5
- package/dist/lib/vendor/@codemirror/view/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@codemirror/view/dist/index.js +0 -6068
- package/dist/lib/vendor/@codemirror/view/dist/index.js.map +0 -1
- package/dist/lib/vendor/@lezer/common/dist/index.cjs +0 -2
- package/dist/lib/vendor/@lezer/common/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@lezer/common/dist/index.js +0 -1392
- package/dist/lib/vendor/@lezer/common/dist/index.js.map +0 -1
- package/dist/lib/vendor/@lezer/highlight/dist/index.cjs +0 -2
- package/dist/lib/vendor/@lezer/highlight/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@lezer/highlight/dist/index.js +0 -638
- package/dist/lib/vendor/@lezer/highlight/dist/index.js.map +0 -1
- package/dist/lib/vendor/@lezer/json/dist/index.cjs +0 -2
- package/dist/lib/vendor/@lezer/json/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@lezer/json/dist/index.js +0 -35
- package/dist/lib/vendor/@lezer/json/dist/index.js.map +0 -1
- package/dist/lib/vendor/@lezer/lr/dist/index.cjs +0 -2
- package/dist/lib/vendor/@lezer/lr/dist/index.cjs.map +0 -1
- package/dist/lib/vendor/@lezer/lr/dist/index.js +0 -1269
- package/dist/lib/vendor/@lezer/lr/dist/index.js.map +0 -1
- package/dist/lib/vendor/@marijn/find-cluster-break/src/index.cjs +0 -2
- package/dist/lib/vendor/@marijn/find-cluster-break/src/index.cjs.map +0 -1
- package/dist/lib/vendor/@marijn/find-cluster-break/src/index.js +0 -70
- package/dist/lib/vendor/@marijn/find-cluster-break/src/index.js.map +0 -1
- package/dist/lib/vendor/style-mod/src/style-mod.cjs +0 -4
- package/dist/lib/vendor/style-mod/src/style-mod.cjs.map +0 -1
- package/dist/lib/vendor/style-mod/src/style-mod.js +0 -110
- package/dist/lib/vendor/style-mod/src/style-mod.js.map +0 -1
- package/dist/lib/vendor/w3c-keyname/index.cjs +0 -2
- package/dist/lib/vendor/w3c-keyname/index.cjs.map +0 -1
- package/dist/lib/vendor/w3c-keyname/index.js +0 -89
- package/dist/lib/vendor/w3c-keyname/index.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("react"),S=require("../../../vendor/clsx/dist/clsx.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("react"),S=require("../../../vendor/clsx/dist/clsx.cjs"),x=require("@codemirror/state"),v=require("@codemirror/view"),q=require("@codemirror/lang-json"),d=require("@codemirror/language"),c=require("@lezer/highlight");;/* empty css */const E=require("../../icons/IconChevronDown.cjs"),R=require("../../icons/IconChevronRight.cjs"),j=require("../Button/Button.cjs"),C=220,N=d.HighlightStyle.define([{tag:c.tags.propertyName,color:"var(--json-viewer-color-key)"},{tag:c.tags.string,color:"var(--json-viewer-color-string)",fontWeight:600},{tag:[c.tags.number,c.tags.bool,c.tags.null],color:"var(--json-viewer-color-scalar)"},{tag:[c.tags.separator,c.tags.squareBracket,c.tags.brace],color:"var(--json-viewer-color-punctuation)"}]),H=v.EditorView.theme({"&":{backgroundColor:"transparent",color:"var(--json-viewer-color-punctuation)",fontSize:"13px"},"&.cm-focused":{outline:"none"},".cm-content":{fontFamily:"var(--sds-typography-family-mono)",padding:"45px 124px 12px 4px"},".cm-gutters":{backgroundColor:"transparent",border:"none",color:"var(--json-viewer-color-caret)",paddingLeft:"5px"},".cm-scroller":{overflow:"auto"}}),I=[q.json(),d.foldGutter(),d.syntaxHighlighting(N)];function k(t){try{return JSON.stringify(t,null,2)??"null"}catch{return String(t)}}function z(t){return typeof t=="number"?`${t}px`:t}function p(t,i){i.length>0&&t.dispatch({effects:i.map(o=>d.foldEffect.of(o))})}function B(t){const i=[],o=t.length;let n=0;for(;n<o&&t[n]!=="{"&&t[n]!=="[";)n++;if(n>=o)return i;let f=0,l=!1,s=-1;for(;n<o;n++){const r=t[n];if(l){r==="\\"?n++:r==='"'&&(l=!1);continue}if(r==='"'){l=!0;continue}if(r==="{"||r==="["){f++,f===2&&(s=n+1);continue}(r==="}"||r==="]")&&(f===2&&s!==-1&&(i.push({from:s,to:n}),s=-1),f--)}return i}function F({value:t,expandAllLabel:i,actions:o,className:n,height:f}){const l=u.useRef(null),s=u.useRef(null),[r,m]=u.useState(!1),g=u.useMemo(()=>k(t),[t]),h=u.useMemo(()=>B(g),[g]),y=z(f??C);u.useEffect(()=>{if(!l.current)return;const e=new v.EditorView({parent:l.current,state:x.EditorState.create({doc:g,extensions:[v.EditorView.editable.of(!1),x.EditorState.readOnly.of(!0),H,...I]})});return s.current=e,p(e,h),()=>{e.destroy(),s.current=null}},[]),u.useEffect(()=>{const e=s.current;if(!e)return;const w=e.state.doc.toString();w!==g&&(e.dispatch({changes:{from:0,to:w.length,insert:g}}),p(e,h),m(!1))},[g,h]);const b=()=>{const e=s.current;e&&(r?p(e,h):d.unfoldAll(e),m(!r))};return a.jsxs("div",{className:S.clsx("json-viewer",n),children:[a.jsx(j.Button,{"aria-label":i,variant:"subtle",size:"small",className:"json-viewer-expand-all",onPress:b,children:r?a.jsx(E.IconChevronDown,{size:"14"}):a.jsx(R.IconChevronRight,{size:"14"})}),o&&o.length>0&&a.jsx("div",{className:"json-viewer-actions",children:o.map(e=>a.jsx(j.Button,{"aria-label":e.label,variant:"subtle",size:"small",className:"json-viewer-action",onPress:e.onPress,children:e.icon},e.key))}),a.jsx("div",{ref:l,className:"json-viewer-content",style:{height:y}})]})}exports.JsonViewer=F;
|
|
2
2
|
//# sourceMappingURL=JsonViewer.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonViewer.cjs","sources":["../../../../../src/ui/primitives/JsonViewer/JsonViewer.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { EditorState } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\nimport { json } from \"@codemirror/lang-json\";\nimport { foldEffect, foldGutter, HighlightStyle, syntaxHighlighting, unfoldAll } from \"@codemirror/language\";\nimport { tags as t } from \"@lezer/highlight\";\nimport { Button } from \"primitives\";\nimport { IconChevronDown, IconChevronRight } from \"icons\";\nimport \"./jsonviewer.css\";\n\nexport interface JsonViewerAction {\n key: string;\n label: string;\n icon: ReactNode;\n onPress: () => void;\n}\n\nexport interface JsonViewerProps {\n value: unknown;\n expandAllLabel: string;\n actions?: JsonViewerAction[];\n className?: string;\n height?: string | number;\n}\n\nconst DEFAULT_HEIGHT = 220;\n\nconst jsonHighlightStyle = HighlightStyle.define([\n { tag: t.propertyName, color: \"var(--json-viewer-color-key)\" },\n { tag: t.string, color: \"var(--json-viewer-color-string)\", fontWeight: 600 },\n { tag: [t.number, t.bool, t.null], color: \"var(--json-viewer-color-scalar)\" },\n { tag: [t.separator, t.squareBracket, t.brace], color: \"var(--json-viewer-color-punctuation)\" },\n]);\n\nconst theme = EditorView.theme({\n \"&\": { backgroundColor: \"transparent\", color: \"var(--json-viewer-color-punctuation)\", fontSize: \"13px\" },\n \"&.cm-focused\": { outline: \"none\" },\n \".cm-content\": { fontFamily: \"var(--sds-typography-family-mono)\", padding: \"45px 124px 12px 4px\" },\n \".cm-gutters\": {\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"var(--json-viewer-color-caret)\",\n paddingLeft: \"5px\",\n },\n \".cm-scroller\": { overflow: \"auto\" },\n});\n\nconst extensions = [json(), foldGutter(), syntaxHighlighting(jsonHighlightStyle)];\n\nfunction serialize(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2) ?? \"null\";\n } catch {\n return String(value);\n }\n}\n\nfunction toCssSize(size: string | number): string {\n return typeof size === \"number\" ? `${size}px` : size;\n}\n\nfunction applyFoldRanges(view: EditorView, ranges: { from: number; to: number }[]) {\n if (ranges.length > 0) view.dispatch({ effects: ranges.map((range) => foldEffect.of(range)) });\n}\n\n/**\n * Finds the fold range of every direct child (depth 1) of the root object/array\n * by scanning the text itself for matching brackets. This mirrors what\n * CodeMirror's `foldable()` would compute, but doesn't depend on the lezer\n * parser having finished tokenizing the document — which for a multi-MB\n * document is not guaranteed synchronously at mount time.\n */\nfunction computeFirstLevelFoldRanges(text: string): { from: number; to: number }[] {\n const ranges: { from: number; to: number }[] = [];\n const n = text.length;\n let i = 0;\n while (i < n && text[i] !== \"{\" && text[i] !== \"[\") i++;\n if (i >= n) return ranges;\n\n let depth = 0;\n let inString = false;\n let pendingStart = -1;\n for (; i < n; i++) {\n const ch = text[i];\n if (inString) {\n if (ch === \"\\\\\") i++;\n else if (ch === '\"') inString = false;\n continue;\n }\n if (ch === '\"') {\n inString = true;\n continue;\n }\n if (ch === \"{\" || ch === \"[\") {\n depth++;\n if (depth === 2) pendingStart = i + 1;\n continue;\n }\n if (ch === \"}\" || ch === \"]\") {\n if (depth === 2 && pendingStart !== -1) {\n ranges.push({ from: pendingStart, to: i });\n pendingStart = -1;\n }\n depth--;\n }\n }\n return ranges;\n}\n\nexport function JsonViewer({ value, expandAllLabel, actions, className, height }: JsonViewerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<EditorView | null>(null);\n const [isExpanded, setIsExpanded] = useState(false);\n const text = useMemo(() => serialize(value), [value]);\n const foldRanges = useMemo(() => computeFirstLevelFoldRanges(text), [text]);\n const editorHeight = toCssSize(height ?? DEFAULT_HEIGHT);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const view = new EditorView({\n parent: containerRef.current,\n state: EditorState.create({\n doc: text,\n extensions: [EditorView.editable.of(false), EditorState.readOnly.of(true), theme, ...extensions],\n }),\n });\n viewRef.current = view;\n applyFoldRanges(view, foldRanges);\n return () => {\n view.destroy();\n viewRef.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const view = viewRef.current;\n if (!view) return;\n const currentText = view.state.doc.toString();\n if (currentText !== text) {\n view.dispatch({ changes: { from: 0, to: currentText.length, insert: text } });\n applyFoldRanges(view, foldRanges);\n setIsExpanded(false);\n }\n }, [text, foldRanges]);\n\n const toggleExpandAll = () => {\n const view = viewRef.current;\n if (!view) return;\n if (isExpanded) {\n applyFoldRanges(view, foldRanges);\n } else {\n unfoldAll(view);\n }\n setIsExpanded(!isExpanded);\n };\n\n return (\n <div className={clsx(\"json-viewer\", className)}>\n <Button\n aria-label={expandAllLabel}\n variant=\"subtle\"\n size=\"small\"\n className=\"json-viewer-expand-all\"\n onPress={toggleExpandAll}\n >\n {isExpanded ? <IconChevronDown size=\"14\" /> : <IconChevronRight size=\"14\" />}\n </Button>\n {actions && actions.length > 0 && (\n <div className=\"json-viewer-actions\">\n {actions.map((action) => (\n <Button\n key={action.key}\n aria-label={action.label}\n variant=\"subtle\"\n size=\"small\"\n className=\"json-viewer-action\"\n onPress={action.onPress}\n >\n {action.icon}\n </Button>\n ))}\n </div>\n )}\n <div ref={containerRef} className=\"json-viewer-content\" style={{ height: editorHeight }} />\n </div>\n );\n}\n"],"names":["DEFAULT_HEIGHT","jsonHighlightStyle","HighlightStyle","t","theme","EditorView","extensions","json","foldGutter","syntaxHighlighting","serialize","value","toCssSize","size","applyFoldRanges","view","ranges","range","foldEffect","computeFirstLevelFoldRanges","text","n","i","depth","inString","pendingStart","ch","JsonViewer","expandAllLabel","actions","className","height","containerRef","useRef","viewRef","isExpanded","setIsExpanded","useState","useMemo","foldRanges","editorHeight","useEffect","EditorState","currentText","toggleExpandAll","unfoldAll","clsx","jsx","Button","IconChevronDown","IconChevronRight","action"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JsonViewer.cjs","sources":["../../../../../src/ui/primitives/JsonViewer/JsonViewer.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { EditorState } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\nimport { json } from \"@codemirror/lang-json\";\nimport { foldEffect, foldGutter, HighlightStyle, syntaxHighlighting, unfoldAll } from \"@codemirror/language\";\nimport { tags as t } from \"@lezer/highlight\";\nimport { Button } from \"primitives\";\nimport { IconChevronDown, IconChevronRight } from \"icons\";\nimport \"./jsonviewer.css\";\n\nexport interface JsonViewerAction {\n key: string;\n label: string;\n icon: ReactNode;\n onPress: () => void;\n}\n\nexport interface JsonViewerProps {\n value: unknown;\n expandAllLabel: string;\n actions?: JsonViewerAction[];\n className?: string;\n height?: string | number;\n}\n\nconst DEFAULT_HEIGHT = 220;\n\nconst jsonHighlightStyle = HighlightStyle.define([\n { tag: t.propertyName, color: \"var(--json-viewer-color-key)\" },\n { tag: t.string, color: \"var(--json-viewer-color-string)\", fontWeight: 600 },\n { tag: [t.number, t.bool, t.null], color: \"var(--json-viewer-color-scalar)\" },\n { tag: [t.separator, t.squareBracket, t.brace], color: \"var(--json-viewer-color-punctuation)\" },\n]);\n\nconst theme = EditorView.theme({\n \"&\": { backgroundColor: \"transparent\", color: \"var(--json-viewer-color-punctuation)\", fontSize: \"13px\" },\n \"&.cm-focused\": { outline: \"none\" },\n \".cm-content\": { fontFamily: \"var(--sds-typography-family-mono)\", padding: \"45px 124px 12px 4px\" },\n \".cm-gutters\": {\n backgroundColor: \"transparent\",\n border: \"none\",\n color: \"var(--json-viewer-color-caret)\",\n paddingLeft: \"5px\",\n },\n \".cm-scroller\": { overflow: \"auto\" },\n});\n\nconst extensions = [json(), foldGutter(), syntaxHighlighting(jsonHighlightStyle)];\n\nfunction serialize(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2) ?? \"null\";\n } catch {\n return String(value);\n }\n}\n\nfunction toCssSize(size: string | number): string {\n return typeof size === \"number\" ? `${size}px` : size;\n}\n\nfunction applyFoldRanges(view: EditorView, ranges: { from: number; to: number }[]) {\n if (ranges.length > 0) view.dispatch({ effects: ranges.map((range) => foldEffect.of(range)) });\n}\n\n/**\n * Finds the fold range of every direct child (depth 1) of the root object/array\n * by scanning the text itself for matching brackets. This mirrors what\n * CodeMirror's `foldable()` would compute, but doesn't depend on the lezer\n * parser having finished tokenizing the document — which for a multi-MB\n * document is not guaranteed synchronously at mount time.\n */\nfunction computeFirstLevelFoldRanges(text: string): { from: number; to: number }[] {\n const ranges: { from: number; to: number }[] = [];\n const n = text.length;\n let i = 0;\n while (i < n && text[i] !== \"{\" && text[i] !== \"[\") i++;\n if (i >= n) return ranges;\n\n let depth = 0;\n let inString = false;\n let pendingStart = -1;\n for (; i < n; i++) {\n const ch = text[i];\n if (inString) {\n if (ch === \"\\\\\") i++;\n else if (ch === '\"') inString = false;\n continue;\n }\n if (ch === '\"') {\n inString = true;\n continue;\n }\n if (ch === \"{\" || ch === \"[\") {\n depth++;\n if (depth === 2) pendingStart = i + 1;\n continue;\n }\n if (ch === \"}\" || ch === \"]\") {\n if (depth === 2 && pendingStart !== -1) {\n ranges.push({ from: pendingStart, to: i });\n pendingStart = -1;\n }\n depth--;\n }\n }\n return ranges;\n}\n\nexport function JsonViewer({ value, expandAllLabel, actions, className, height }: JsonViewerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<EditorView | null>(null);\n const [isExpanded, setIsExpanded] = useState(false);\n const text = useMemo(() => serialize(value), [value]);\n const foldRanges = useMemo(() => computeFirstLevelFoldRanges(text), [text]);\n const editorHeight = toCssSize(height ?? DEFAULT_HEIGHT);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const view = new EditorView({\n parent: containerRef.current,\n state: EditorState.create({\n doc: text,\n extensions: [EditorView.editable.of(false), EditorState.readOnly.of(true), theme, ...extensions],\n }),\n });\n viewRef.current = view;\n applyFoldRanges(view, foldRanges);\n return () => {\n view.destroy();\n viewRef.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const view = viewRef.current;\n if (!view) return;\n const currentText = view.state.doc.toString();\n if (currentText !== text) {\n view.dispatch({ changes: { from: 0, to: currentText.length, insert: text } });\n applyFoldRanges(view, foldRanges);\n setIsExpanded(false);\n }\n }, [text, foldRanges]);\n\n const toggleExpandAll = () => {\n const view = viewRef.current;\n if (!view) return;\n if (isExpanded) {\n applyFoldRanges(view, foldRanges);\n } else {\n unfoldAll(view);\n }\n setIsExpanded(!isExpanded);\n };\n\n return (\n <div className={clsx(\"json-viewer\", className)}>\n <Button\n aria-label={expandAllLabel}\n variant=\"subtle\"\n size=\"small\"\n className=\"json-viewer-expand-all\"\n onPress={toggleExpandAll}\n >\n {isExpanded ? <IconChevronDown size=\"14\" /> : <IconChevronRight size=\"14\" />}\n </Button>\n {actions && actions.length > 0 && (\n <div className=\"json-viewer-actions\">\n {actions.map((action) => (\n <Button\n key={action.key}\n aria-label={action.label}\n variant=\"subtle\"\n size=\"small\"\n className=\"json-viewer-action\"\n onPress={action.onPress}\n >\n {action.icon}\n </Button>\n ))}\n </div>\n )}\n <div ref={containerRef} className=\"json-viewer-content\" style={{ height: editorHeight }} />\n </div>\n );\n}\n"],"names":["DEFAULT_HEIGHT","jsonHighlightStyle","HighlightStyle","t","theme","EditorView","extensions","json","foldGutter","syntaxHighlighting","serialize","value","toCssSize","size","applyFoldRanges","view","ranges","range","foldEffect","computeFirstLevelFoldRanges","text","n","i","depth","inString","pendingStart","ch","JsonViewer","expandAllLabel","actions","className","height","containerRef","useRef","viewRef","isExpanded","setIsExpanded","useState","useMemo","foldRanges","editorHeight","useEffect","EditorState","currentText","toggleExpandAll","unfoldAll","clsx","jsx","Button","IconChevronDown","IconChevronRight","action"],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { jsxs as E, jsx as u } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as v, useState as N, useMemo as w, useEffect as x } from "react";
|
|
3
3
|
import { clsx as R } from "../../../vendor/clsx/dist/clsx.js";
|
|
4
|
-
import { EditorState as y } from "
|
|
5
|
-
import { EditorView as d } from "
|
|
6
|
-
import { json as H } from "
|
|
7
|
-
import { foldGutter as k, syntaxHighlighting as z,
|
|
8
|
-
import { tags as l } from "
|
|
4
|
+
import { EditorState as y } from "@codemirror/state";
|
|
5
|
+
import { EditorView as d } from "@codemirror/view";
|
|
6
|
+
import { json as H } from "@codemirror/lang-json";
|
|
7
|
+
import { foldGutter as k, syntaxHighlighting as z, HighlightStyle as C, foldEffect as F, unfoldAll as I } from "@codemirror/language";
|
|
8
|
+
import { tags as l } from "@lezer/highlight";
|
|
9
9
|
/* empty css */
|
|
10
10
|
import { IconChevronDown as A } from "../../icons/IconChevronDown.js";
|
|
11
11
|
import { IconChevronRight as L } from "../../icons/IconChevronRight.js";
|
|
12
12
|
import { Button as j } from "../Button/Button.js";
|
|
13
|
-
const P = 220, T =
|
|
13
|
+
const P = 220, T = C.define([
|
|
14
14
|
{ tag: l.propertyName, color: "var(--json-viewer-color-key)" },
|
|
15
15
|
{ tag: l.string, color: "var(--json-viewer-color-string)", fontWeight: 600 },
|
|
16
16
|
{ tag: [l.number, l.bool, l.null], color: "var(--json-viewer-color-scalar)" },
|
|
@@ -38,7 +38,7 @@ function J(t) {
|
|
|
38
38
|
return typeof t == "number" ? `${t}px` : t;
|
|
39
39
|
}
|
|
40
40
|
function p(t, s) {
|
|
41
|
-
s.length > 0 && t.dispatch({ effects: s.map((n) =>
|
|
41
|
+
s.length > 0 && t.dispatch({ effects: s.map((n) => F.of(n)) });
|
|
42
42
|
}
|
|
43
43
|
function O(t) {
|
|
44
44
|
const s = [], n = t.length;
|
|
@@ -86,7 +86,7 @@ function ee({ value: t, expandAllLabel: s, actions: n, className: r, height: c }
|
|
|
86
86
|
}, [f, m]);
|
|
87
87
|
const S = () => {
|
|
88
88
|
const e = i.current;
|
|
89
|
-
e && (o ? p(e, m) :
|
|
89
|
+
e && (o ? p(e, m) : I(e), g(!o));
|
|
90
90
|
};
|
|
91
91
|
return /* @__PURE__ */ E("div", { className: R("json-viewer", r), children: [
|
|
92
92
|
/* @__PURE__ */ u(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ui/primitives/JsonViewer/JsonViewer";
|
|
@@ -16,7 +16,6 @@ export * from "./Icon/Icon";
|
|
|
16
16
|
export * from "./IconButton/IconButton";
|
|
17
17
|
export * from "./Image/Image";
|
|
18
18
|
export * from "./Input/Input";
|
|
19
|
-
export * from "./JsonViewer/JsonViewer";
|
|
20
19
|
export * from "./Link/Link";
|
|
21
20
|
export * from "./ListBox/ListBox";
|
|
22
21
|
export * from "./Logo/Logo";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apipass/design-system",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "APIPass React Design System",
|
|
6
6
|
"sideEffects": [
|
|
@@ -26,6 +26,11 @@
|
|
|
26
26
|
"import": "./dist/lib/charts.index.js",
|
|
27
27
|
"require": "./dist/lib/charts.index.cjs"
|
|
28
28
|
},
|
|
29
|
+
"./json-viewer": {
|
|
30
|
+
"types": "./dist/types/json-viewer.index.d.ts",
|
|
31
|
+
"import": "./dist/lib/json-viewer.index.js",
|
|
32
|
+
"require": "./dist/lib/json-viewer.index.cjs"
|
|
33
|
+
},
|
|
29
34
|
"./style.css": "./dist/lib/style.css",
|
|
30
35
|
"./embedded-styles": {
|
|
31
36
|
"types": "./dist/lib/embedded-styles.d.ts",
|
|
@@ -38,6 +43,9 @@
|
|
|
38
43
|
"charts": [
|
|
39
44
|
"./dist/types/charts.index.d.ts"
|
|
40
45
|
],
|
|
46
|
+
"json-viewer": [
|
|
47
|
+
"./dist/types/json-viewer.index.d.ts"
|
|
48
|
+
],
|
|
41
49
|
"icons": [
|
|
42
50
|
"./dist/types/ui/icons/index.d.ts"
|
|
43
51
|
]
|
|
@@ -72,6 +80,11 @@
|
|
|
72
80
|
]
|
|
73
81
|
},
|
|
74
82
|
"peerDependencies": {
|
|
83
|
+
"@codemirror/lang-json": ">=6.0.0",
|
|
84
|
+
"@codemirror/language": ">=6.0.0",
|
|
85
|
+
"@codemirror/state": ">=6.0.0",
|
|
86
|
+
"@codemirror/view": ">=6.0.0",
|
|
87
|
+
"@lezer/highlight": ">=1.0.0",
|
|
75
88
|
"@monaco-editor/react": ">=4.0.0",
|
|
76
89
|
"echarts": ">=5.5.0",
|
|
77
90
|
"react": ">=18.0.0",
|
|
@@ -79,6 +92,21 @@
|
|
|
79
92
|
"react-dom": ">=18.0.0"
|
|
80
93
|
},
|
|
81
94
|
"peerDependenciesMeta": {
|
|
95
|
+
"@codemirror/lang-json": {
|
|
96
|
+
"optional": true
|
|
97
|
+
},
|
|
98
|
+
"@codemirror/language": {
|
|
99
|
+
"optional": true
|
|
100
|
+
},
|
|
101
|
+
"@codemirror/state": {
|
|
102
|
+
"optional": true
|
|
103
|
+
},
|
|
104
|
+
"@codemirror/view": {
|
|
105
|
+
"optional": true
|
|
106
|
+
},
|
|
107
|
+
"@lezer/highlight": {
|
|
108
|
+
"optional": true
|
|
109
|
+
},
|
|
82
110
|
"@monaco-editor/react": {
|
|
83
111
|
"optional": true
|
|
84
112
|
},
|
|
@@ -87,19 +115,18 @@
|
|
|
87
115
|
}
|
|
88
116
|
},
|
|
89
117
|
"dependencies": {
|
|
90
|
-
"@codemirror/lang-json": "^6.0.2",
|
|
91
|
-
"@codemirror/language": "^6.12.4",
|
|
92
|
-
"@codemirror/state": "^6.7.1",
|
|
93
|
-
"@codemirror/view": "^6.43.9",
|
|
94
118
|
"@internationalized/date": "^3.10.0",
|
|
95
|
-
"@lezer/highlight": "^1.2.3",
|
|
96
119
|
"clsx": "^2.1.1",
|
|
97
|
-
"codemirror": "^6.0.2",
|
|
98
120
|
"react-grid-layout": "^1.5.3",
|
|
99
121
|
"react-toastify": "^11.1.0"
|
|
100
122
|
},
|
|
101
123
|
"devDependencies": {
|
|
124
|
+
"@codemirror/lang-json": "^6.0.2",
|
|
125
|
+
"@codemirror/language": "^6.12.4",
|
|
126
|
+
"@codemirror/state": "^6.7.1",
|
|
127
|
+
"@codemirror/view": "^6.43.9",
|
|
102
128
|
"@figma/code-connect": "^1.3.10",
|
|
129
|
+
"@lezer/highlight": "^1.2.3",
|
|
103
130
|
"@monaco-editor/react": "^4.7.0",
|
|
104
131
|
"@react-types/shared": "^3.23.0",
|
|
105
132
|
"@storybook/addon-docs": "^10.3.4",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../@lezer/json/dist/index.cjs"),e=require("../../language/dist/index.cjs"),n=e.LRLanguage.define({name:"json",parser:t.parser.configure({props:[e.indentNodeProp.add({Object:e.continuedIndent({except:/^\s*\}/}),Array:e.continuedIndent({except:/^\s*\]/})}),e.foldNodeProp.add({"Object Array":e.foldInside})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function o(){return new e.LanguageSupport(n)}exports.json=o;exports.jsonLanguage=n;
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../../../node_modules/@codemirror/lang-json/dist/index.js"],"sourcesContent":["import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n try {\n JSON.parse(view.state.doc.toString());\n }\n catch (e) {\n if (!(e instanceof SyntaxError))\n throw e;\n const pos = getErrorPosition(e, view.state.doc);\n return [{\n from: pos,\n message: e.message,\n severity: 'error',\n to: pos\n }];\n }\n return [];\n};\nfunction getErrorPosition(error, doc) {\n let m;\n if (m = error.message.match(/at position (\\d+)/))\n return Math.min(+m[1], doc.length);\n if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"json\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Object Array\": foldInside\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n indentOnInput: /^\\s*[\\}\\]]$/\n }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n"],"names":["jsonLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","foldNodeProp","foldInside","json","LanguageSupport"],"mappings":"kLAsCMA,EAA4BC,EAAAA,WAAW,OAAO,CAChD,KAAM,OACN,OAAqBC,EAAAA,OAAO,UAAU,CAClC,MAAO,CACUC,EAAAA,eAAe,IAAI,CAC5B,OAAqBC,EAAAA,gBAAgB,CAAE,OAAQ,QAAQ,CAAE,EACzD,MAAoBA,EAAAA,gBAAgB,CAAE,OAAQ,QAAQ,CAAE,CACxE,CAAa,EACYC,EAAAA,aAAa,IAAI,CAC1B,eAAgBC,EAAAA,UAChC,CAAa,CACb,CACA,CAAK,EACD,aAAc,CACV,cAAe,CAAE,SAAU,CAAC,IAAK,IAAK,GAAG,CAAC,EAC1C,cAAe,aACvB,CACA,CAAC,EAID,SAASC,GAAO,CACZ,OAAO,IAAIC,EAAAA,gBAAgBR,CAAY,CAC3C","x_google_ignoreList":[0]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { parser as n } from "../../../@lezer/json/dist/index.js";
|
|
2
|
-
import { LanguageSupport as r, LRLanguage as o, indentNodeProp as a, foldNodeProp as t, continuedIndent as e, foldInside as d } from "../../language/dist/index.js";
|
|
3
|
-
const p = /* @__PURE__ */ o.define({
|
|
4
|
-
name: "json",
|
|
5
|
-
parser: /* @__PURE__ */ n.configure({
|
|
6
|
-
props: [
|
|
7
|
-
/* @__PURE__ */ a.add({
|
|
8
|
-
Object: /* @__PURE__ */ e({ except: /^\s*\}/ }),
|
|
9
|
-
Array: /* @__PURE__ */ e({ except: /^\s*\]/ })
|
|
10
|
-
}),
|
|
11
|
-
/* @__PURE__ */ t.add({
|
|
12
|
-
"Object Array": d
|
|
13
|
-
})
|
|
14
|
-
]
|
|
15
|
-
}),
|
|
16
|
-
languageData: {
|
|
17
|
-
closeBrackets: { brackets: ["[", "{", '"'] },
|
|
18
|
-
indentOnInput: /^\s*[\}\]]$/
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
function u() {
|
|
22
|
-
return new r(p);
|
|
23
|
-
}
|
|
24
|
-
export {
|
|
25
|
-
u as json,
|
|
26
|
-
p as jsonLanguage
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../node_modules/@codemirror/lang-json/dist/index.js"],"sourcesContent":["import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n try {\n JSON.parse(view.state.doc.toString());\n }\n catch (e) {\n if (!(e instanceof SyntaxError))\n throw e;\n const pos = getErrorPosition(e, view.state.doc);\n return [{\n from: pos,\n message: e.message,\n severity: 'error',\n to: pos\n }];\n }\n return [];\n};\nfunction getErrorPosition(error, doc) {\n let m;\n if (m = error.message.match(/at position (\\d+)/))\n return Math.min(+m[1], doc.length);\n if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"json\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Object Array\": foldInside\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n indentOnInput: /^\\s*[\\}\\]]$/\n }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n"],"names":["jsonLanguage","LRLanguage","parser","indentNodeProp","continuedIndent","foldNodeProp","foldInside","json","LanguageSupport"],"mappings":";;AAsCK,MAACA,IAA4B,gBAAAC,EAAW,OAAO;AAAA,EAChD,MAAM;AAAA,EACN,QAAqB,gBAAAC,EAAO,UAAU;AAAA,IAClC,OAAO;AAAA,MACU,gBAAAC,EAAe,IAAI;AAAA,QAC5B,QAAqB,gBAAAC,EAAgB,EAAE,QAAQ,SAAQ,CAAE;AAAA,QACzD,OAAoB,gBAAAA,EAAgB,EAAE,QAAQ,SAAQ,CAAE;AAAA,MACxE,CAAa;AAAA,MACY,gBAAAC,EAAa,IAAI;AAAA,QAC1B,gBAAgBC;AAAA,MAChC,CAAa;AAAA,IACb;AAAA,EACA,CAAK;AAAA,EACD,cAAc;AAAA,IACV,eAAe,EAAE,UAAU,CAAC,KAAK,KAAK,GAAG,EAAC;AAAA,IAC1C,eAAe;AAAA,EACvB;AACA,CAAC;AAID,SAASC,IAAO;AACZ,SAAO,IAAIC,EAAgBR,CAAY;AAC3C;","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../../@lezer/common/dist/index.cjs"),f=require("../../state/dist/index.cjs"),h=require("../../view/dist/index.cjs"),P=require("../../../@lezer/highlight/dist/index.cjs"),H=require("../../../style-mod/src/style-mod.cjs");var E;const w=new u.NodeProp;function z(r){return f.Facet.define({combine:r?e=>e.concat(r):void 0})}const K=new u.NodeProp;class p{constructor(e,t,n=[],i=""){this.data=e,this.name=i,f.EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(f.EditorState.prototype,"tree",{get(){return g(this)}}),this.parser=t,this.extension=[m.of(this),f.EditorState.languageData.of((s,o,a)=>{let l=V(s,o,a),c=l.type.prop(w);if(!c)return[];let d=s.facet(c),k=l.type.prop(K);if(k){let C=l.resolve(o-l.from,a);for(let N of k)if(N.test(C,s)){let R=s.facet(N.facet);return N.type=="replace"?R:R.concat(d)}}return d})].concat(n)}isActiveAt(e,t,n=-1){return V(e,t,n).type.prop(w)==this.data}findRegions(e){let t=e.facet(m);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let n=[],i=(s,o)=>{if(s.prop(w)==this.data){n.push({from:o,to:o+s.length});return}let a=s.prop(u.NodeProp.mounted);if(a){if(a.tree.prop(w)==this.data){if(a.overlay)for(let l of a.overlay)n.push({from:l.from+o,to:l.to+o});else n.push({from:o,to:o+s.length});return}else if(a.overlay){let l=n.length;if(i(a.tree,a.overlay[0].from+o),n.length>l)return}}for(let l=0;l<s.children.length;l++){let c=s.children[l];c instanceof u.Tree&&i(c,s.positions[l]+o)}};return i(g(e),0),n}get allowsNesting(){return!0}}p.setState=f.StateEffect.define();function V(r,e,t){let n=r.facet(m),i=g(r).topNode;if(!n||n.allowsNesting)for(let s=i;s;s=s.enter(e,t,u.IterMode.ExcludeBuffers|u.IterMode.EnterBracketed))s.type.isTop&&(i=s);return i}class S extends p{constructor(e,t,n){super(e,t,[],n),this.parser=t}static define(e){let t=z(e.languageData);return new S(t,e.parser.configure({props:[w.add(n=>n.isTop?t:void 0)]}),e.name)}configure(e,t){return new S(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function g(r){let e=r.field(p.state,!1);return e?e.tree:u.Tree.empty}class Q{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let n=this.cursorPos-this.string.length;return e<n||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-n,t-n)}}let v=null;class b{constructor(e,t,n=[],i,s,o,a,l){this.parser=e,this.state=t,this.fragments=n,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,n){return new b(e,t,[],u.Tree.empty,0,n,[],null)}startParse(){return this.parser.startParse(new Q(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=u.Tree.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var n;if(typeof e=="number"){let i=Date.now()+e;e=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let i=this.parse.advance();if(i)if(this.fragments=this.withoutTempSkipped(u.TreeFragment.addTree(i,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(n=this.parse.stoppedAt)!==null&&n!==void 0?n:this.state.doc.length,this.tree=i,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=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(u.TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=v;v=this;try{return e()}finally{v=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=q(e,t.from,t.to);return e}changes(e,t){let{fragments:n,tree:i,treeLen:s,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,d,k,C)=>l.push({fromA:c,toA:d,fromB:k,toB:C})),n=u.TreeFragment.applyChanges(n,l),i=u.Tree.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let d=e.mapPos(c.from,1),k=e.mapPos(c.to,-1);d<k&&a.push({from:d,to:k})}}}return new b(this.parser,t,n,i,s,o,a,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let n=0;n<this.skipped.length;n++){let{from:i,to:s}=this.skipped[n];i<e.to&&s>e.from&&(this.fragments=q(this.fragments,i,s),this.skipped.splice(n--,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 u.Parser{createParse(t,n,i){let s=i[0].from,o=i[i.length-1].to;return{parsedPos:s,advance(){let l=v;if(l){for(let c of i)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new u.Tree(u.NodeType.none,[],[],o-s)},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 v}}function q(r,e,t){return u.TreeFragment.applyChanges(r,[{fromA:e,toA:t,fromB:e,toB:t}])}class y{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),n=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,n)||t.takeTree(),new y(t)}static init(e){let t=Math.min(3e3,e.doc.length),n=b.create(e.facet(m).parser,e,{from:0,to:t});return n.work(20,t)||n.takeTree(),new y(n)}}p.state=f.StateField.define({create:y.init,update(r,e){for(let t of e.effects)if(t.is(p.setState))return t.value;return e.startState.facet(m)!=e.state.facet(m)?y.init(e.state):r.apply(e)}});let X=r=>{let e=setTimeout(()=>r(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(X=r=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(r,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const O=typeof navigator<"u"&&(!((E=navigator.scheduling)===null||E===void 0)&&E.isInputPending)?()=>navigator.scheduling.isInputPending():null,ne=h.ViewPlugin.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(p.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(p.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=X(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:n,viewport:{to:i}}=this.view,s=n.field(p.state);if(s.tree==s.context.tree&&s.context.isDone(i+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!O?Math.max(25,e.timeRemaining()-5):1e9),a=s.context.treeLen<i&&n.doc.length>i+1e3,l=s.context.work(()=>O&&O()||Date.now()>o,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:p.setState.of(new y(s.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>h.logException(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()}}}),m=f.Facet.define({combine(r){return r.length?r[0]:null},enables:r=>[p.state,ne,h.EditorView.contentAttributes.compute([r],e=>{let t=e.facet(r);return t&&t.name?{"data-language":t.name}:{}})]});class ie{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}const se=new u.NodeProp;function oe({except:r,units:e=1}={}){return t=>{let n=r&&r.test(t.textAfter);return t.baseIndent+(n?0:e*t.unit)}}const Y=f.Facet.define(),Z=new u.NodeProp;function ae(r){let e=r.firstChild,t=r.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?r.to:t.from}:null}function le(r,e,t){let n=g(r);if(n.length<t)return null;let i=n.resolveStack(t,1),s=null;for(let o=i;o;o=o.next){let a=o.node;if(a.to<=t||a.from>t)continue;if(s&&a.from<e)break;let l=a.type.prop(Z);if(l&&(a.to<n.length-50||n.length==r.doc.length||!ce(a))){let c=l(a,r);c&&c.from<=t&&c.from>=e&&c.to>t&&(s=c)}}return s}function ce(r){let e=r.lastChild;return e&&e.to==r.to&&e.type.isError}function I(r,e,t){for(let n of r.facet(Y)){let i=n(r,e,t);if(i)return i}return le(r,e,t)}function _(r,e){let t=e.mapPos(r.from,1),n=e.mapPos(r.to,-1);return t>=n?void 0:{from:t,to:n}}const W=f.StateEffect.define({map:_}),x=f.StateEffect.define({map:_}),T=f.StateField.define({create(){return h.Decoration.none},update(r,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,i)=>r=j(r,n,i)),r=r.map(e.changes);let t=[];for(let n of e.effects)n.is(W)&&!he(r,n.value.from,n.value.to)?t.push(n.value):n.is(x)&&(r=r.update({filter:(i,s)=>n.value.from!=i||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));if(t.length){let{preparePlaceholder:n}=e.state.facet(ee),i=t.map(s=>(n?h.Decoration.replace({widget:new de(n(e.state,s))}):$).range(s.from,s.to));r=r.update({add:i})}return e.selection&&(r=j(r,e.selection.main.head)),r},provide:r=>h.EditorView.decorations.from(r),toJSON(r,e){let t=[];return r.between(0,e.doc.length,(n,i)=>{t.push(n,i)}),t},fromJSON(r){if(!Array.isArray(r)||r.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t<r.length;){let n=r[t++],i=r[t++];if(typeof n!="number"||typeof i!="number")throw new RangeError("Invalid JSON for fold state");e.push($.range(n,i))}return h.Decoration.set(e,!0)}});function j(r,e,t=e){let n=!1;return r.between(e,t,(i,s)=>{i<t&&s>e&&(n=!0)}),n?r.update({filterFrom:e,filterTo:t,filter:(i,s)=>i>=t||s<=e}):r}function L(r,e,t){var n;let i=null;return(n=r.field(T,!1))===null||n===void 0||n.between(e,t,(s,o)=>{(!i||i.from>s)&&(i={from:s,to:o})}),i}function he(r,e,t){let n=!1;return r.between(e,e,(i,s)=>{i==e&&s==t&&(n=!0)}),n}const ue=r=>{let e=r.state.field(T,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,r.state.doc.length,(n,i)=>{t.push(x.of({from:n,to:i}))}),r.dispatch({effects:t}),!0},fe={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},ee=f.Facet.define({combine(r){return f.combineConfig(r,fe)}});function te(r){return[T,me]}function re(r,e){let{state:t}=r,n=t.facet(ee),i=o=>{let a=r.lineBlockAt(r.posAtDOM(o.target)),l=L(r.state,a.from,a.to);l&&r.dispatch({effects:x.of(l)}),o.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(r,i,e);let s=document.createElement("span");return s.textContent=n.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}const $=h.Decoration.replace({widget:new class extends h.WidgetType{toDOM(r){return re(r,null)}}});class de extends h.WidgetType{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return re(e,this.value)}}const pe={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class F extends h.GutterMarker{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function ge(r={}){let e={...pe,...r},t=new F(e,!0),n=new F(e,!1),i=h.ViewPlugin.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(m)!=o.state.facet(m)||o.startState.field(T,!1)!=o.state.field(T,!1)||g(o.startState)!=g(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new f.RangeSetBuilder;for(let l of o.viewportLineBlocks){let c=L(o.state,l.from,l.to)?n:I(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:s}=e;return[i,h.gutter({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(i))===null||a===void 0?void 0:a.markers)||f.RangeSet.empty},initialSpacer(){return new F(e,!1)},domEventHandlers:{...s,click:(o,a,l)=>{if(s.click&&s.click(o,a,l))return!0;let c=L(o.state,a.from,a.to);if(c)return o.dispatch({effects:x.of(c)}),!0;let d=I(o.state,a.from,a.to);return d?(o.dispatch({effects:W.of(d)}),!0):!1}}}),te()]}const me=h.EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class D{constructor(e,t){this.specs=e;let n;function i(a){let l=H.StyleModule.newName();return(n||(n=Object.create(null)))["."+l]=a,l}const s=typeof t.all=="string"?t.all:t.all?i(t.all):void 0,o=t.scope;this.scope=o instanceof p?a=>a.prop(w)==o.data:o?a=>a==o:void 0,this.style=P.tagHighlighter(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=n?new H.StyleModule(n):null,this.themeType=t.themeType}static define(e,t){return new D(e,t||{})}}const B=f.Facet.define(),ke=f.Facet.define({combine(r){return r.length?[r[0]]:null}});function A(r){let e=r.facet(B);return e.length?e:r.facet(ke)}function we(r,e){let t=[Te],n;return r instanceof D&&(r.module&&t.push(h.EditorView.styleModule.of(r.module)),n=r.themeType),n?t.push(B.computeN([h.EditorView.darkTheme],i=>i.facet(h.EditorView.darkTheme)==(n=="dark")?[r]:[])):t.push(B.of(r)),t}class ye{constructor(e){this.markCache=Object.create(null),this.tree=g(e.state),this.decorations=this.buildDeco(e,A(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=g(e.state),n=A(e.state),i=n!=A(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length<s.to&&!i&&t.type==this.tree.type&&o>=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||i)&&(this.tree=t,this.decorations=this.buildDeco(e.view,n),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return h.Decoration.none;let n=new f.RangeSetBuilder;for(let{from:i,to:s}of e.visibleRanges)P.highlightTree(this.tree,t,(o,a,l)=>{n.add(o,a,this.markCache[l]||(this.markCache[l]=h.Decoration.mark({class:l})))},i,s);return n.finish()}}const Te=f.Prec.high(h.ViewPlugin.fromClass(ye,{decorations:r=>r.decorations})),ve=Object.create(null),G=[u.NodeType.none],U=[],J=Object.create(null),be=Object.create(null);for(let[r,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"]])be[r]=xe(ve,e);function M(r,e){U.indexOf(r)>-1||(U.push(r),console.warn(e))}function xe(r,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let d=r[c]||P.tags[c];d?typeof d=="function"?l.length?l=l.map(d):M(c,`Modifier ${c} used at start of tag`):l.length?M(c,`Tag ${c} used as modifier`):l=Array.isArray(d)?d:[d]:M(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let n=e.replace(/ /g,"_"),i=n+" "+t.map(a=>a.id),s=J[i];if(s)return s.id;let o=J[i]=u.NodeType.define({id:G.length,name:n,props:[P.styleTags({[n]:t})]});return G.push(o),o.id}h.Direction.RTL,h.Direction.LTR;exports.DocInput=Q;exports.HighlightStyle=D;exports.LRLanguage=S;exports.Language=p;exports.LanguageSupport=ie;exports.ParseContext=b;exports.codeFolding=te;exports.continuedIndent=oe;exports.defineLanguageFacet=z;exports.foldEffect=W;exports.foldGutter=ge;exports.foldInside=ae;exports.foldNodeProp=Z;exports.foldService=Y;exports.foldState=T;exports.foldable=I;exports.indentNodeProp=se;exports.language=m;exports.languageDataProp=w;exports.sublanguageProp=K;exports.syntaxHighlighting=we;exports.syntaxTree=g;exports.unfoldAll=ue;exports.unfoldEffect=x;
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|