@ovnonvo/abc-editor 0.1.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.
@@ -0,0 +1,13 @@
1
+ export { AbcEditor } from '../src/components/AbcEditor';
2
+ export { AbcPreview } from '../src/components/AbcPreview';
3
+ export { SuggestionList } from '../src/components/SuggestionList';
4
+ export { useLineNumbers } from '../src/hooks/useLineNumbers';
5
+ export { useAbcAutoComplete } from '../src/hooks/useAbcAutoComplete';
6
+ export { highlightAbc } from '../src/utils/highlightAbc';
7
+ export { validateAbc } from '../src/utils/validateAbc';
8
+ export type { ValidationError } from '../src/utils/validateAbc';
9
+ export type { AbcField, AbcFieldKey, } from '../src/types/abc';
10
+ export { ABC_FIELD_PATTERN, ABC_NOTE_PATTERN, ABC_ACCIDENTAL_PATTERN, ABC_OCTAVE_PATTERN, ABC_BAR_PATTERN, ABC_CHORD_BRACKET_PATTERN, ABC_SLUR_PATTERN, ABC_TUPLET_PATTERN, ABC_DURATION_PATTERN, ABC_REST_PATTERN, ABC_TIE_PATTERN, ABC_ORNAMENT_PATTERN, ABC_CHORD_SYMBOL_PATTERN, ABC_ANNOTATION_PATTERN, ABC_DECORATION_PATTERN, ABC_GRACE_NOTE_PATTERN, ABC_VOLTA_BRACKET_PATTERN, ABC_INLINE_FIELD_PATTERN, ABC_BROKEN_RHYTHM_PATTERN, ABC_COMMENT_PATTERN, } from '../src/types/abc';
11
+ export { ABC_SUGGESTIONS } from '../src/data/abcSuggestions';
12
+ export { ABC_COMMANDS } from '../src/data/abcCommands';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EACV,QAAQ,EACR,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface AbcEditorProps {
2
+ value: string;
3
+ onChange: (value: string) => void;
4
+ }
5
+ export declare const AbcEditor: ({ value, onChange }: AbcEditorProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=AbcEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbcEditor.d.ts","sourceRoot":"","sources":["../../../src/components/AbcEditor.tsx"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,SAAS,GAAI,qBAAqB,cAAc,4CAwJ5D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const AbcPreview: ({ abc }: {
2
+ abc: string;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=AbcPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbcPreview.d.ts","sourceRoot":"","sources":["../../../src/components/AbcPreview.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,SAAS;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,4CAgBlD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Suggestion } from '../data/abcSuggestions';
2
+ interface SuggestionListProps {
3
+ suggestions: Suggestion[];
4
+ selectedIndex: number;
5
+ position: {
6
+ top: number;
7
+ left: number;
8
+ };
9
+ onSelect: (suggestion: Suggestion) => void;
10
+ onMouseEnter: (index: number) => void;
11
+ }
12
+ export declare const SuggestionList: ({ suggestions, selectedIndex, position, onSelect, onMouseEnter, }: SuggestionListProps) => import("react/jsx-runtime").JSX.Element | null;
13
+ export {};
14
+ //# sourceMappingURL=SuggestionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuggestionList.d.ts","sourceRoot":"","sources":["../../../src/components/SuggestionList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,UAAU,mBAAmB;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,eAAO,MAAM,cAAc,GAAI,mEAM5B,mBAAmB,mDA+CrB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Suggestion } from './abcSuggestions';
2
+ export declare const ABC_COMMANDS: Suggestion[];
3
+ export declare const getCommandSuggestions: (input: string) => Suggestion[];
4
+ //# sourceMappingURL=abcCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abcCommands.d.ts","sourceRoot":"","sources":["../../../src/data/abcCommands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,YAAY,EAAE,UAAU,EAWpC,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,UAAU,EAS/D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { AbcFieldKey } from '../types/abc';
2
+ export interface Suggestion {
3
+ value: string;
4
+ description?: string;
5
+ template?: string;
6
+ }
7
+ export declare const ABC_SUGGESTIONS: Record<AbcFieldKey, Suggestion[]>;
8
+ export declare const getSuggestionsForField: (fieldKey: AbcFieldKey) => Suggestion[];
9
+ //# sourceMappingURL=abcSuggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abcSuggestions.d.ts","sourceRoot":"","sources":["../../../src/data/abcSuggestions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,CAkJ7D,CAAC;AAGF,eAAO,MAAM,sBAAsB,GAAI,UAAU,WAAW,KAAG,UAAU,EAExE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type KeyboardEvent, type RefObject } from 'react';
2
+ import { type Suggestion } from '../data/abcSuggestions';
3
+ interface UseAbcAutoCompleteProps {
4
+ value: string;
5
+ textareaRef: RefObject<HTMLTextAreaElement | null>;
6
+ onChange: (value: string) => void;
7
+ }
8
+ export declare const useAbcAutoComplete: ({ value, textareaRef, onChange, }: UseAbcAutoCompleteProps) => {
9
+ isOpen: boolean;
10
+ suggestions: Suggestion[];
11
+ selectedIndex: number;
12
+ position: {
13
+ top: number;
14
+ left: number;
15
+ };
16
+ handleKeyDown: (e: KeyboardEvent<HTMLTextAreaElement>) => void;
17
+ selectSuggestion: (suggestion: Suggestion) => void;
18
+ handleMouseEnter: (index: number) => void;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=useAbcAutoComplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAbcAutoComplete.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAbcAutoComplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7F,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGjF,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAYD,eAAO,MAAM,kBAAkB,GAAI,mCAIhC,uBAAuB;;;;;aAVP,MAAM;cAAQ,MAAM;;uBA6K/B,aAAa,CAAC,mBAAmB,CAAC;mCA/CzB,UAAU;8BAsFoB,MAAM;CAapD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const useLineNumbers: (text: string) => string;
2
+ //# sourceMappingURL=useLineNumbers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLineNumbers.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLineNumbers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAG7C,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type AbcFieldKey = 'A:' | 'B:' | 'C:' | 'D:' | 'F:' | 'G:' | 'H:' | 'I:' | 'K:' | 'L:' | 'M:' | 'm:' | 'N:' | 'O:' | 'P:' | 'Q:' | 'R:' | 'r:' | 'S:' | 's:' | 'T:' | 'U:' | 'V:' | 'W:' | 'w:' | 'X:' | 'Z:';
2
+ export interface AbcField {
3
+ key: AbcFieldKey;
4
+ value: string;
5
+ }
6
+ export declare const ABC_FIELD_PATTERN: RegExp;
7
+ export declare const ABC_NOTE_PATTERN: RegExp;
8
+ export declare const ABC_ACCIDENTAL_PATTERN: RegExp;
9
+ export declare const ABC_OCTAVE_PATTERN: RegExp;
10
+ export declare const ABC_BAR_PATTERN: RegExp;
11
+ export declare const ABC_CHORD_BRACKET_PATTERN: RegExp;
12
+ export declare const ABC_SLUR_PATTERN: RegExp;
13
+ export declare const ABC_TUPLET_PATTERN: RegExp;
14
+ export declare const ABC_DURATION_PATTERN: RegExp;
15
+ export declare const ABC_REST_PATTERN: RegExp;
16
+ export declare const ABC_TIE_PATTERN: RegExp;
17
+ export declare const ABC_ORNAMENT_PATTERN: RegExp;
18
+ export declare const ABC_CHORD_SYMBOL_PATTERN: RegExp;
19
+ export declare const ABC_ANNOTATION_PATTERN: RegExp;
20
+ export declare const ABC_DECORATION_PATTERN: RegExp;
21
+ export declare const ABC_GRACE_NOTE_PATTERN: RegExp;
22
+ export declare const ABC_VOLTA_BRACKET_PATTERN: RegExp;
23
+ export declare const ABC_INLINE_FIELD_PATTERN: RegExp;
24
+ export declare const ABC_BROKEN_RHYTHM_PATTERN: RegExp;
25
+ export declare const ABC_COMMENT_PATTERN: RegExp;
26
+ //# sourceMappingURL=abc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abc.d.ts","sourceRoot":"","sources":["../../../src/types/abc.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,WAAW,GACnB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAG1E,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAC3C,eAAO,MAAM,sBAAsB,QAAW,CAAC;AAC/C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,eAAe,QAAmB,CAAC;AAChD,eAAO,MAAM,yBAAyB,QAAY,CAAC;AACnD,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,kBAAkB,QAAY,CAAC;AAC5C,eAAO,MAAM,oBAAoB,QAAqB,CAAC;AACvD,eAAO,MAAM,gBAAgB,QAAU,CAAC;AACxC,eAAO,MAAM,eAAe,QAAW,CAAC;AACxC,eAAO,MAAM,oBAAoB,QAAkB,CAAC;AACpD,eAAO,MAAM,wBAAwB,QAAc,CAAC;AACpD,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,QAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AACpD,eAAO,MAAM,yBAAyB,QAAY,CAAC;AACnD,eAAO,MAAM,wBAAwB,QAAmD,CAAC;AACzF,eAAO,MAAM,yBAAyB,QAAY,CAAC;AACnD,eAAO,MAAM,mBAAmB,QAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface ParseResult {
2
+ html: string;
3
+ nextIndex: number;
4
+ slurLevelDelta?: number;
5
+ }
6
+ export declare const escapeHtml: (text: string) => string;
7
+ export declare const parseBarLine: (line: string, index: number) => ParseResult | null;
8
+ export declare const parseAccidental: (line: string, index: number) => ParseResult | null;
9
+ export declare const parseTupletOrSlur: (line: string, index: number, slurLevel: number) => ParseResult | null;
10
+ export declare const parseNoteWithDuration: (line: string, index: number) => ParseResult | null;
11
+ export declare const parseChordBracket: (line: string, index: number) => ParseResult | null;
12
+ export declare const parseRest: (line: string, index: number) => ParseResult | null;
13
+ export declare const parseTie: (line: string, index: number) => ParseResult | null;
14
+ export declare const parseOrnament: (line: string, index: number) => ParseResult | null;
15
+ export declare const parseAnnotation: (line: string, index: number) => ParseResult | null;
16
+ export declare const parseChordSymbol: (line: string, index: number) => ParseResult | null;
17
+ export declare const parseDecoration: (line: string, index: number) => ParseResult | null;
18
+ export declare const parseGraceNote: (line: string, index: number) => ParseResult | null;
19
+ export declare const parseInlineField: (line: string, index: number) => ParseResult | null;
20
+ export declare const parseVoltaBracket: (line: string, index: number) => ParseResult | null;
21
+ export declare const parseBrokenRhythm: (line: string, index: number) => ParseResult | null;
22
+ export declare const highlightMusicLine: (line: string) => string;
23
+ export declare const highlightAbc: (code: string) => string;
24
+ //# sourceMappingURL=highlightAbc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlightAbc.d.ts","sourceRoot":"","sources":["../../../src/utils/highlightAbc.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAOzC,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA0BxE,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAW3E,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,WAAW,GAAG,IA8ChB,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA4EjF,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAW7E,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAiErE,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAyBpE,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAkBzE,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA+B3E,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAoC5E,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA+B3E,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA+B1E,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAkC5E,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IA8B7E,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,WAAW,GAAG,IAyB7E,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAyHjD,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAyB3C,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface ValidationError {
2
+ line: number;
3
+ measureIndex: number;
4
+ startCol: number;
5
+ endCol: number;
6
+ expected: number;
7
+ actual: number;
8
+ message: string;
9
+ }
10
+ /**
11
+ * ABC記法をバリデーションして、エラーがある行を返す
12
+ */
13
+ export declare const validateAbc: (code: string) => ValidationError[];
14
+ //# sourceMappingURL=validateAbc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAbc.d.ts","sourceRoot":"","sources":["../../../src/utils/validateAbc.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAgPD;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,eAAe,EA4DzD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@ovnonvo/abc-editor",
3
+ "version": "0.1.0",
4
+ "description": "A React component for editing ABC music notation with syntax highlighting, autocomplete, and validation",
5
+ "type": "module",
6
+ "main": "./dist/abc-editor.cjs.js",
7
+ "module": "./dist/abc-editor.es.js",
8
+ "types": "./dist/lib/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/lib/index.d.ts",
12
+ "import": "./dist/abc-editor.es.js",
13
+ "require": "./dist/abc-editor.cjs.js"
14
+ },
15
+ "./styles": "./dist/style.css"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
22
+ "keywords": [
23
+ "abc",
24
+ "music",
25
+ "notation",
26
+ "editor",
27
+ "react",
28
+ "component",
29
+ "syntax-highlighting",
30
+ "autocomplete",
31
+ "validation"
32
+ ],
33
+ "author": "ovnonvo",
34
+ "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/yourusername/abc-editor.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/yourusername/abc-editor/issues"
41
+ },
42
+ "homepage": "https://github.com/yourusername/abc-editor#readme",
43
+ "scripts": {
44
+ "dev": "vite",
45
+ "build": "tsc -p tsconfig.lib.json && vite build && rm -f dist/*.svg",
46
+ "build:types": "tsc -p tsconfig.lib.json",
47
+ "lint": "eslint .",
48
+ "preview": "vite preview",
49
+ "test": "vitest",
50
+ "test:ui": "vitest --ui",
51
+ "prepublishOnly": "npm run build"
52
+ },
53
+ "peerDependencies": {
54
+ "react": "^18.0.0 || ^19.0.0",
55
+ "react-dom": "^18.0.0 || ^19.0.0",
56
+ "abcjs": "^6.0.0"
57
+ },
58
+ "dependencies": {},
59
+ "devDependencies": {
60
+ "abcjs": "^6.5.2",
61
+ "react": "^19.2.0",
62
+ "react-dom": "^19.2.0",
63
+ "@eslint/js": "^9.39.1",
64
+ "@tailwindcss/postcss": "^4.1.17",
65
+ "@types/node": "^24.10.1",
66
+ "@types/react": "^19.2.5",
67
+ "@types/react-dom": "^19.2.3",
68
+ "@vitejs/plugin-react": "^5.1.1",
69
+ "@vitest/ui": "^4.0.12",
70
+ "autoprefixer": "^10.4.22",
71
+ "eslint": "^9.39.1",
72
+ "eslint-plugin-react-hooks": "^7.0.1",
73
+ "eslint-plugin-react-refresh": "^0.4.24",
74
+ "globals": "^16.5.0",
75
+ "jsdom": "^27.2.0",
76
+ "postcss": "^8.5.6",
77
+ "tailwindcss": "^4.1.17",
78
+ "typescript": "~5.9.3",
79
+ "typescript-eslint": "^8.46.4",
80
+ "vite": "^7.2.4",
81
+ "vitest": "^4.0.12"
82
+ }
83
+ }