@clepit/core 0.6.0-beta.425 → 0.6.0-beta.426

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.
@@ -1,5 +1,5 @@
1
1
  export declare const outputStylesKey = "clepit-openapi-output-styles";
2
- export declare const outputStyle = "\n.clepit-openapi {\n display: flex;\n flex-direction: column;\n gap: 40px;\n margin: 16px 0;\n}\n\n/* Groups and operations are separated by rhythm, never by rules \u2014 the same\n * house style the tables follow. */\n.clepit-openapi-group {\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n/* An eyebrow label rather than a heading, matching the uppercase group headings\n * in the docs sidebar so the reference echoes the nav \u2014 approved 2026-08-06\n * (direction 2B, \"Eyebrow\"). */\n.clepit-openapi-group-title {\n color: var(--clepit-text-subtle);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n margin: 0;\n text-transform: uppercase;\n}\n\n.clepit-openapi-operation {\n background: var(--clepit-surface);\n border: 1px solid var(--clepit-border);\n border-radius: var(--clepit-radius-md);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* The head is a tinted strip so an operation reads as one bounded unit in a\n * page of a dozen \u2014 approved 2026-08-06 (direction 1B, \"Panel\"). */\n.clepit-openapi-operation-head {\n align-items: center;\n background: color-mix(in oklab, var(--clepit-text) 4%, transparent);\n border-bottom: 1px solid var(--clepit-border);\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n padding: 10px 14px;\n}\n\n.clepit-openapi-operation-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.clepit-openapi-method {\n border-radius: 4px;\n color: var(--clepit-bg);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.04em;\n padding: 3px 8px;\n}\n\n.clepit-openapi-method[data-method=\"GET\"] { background: var(--clepit-success); }\n.clepit-openapi-method[data-method=\"POST\"],\n.clepit-openapi-method[data-method=\"PUT\"],\n.clepit-openapi-method[data-method=\"PATCH\"] { background: var(--clepit-primary); }\n.clepit-openapi-method[data-method=\"DELETE\"] { background: var(--clepit-error); }\n\n.clepit-openapi-path {\n color: var(--clepit-text);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 14px;\n}\n\n.clepit-openapi-host {\n color: var(--clepit-text-subtle);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 12px;\n margin-left: auto;\n}\n\n.clepit-openapi-summary {\n color: var(--clepit-text);\n font-size: 16px;\n font-weight: 600;\n margin: 0;\n}\n\n.clepit-openapi-description {\n color: var(--clepit-text-muted);\n margin: 0;\n}\n\n.clepit-openapi-section-title {\n color: var(--clepit-text-subtle);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n margin: 4px 0 0;\n text-transform: uppercase;\n}\n\n/* A table has no scroll surface of its own \u2014 a cell the house style cannot\n * break (a long host URL) would otherwise force the table, and every ancestor\n * up to the page itself, wider than the viewport. */\n.clepit-openapi-table-scroll {\n max-width: 100%;\n overflow-x: auto;\n background: var(--clepit-surface);\n border: 1px solid var(--clepit-border);\n border-radius: var(--clepit-radius-md);\n}\n\n.clepit-openapi-table {\n border-collapse: collapse;\n font-size: 14px;\n width: 100%;\n}\n\n.clepit-openapi-table th {\n background: var(--clepit-surface);\n border-bottom: 1px solid var(--clepit-border);\n color: var(--clepit-text-subtle);\n font-weight: 600;\n padding: 6px 8px;\n text-align: left;\n}\n\n/* House style: no horizontal dividers between rows. Zebra striping is what\n * separates them instead. */\n.clepit-openapi-table td {\n color: var(--clepit-text);\n padding: 7px 8px;\n vertical-align: top;\n}\n\n.clepit-openapi-table tr:nth-child(even) td {\n background: var(--clepit-surface);\n}\n\n.clepit-openapi-name {\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n overflow-wrap: anywhere;\n}\n\n.clepit-openapi-type {\n color: var(--clepit-text-muted);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n}\n\n.clepit-openapi-required {\n color: var(--clepit-error);\n font-size: 12px;\n}\n\n.clepit-openapi-badge {\n background: var(--clepit-primary-bg);\n border-radius: 4px;\n color: var(--clepit-primary);\n font-size: 12px;\n padding: 2px 8px;\n}\n\n.clepit-openapi-status {\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-weight: 600;\n}\n\n.clepit-openapi-status[data-kind=\"success\"] { color: var(--clepit-success); }\n.clepit-openapi-status[data-kind=\"client\"] { color: var(--clepit-warning); }\n.clepit-openapi-status[data-kind=\"server\"] { color: var(--clepit-error); }\n\n/* One response at a time behind a status tab strip \u2014 approved 2026-08-06\n * (direction 1B, \"Tabbed\"). */\n.clepit-openapi-responses {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.clepit-openapi-response-tabs {\n border-bottom: 1px solid var(--clepit-border);\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 4px;\n}\n\n.clepit-openapi-response-tab {\n background: none;\n border: 0;\n border-bottom: 2px solid transparent;\n color: var(--clepit-text-muted);\n cursor: pointer;\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 12px;\n margin-bottom: -1px;\n padding: 6px 0;\n}\n\n.clepit-openapi-response-tab[aria-selected=\"true\"] {\n border-bottom-color: var(--clepit-primary);\n color: var(--clepit-text);\n font-weight: 600;\n}\n\n.clepit-openapi-response-tab:focus-visible {\n outline: 2px solid var(--clepit-primary);\n outline-offset: 2px;\n}\n\n.clepit-openapi-response-description {\n color: var(--clepit-text-muted);\n margin: 0;\n}\n\n/* Tabs hide three quarters of the contract from a printed page, so print gets\n * every response expanded and the strip removed. */\n@media print {\n .clepit-openapi-response-tabs { display: none; }\n .clepit-openapi-response { display: block !important; }\n .clepit-openapi-response + .clepit-openapi-response { margin-top: 10px; }\n}\n\n.clepit-openapi-servers {\n color: var(--clepit-text-muted);\n font-size: 14px;\n margin: 0;\n}\n";
2
+ export declare const outputStyle = "\n.clepit-openapi {\n display: flex;\n flex-direction: column;\n gap: 40px;\n margin: 16px 0;\n}\n\n/* Groups and operations are separated by rhythm, never by rules \u2014 the same\n * house style the tables follow. */\n.clepit-openapi-group {\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n/* An eyebrow label rather than a heading, matching the uppercase group headings\n * in the docs sidebar so the reference echoes the nav. */\n.clepit-openapi-group-title {\n color: var(--clepit-text-subtle);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n margin: 0;\n text-transform: uppercase;\n}\n\n.clepit-openapi-operation {\n background: var(--clepit-surface);\n border: 1px solid var(--clepit-border);\n border-radius: var(--clepit-radius-md);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* The head is a tinted strip so an operation reads as one bounded unit in a\n * page of a dozen. */\n.clepit-openapi-operation-head {\n align-items: center;\n background: color-mix(in oklab, var(--clepit-text) 4%, transparent);\n border-bottom: 1px solid var(--clepit-border);\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n padding: 10px 14px;\n}\n\n.clepit-openapi-operation-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.clepit-openapi-method {\n border-radius: 4px;\n color: var(--clepit-bg);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.04em;\n padding: 3px 8px;\n}\n\n.clepit-openapi-method[data-method=\"GET\"] { background: var(--clepit-success); }\n.clepit-openapi-method[data-method=\"POST\"],\n.clepit-openapi-method[data-method=\"PUT\"],\n.clepit-openapi-method[data-method=\"PATCH\"] { background: var(--clepit-primary); }\n.clepit-openapi-method[data-method=\"DELETE\"] { background: var(--clepit-error); }\n\n.clepit-openapi-path {\n color: var(--clepit-text);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 14px;\n}\n\n.clepit-openapi-host {\n color: var(--clepit-text-subtle);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 12px;\n margin-left: auto;\n}\n\n.clepit-openapi-summary {\n color: var(--clepit-text);\n font-size: 16px;\n font-weight: 600;\n margin: 0;\n}\n\n.clepit-openapi-description {\n color: var(--clepit-text-muted);\n margin: 0;\n}\n\n.clepit-openapi-section-title {\n color: var(--clepit-text-subtle);\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.08em;\n margin: 4px 0 0;\n text-transform: uppercase;\n}\n\n/* A table has no scroll surface of its own \u2014 a cell the house style cannot\n * break (a long host URL) would otherwise force the table, and every ancestor\n * up to the page itself, wider than the viewport. */\n.clepit-openapi-table-scroll {\n max-width: 100%;\n overflow-x: auto;\n background: var(--clepit-surface);\n border: 1px solid var(--clepit-border);\n border-radius: var(--clepit-radius-md);\n}\n\n.clepit-openapi-table {\n border-collapse: collapse;\n font-size: 14px;\n width: 100%;\n}\n\n.clepit-openapi-table th {\n background: var(--clepit-surface);\n border-bottom: 1px solid var(--clepit-border);\n color: var(--clepit-text-subtle);\n font-weight: 600;\n padding: 6px 8px;\n text-align: left;\n}\n\n/* House style: no horizontal dividers between rows. Zebra striping is what\n * separates them instead. */\n.clepit-openapi-table td {\n color: var(--clepit-text);\n padding: 7px 8px;\n vertical-align: top;\n}\n\n.clepit-openapi-table tr:nth-child(even) td {\n background: var(--clepit-surface);\n}\n\n.clepit-openapi-name {\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n overflow-wrap: anywhere;\n}\n\n.clepit-openapi-type {\n color: var(--clepit-text-muted);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n}\n\n.clepit-openapi-required {\n color: var(--clepit-error);\n font-size: 12px;\n}\n\n.clepit-openapi-badge {\n background: var(--clepit-primary-bg);\n border-radius: 4px;\n color: var(--clepit-primary);\n font-size: 12px;\n padding: 2px 8px;\n}\n\n.clepit-openapi-status {\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-weight: 600;\n}\n\n.clepit-openapi-status[data-kind=\"success\"] { color: var(--clepit-success); }\n.clepit-openapi-status[data-kind=\"client\"] { color: var(--clepit-warning); }\n.clepit-openapi-status[data-kind=\"server\"] { color: var(--clepit-error); }\n\n/* One response at a time behind a status tab strip. */\n.clepit-openapi-responses {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.clepit-openapi-response-tabs {\n border-bottom: 1px solid var(--clepit-border);\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-bottom: 4px;\n}\n\n.clepit-openapi-response-tab {\n background: none;\n border: 0;\n border-bottom: 2px solid transparent;\n color: var(--clepit-text-muted);\n cursor: pointer;\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 12px;\n margin-bottom: -1px;\n padding: 6px 0;\n}\n\n.clepit-openapi-response-tab[aria-selected=\"true\"] {\n border-bottom-color: var(--clepit-primary);\n color: var(--clepit-text);\n font-weight: 600;\n}\n\n.clepit-openapi-response-tab:focus-visible {\n outline: 2px solid var(--clepit-primary);\n outline-offset: 2px;\n}\n\n.clepit-openapi-response-description {\n color: var(--clepit-text-muted);\n margin: 0;\n}\n\n/* Tabs hide three quarters of the contract from a printed page, so print gets\n * every response expanded and the strip removed. */\n@media print {\n .clepit-openapi-response-tabs { display: none; }\n .clepit-openapi-response { display: block !important; }\n .clepit-openapi-response + .clepit-openapi-response { margin-top: 10px; }\n}\n\n.clepit-openapi-servers {\n color: var(--clepit-text-muted);\n font-size: 14px;\n margin: 0;\n}\n";
3
3
  export declare const inputStylesKey = "clepit-openapi-input-styles";
4
4
  export declare const inputStyle = "\n.clepit-openapi-input {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.clepit-openapi__source {\n background: var(--clepit-code-bg);\n border: 1px solid var(--clepit-code-border);\n border-radius: var(--clepit-radius-md);\n color: var(--clepit-code-text);\n font-family: 'SF Mono', 'Monaco', 'Roboto Mono', monospace;\n font-size: 13px;\n max-height: 240px;\n overflow: auto;\n padding: 12px;\n white-space: pre-wrap;\n}\n\n.clepit-openapi__source[data-placeholder]:empty::before {\n color: var(--clepit-text-subtle);\n content: attr(data-placeholder);\n font-style: italic;\n pointer-events: none;\n}\n";
5
5
  //# sourceMappingURL=css.d.ts.map
@@ -1,16 +1,10 @@
1
- /** The parsed shape of a LaTeX math expression, independent of how it is drawn.
2
- *
3
- * The same split as the mermaid engine: parsing yields a tree, layout turns it
4
- * into boxes, and only the final renderer differs per twin.
5
- *
6
- * The supported grammar is the closed list in the P7 design doc. Anything
7
- * outside it produces `{ ok: false, reason }` rather than a partial tree —
8
- * dropping an unrecognised subscript would silently change what the formula
9
- * says, which is the failure P7-b exists to prevent. */
10
1
  /** `upright` is the difference between the variable `sin` and the function
11
2
  * \sin: TeX sets ordinary letters in italic and named operators upright, and
12
3
  * getting that wrong makes a formula read as a product of three variables. */
13
4
  export type AtomStyle = 'bold' | 'italic' | 'text' | 'upright';
5
+ /** The parsed shape of a LaTeX math expression, independent of how it is
6
+ * drawn: layout turns it into boxes, and only the final renderer differs per
7
+ * twin. */
14
8
  export type LatexNode = {
15
9
  kind: 'accent';
16
10
  over: string;
@@ -54,6 +48,9 @@ export type LatexNode = {
54
48
  sup: LatexNode | null;
55
49
  };
56
50
  export type MatrixStyle = 'bracket' | 'double-pipe' | 'paren' | 'pipe' | 'plain';
51
+ /** Anything outside the supported grammar is `{ ok: false, reason }`, never a
52
+ * partial tree: dropping an unrecognised subscript would silently change what
53
+ * the formula says. */
57
54
  export type LatexParseResult = {
58
55
  ok: true;
59
56
  root: LatexNode;
@@ -1,3 +1,10 @@
1
1
  import { LatexParseResult } from './model';
2
+ /** LaTeX math source to a [LatexNode] tree, by recursive descent over a closed
3
+ * grammar. Every command is looked up in an explicit table; there is no
4
+ * "unknown command renders as itself" path, because that is how a formula
5
+ * silently loses a term.
6
+ *
7
+ * Kept structurally identical to `utils/latex/parse.dart` so the same corpus
8
+ * proves both twins read a formula the same way. */
2
9
  export declare function parseLatex(source: string): LatexParseResult;
3
10
  //# sourceMappingURL=parse.d.ts.map
@@ -19,8 +19,8 @@ export declare const SPACING: Record<string, number>;
19
19
  export declare const DELIMITERS: Record<string, string>;
20
20
  /** Refused outright rather than merely unsupported. The first group is macro
21
21
  * definition, which turns a formula into a program and hands an author a way to
22
- * make the parser diverge; the second is a link surface, and P7-b already pins
23
- * that a `javascript:` URL in typeset source must stay inert literal text. */
22
+ * make the parser diverge; the second is a link surface, and a `javascript:`
23
+ * URL in typeset source must stay inert literal text. */
24
24
  export declare const REFUSED: string[];
25
25
  export declare const MATRIX_ENVIRONMENTS: Record<string, MatrixStyle>;
26
26
  //# sourceMappingURL=symbols.d.ts.map
@@ -1,13 +1,3 @@
1
- /** The parsed shape of a Mermaid diagram, independent of how it is drawn.
2
- *
3
- * Parsing yields this model and nothing else — no coordinates, no SVG — because
4
- * the twin that draws it differs (TypeScript emits SVG, Dart paints), while what
5
- * the source *means* must not. The layout pass turns this into geometry.
6
- *
7
- * The supported grammar is the closed list in the P7 design doc. Anything
8
- * outside it must produce `{ ok: false, reason }` rather than a partial model:
9
- * a diagram that disagrees with its own source is the failure P7-b exists to
10
- * prevent, and dropping one unrecognised line is exactly how that happens. */
11
1
  export type FlowDirection = 'BT' | 'LR' | 'RL' | 'TB' | 'TD';
12
2
  export type FlowNodeShape = 'circle' | 'rect' | 'rhombus' | 'round' | 'stadium' | 'subroutine';
13
3
  export type FlowEdgeLine = 'dotted' | 'solid' | 'thick';
@@ -65,9 +55,15 @@ export type SequenceModel = {
65
55
  participants: SequenceParticipant[];
66
56
  steps: SequenceStep[];
67
57
  };
58
+ /** The parsed shape of a Mermaid diagram, with no coordinates and no SVG: the
59
+ * twin that draws it differs (TypeScript emits SVG, Dart paints), while what
60
+ * the source *means* must not. The layout pass turns it into geometry. */
68
61
  export type MermaidModel = FlowchartModel | SequenceModel;
69
- /** `reason` is shown to the author in the fallback frame, so it names the
70
- * construct that was not understood rather than a parser-internal position. */
62
+ /** Anything outside the supported grammar is `{ ok: false, reason }`, never a
63
+ * partial model: dropping one unrecognised line is how a diagram comes to
64
+ * disagree with its own source. `reason` is shown to the author in the
65
+ * fallback frame, so it names the construct that was not understood rather
66
+ * than a parser-internal position. */
71
67
  export type MermaidParseResult = {
72
68
  model: MermaidModel;
73
69
  ok: true;
package/dist/types.d.ts CHANGED
@@ -279,7 +279,7 @@ export type EmbedLabel = (typeof EMBED_LABELS)[number];
279
279
  /** What the fix beside a reason asks the host to do. `retry` the core handles
280
280
  * itself; `connectGoogle` only the host can, since it owns the routes. */
281
281
  export type EmbedAction = 'connectGoogle' | 'retry';
282
- /** Points are a FLAT x,y list — a sketch is thousands of points and the flat
282
+ /** Points are a FLAT x,y list: a sketch is thousands of points and the flat
283
283
  * form roughly halves the stored JSON. */
284
284
  export type SketchStroke = {
285
285
  points: number[];
@@ -293,7 +293,7 @@ export type SketchData = {
293
293
  * renderer later improves every document that already exists. */
294
294
  export type TypesetData = {
295
295
  source: string;
296
- /** Describes what the diagram or formula IS, not that it's a diagram — shown
296
+ /** Describes what the diagram or formula IS, not that it's a diagram. Shown
297
297
  * in place of the bare language name when present. */
298
298
  title?: string;
299
299
  };
@@ -1029,7 +1029,7 @@ export type EditorConfig = {
1029
1029
  };
1030
1030
  export declare const BLOCK_TOOLBAR_OPERATIONS: readonly ["convert", "moveUp", "moveDown", "delete"];
1031
1031
  export type BlockToolbarOperation = (typeof BLOCK_TOOLBAR_OPERATIONS)[number];
1032
- export declare const BLOCK_MENU_LABELS: readonly ["searchBlocks", "searchOperations", "searchConvertOptions", "searchLanguages", "searchThemes", "noBlockTypesFound", "noOperationsFound", "noConvertOptionsFound", "alignLeft", "alignCenter", "alignRight", "codeLanguage", "codeTheme", "headingH1", "headingH2", "headingH3", "headingH4", "headingH5", "headingH6", "listUnordered", "listOrdered", "variantInfo", "variantWarning", "variantError", "variantSuccess", "variantPlain", "delimiterLine", "delimiterStars", "embedShowLive", "embedShowCard", "embedShowLink", "embedCopyLink", "embedShowChip", "alertTextHint", "checklistItemHint", "codeHint", "collapsibleTitleHint", "glanceLabelHint", "glanceValueHint", "headerHint", "listItemHint", "mediaCaptionHint", "openApiSourceHint", "quoteAuthorHint", "quoteBodyHint", "tableCaptionHint", "tableCellHint", "tableHeaderHint", "diagramTitleHint", "formulaTitleHint", "imageDropTitle", "imageDropAction", "imageDropFormats", "imageUploading", "imageUploadFailed", "imageInvalidType"];
1032
+ export declare const BLOCK_MENU_LABELS: readonly ["searchBlocks", "searchOperations", "searchConvertOptions", "searchLanguages", "searchThemes", "noBlockTypesFound", "noOperationsFound", "noConvertOptionsFound", "alignLeft", "alignCenter", "alignRight", "codeLanguage", "codeTheme", "headingH1", "headingH2", "headingH3", "headingH4", "headingH5", "headingH6", "listUnordered", "listOrdered", "variantInfo", "variantWarning", "variantError", "variantSuccess", "variantPlain", "delimiterLine", "delimiterStars", "embedShowLive", "embedShowCard", "embedShowLink", "embedCopyLink", "embedShowChip", "alertTextHint", "checklistItemHint", "codeHint", "collapsibleTitleHint", "glanceLabelHint", "glanceValueHint", "headerHint", "listItemHint", "mediaCaptionHint", "openApiSourceHint", "quoteAuthorHint", "quoteBodyHint", "tableCaptionHint", "tableCellHint", "tableHeaderHint", "tableInsertAbove", "tableInsertBelow", "tableInsertLeft", "tableInsertRight", "tableMoveLeft", "tableMoveRight", "tableRowActions", "tableColumnActions", "diagramTitleHint", "formulaTitleHint", "imageDropTitle", "imageDropAction", "imageDropFormats", "imageUploading", "imageUploadFailed", "imageInvalidType"];
1033
1033
  export type BlockMenuLabel = (typeof BLOCK_MENU_LABELS)[number];
1034
1034
  export declare const CONTROL_LABELS: readonly ["editView", "previewView", "jsonView", "copyJson", "downloadJson", "clearEditor"];
1035
1035
  export type ControlLabel = (typeof CONTROL_LABELS)[number];
@@ -1,47 +1,17 @@
1
- /**
2
- * Platform detection and keyboard symbol utilities
3
- */
4
1
  export type Platform = 'mac' | 'windows' | 'linux' | 'unknown';
5
- /**
6
- * Detect the user's operating system
7
- */
8
2
  export declare function detectPlatform(): Platform;
9
- /**
10
- * Get the command/control key symbol for the current platform
11
- */
12
3
  export declare function getCmdSymbol(): string;
13
- /**
14
- * Get the shift key symbol for the current platform
15
- */
16
4
  export declare function getShiftSymbol(): string;
17
- /**
18
- * Get the option/alt key symbol for the current platform
19
- */
20
5
  export declare function getOptionSymbol(): string;
21
- /**
22
- * Get the backspace key symbol for the current platform
23
- */
24
6
  export declare function getBackspaceSymbol(): string;
25
- /**
26
- * Get the delete key symbol for the current platform
27
- */
28
7
  export declare function getDeleteSymbol(): string;
29
- /**
30
- * Get the arrow key symbols
31
- */
32
8
  export declare function getArrowSymbols(): {
33
9
  down: string;
34
10
  left: string;
35
11
  right: string;
36
12
  up: string;
37
13
  };
38
- /**
39
- * Format a keyboard shortcut for display
40
- */
41
14
  export declare function formatShortcut(keys: string[]): string;
42
- /**
43
- * Common shortcut builders
44
- */
45
15
  export declare const Shortcuts: {
46
16
  cmd: (key: string) => string;
47
17
  cmdA: () => string;
@@ -1,6 +1,3 @@
1
- /**
2
- * URL detection and validation utilities for the editor
3
- */
4
1
  export interface URLInfo {
5
2
  isUrl: boolean;
6
3
  isImage: boolean;
@@ -9,44 +6,14 @@ export interface URLInfo {
9
6
  isVimeo: boolean;
10
7
  url: string;
11
8
  }
12
- /**
13
- * Check if a string is a valid URL
14
- */
15
9
  export declare function isValidUrl(text: string): boolean;
16
- /**
17
- * Check if a URL is an image based on file extension
18
- */
19
10
  export declare function isImageUrl(url: string): boolean;
20
- /**
21
- * Check if a URL is a video based on file extension
22
- */
23
11
  export declare function isVideoUrl(url: string): boolean;
24
- /**
25
- * Check if a URL is a YouTube video
26
- */
27
12
  export declare function isYouTubeUrl(url: string): boolean;
28
- /**
29
- * Check if a URL is a Vimeo video
30
- */
31
13
  export declare function isVimeoUrl(url: string): boolean;
32
- /**
33
- * Extract YouTube video ID from URL
34
- */
35
14
  export declare function extractYouTubeId(url: string): string | null;
36
- /**
37
- * Extract Vimeo video ID from URL
38
- */
39
15
  export declare function extractVimeoId(url: string): string | null;
40
- /**
41
- * Convert YouTube URL to embed URL
42
- */
43
16
  export declare function convertYouTubeToEmbed(url: string): string | null;
44
- /**
45
- * Convert Vimeo URL to embed URL
46
- */
47
17
  export declare function convertVimeoToEmbed(url: string): string | null;
48
- /**
49
- * Analyze a text string to determine if it's a URL and what type
50
- */
51
18
  export declare function analyzeUrl(text: string): URLInfo;
52
19
  //# sourceMappingURL=url.d.ts.map
package/package.json CHANGED
@@ -53,5 +53,5 @@
53
53
  },
54
54
  "sideEffects": false,
55
55
  "types": "dist/index.d.ts",
56
- "version": "0.6.0-beta.425"
56
+ "version": "0.6.0-beta.426"
57
57
  }