0.7.0 • Published 3 months ago

@ssml-utilities/editor-react v0.7.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

SSML Editor

SSML Editor は、Speech Synthesis Markup Language (SSML)を編集するための React コンポーネントです。シンタックスハイライトと編集機能を提供します。

インストール

npm install @ssml-utilities/editor-react

使用方法

import { SSMLEditor } from "@ssml-utilities/editor-react";

function App() {
  const [ssml, setSSML] = useState("<speak>Hello, world!</speak>");

  return (
    <SSMLEditor
      initialValue={ssml}
      onChange={(value) => setSSML(value)}
      width="800px"
      height="400px"
    />
  );
}

プロパティ

プロパティ名必須デフォルト値説明
initialValuestringいいえ''エディタの初期値として表示される SSML テキスト
onChange(value: string) => voidいいえ-SSML テキストが変更された時に呼び出されるコールバック関数
widthstringいいえ'600px'エディタの幅
heightstringいいえ'300px'エディタの高さ
onWrapTag(wrapFn: (tagName: string, attributes?: TagAttributes) => void) => voidいいえ-タグでテキストを囲む関数を受け取るコールバック
wrapTagShortCuts{ tagName: string; shortcut: (e: KeyboardEvent) => boolean; attributes?: TagAttributes }[]いいえ-キーボードショートカットの設定

機能

  • リアルタイムのシンタックスハイライト
  • SSML タグの自動補完
  • エラー表示
  • カスタマイズ可能なスタイリング
  • キーボードショートカット
  • タグ属性のサポート

import { SSMLEditor } from "@ssml-utilities/editor-react";

function App() {
  return (
    <SSMLEditor
      initialValue={`<speak>
        <prosody rate="slow" pitch="+2st">
          こんにちは、世界!
        </prosody>
      </speak>`}
      width="100%"
      height="500px"
    />
  );
}

キーボードショートカットの例

<SSMLEditor
    wrapTagShortCuts={[
        {
          tagName: "speak",
          shortcut: (e) => e.key === "s" && e.shiftKey && (e.ctrlKey || e.metaKey),
        },
        {
          tagName: "break",
          shortcut: (e) => e.key === "b" && e.shiftKey && (e.ctrlKey || e.metaKey),
          attributes: { time: "200ms" },
        },
        {
          tagName: "prosody",
          shortcut: (e) => e.key === "p" && e.shiftKey && (e.ctrlKey || e.metaKey),
          attributes: { rate: "120%", pitch: "+2st" },
        }
      ]}
    />

タグ属性の使用例

function App() {
  const wrapWithTagRef = useRef<(tagName: string, attributes?: TagAttributes) => void>();
  const handleWrapButtonClick = () => {
    wrapWithTagRef.current?.("prosody", {
      rate: "120%",
      pitch: "+2st"
    });
  };
  return (
    <>
      <button onClick={handleWrapButtonClick}>Wrap with prosody</button>
      <SSMLEditor
        onWrapTag={(wrapFn) => {
          wrapWithTagRef.current = wrapFn;
        }}
      />
    </>
  );
}

ライセンス

MIT ライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。

0.5.10

6 months ago

0.5.11

6 months ago

0.5.8

6 months ago

0.5.7

6 months ago

0.5.9

6 months ago

0.5.14

4 months ago

0.5.15

4 months ago

0.3.0

8 months ago

0.2.0

8 months ago

0.5.4

6 months ago

0.5.3

6 months ago

0.5.6

6 months ago

0.5.5

6 months ago

0.5.0

6 months ago

0.4.0

7 months ago

0.3.1

8 months ago

0.7.0

3 months ago

0.6.1

3 months ago

0.5.2

6 months ago

0.6.0

4 months ago

0.5.1

6 months ago

0.1.2

9 months ago

0.1.0

9 months ago