Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="../assets/stackchan-favicon-32.png" type="image/png" />
<link rel="apple-touch-icon" href="../assets/stackchan-apple-touch-icon.png" />
<title>ブロックエディタ | スタックチャン</title>
<link rel="stylesheet" href="../global.css" />
<link rel="stylesheet" href="./editor.css" />
<script
src="https://unpkg.com/blockly@11.2.2/blockly_compressed.js"
integrity="sha384-nXdS/O1XBg7d1iom7upZrVOtjvQfnVGDx67ecaCgU823024LIITNe/9Vf3o9ouRl"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/blockly@11.2.2/blocks_compressed.js"
integrity="sha384-HrJy1eOfAncgHWDhGobRG4+LW7lqYE6yk+XU5mArpfriaJP69d+R+sdziP7jswuL"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/blockly@11.2.2/javascript_compressed.js"
integrity="sha384-De44udSvZv11/XTEpKugzXvo25LZZR95qk6vZAXaPLMDt3QWmp6ZAZX4tmQvyZG3"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/lucide@1.24.0/dist/umd/lucide.min.js"
integrity="sha384-mooE85Luwgx+AyykX7e90VcN8/QCFTSIwPuHLmvcsLVoA0en7lKYb9XlOzn5G2co"
crossorigin="anonymous"
></script>
</head>
<body>
<main class="editor-shell">
<header class="topbar">
<a class="brand-link" href="../"
><img src="../assets/stackchan-symbol.png" alt="" /><span
>スタックチャン<span class="surface-name"> ブロックエディタ</span></span
></a
>
<div class="project-name-control">
<button
id="project-name-display"
class="project-name-display"
type="button"
aria-label="プロジェクト名を編集"
>
<span id="project-name-label">はじめてのMOD</span>
<i data-lucide="pencil"></i>
</button>
<input id="project-name" type="text" maxlength="64" aria-label="プロジェクト名" hidden />
</div>
<div class="project-controls" aria-label="プロジェクト設定">
<div class="target-device-control" title="対象機種">
<i data-lucide="cpu" aria-hidden="true"></i>
<select id="target-device" aria-label="対象機種"></select>
</div>
</div>
<div class="project-menu-control">
<button
id="project-menu-button"
class="project-menu-button"
type="button"
aria-haspopup="menu"
aria-expanded="false"
aria-controls="project-menu"
>
<span>プロジェクト</span>
<i data-lucide="chevron-down"></i>
</button>
<div id="project-menu" class="project-menu" role="menu" aria-label="プロジェクト操作" hidden>
<div class="project-menu-context">
<label class="project-menu-target">
<span>対象機種</span>
<select id="mobile-target-device"></select>
</label>
<div id="recent-projects-control" class="project-submenu-control">
<button
id="recent-projects-button"
class="project-submenu-trigger"
type="button"
role="menuitem"
aria-haspopup="menu"
aria-expanded="false"
aria-controls="recent-projects-submenu"
>
<i data-lucide="history"></i>
<span>最近開いたプロジェクト</span>
<i class="project-submenu-chevron" data-lucide="chevron-left"></i>
</button>
<div
id="recent-projects-submenu"
class="project-submenu"
role="menu"
aria-label="最近開いたプロジェクト"
hidden
>
<div id="recent-projects-list" class="recent-projects-list"></div>
</div>
</div>
<div class="project-menu-separator" role="separator"></div>
</div>
<div class="project-menu-actions">
<button id="new-project-button" type="button" role="menuitem">
<i data-lucide="file-plus-2"></i><span>新しいプロジェクト</span>
</button>
<button id="duplicate-project-button" type="button" role="menuitem">
<i data-lucide="copy-plus"></i><span>プロジェクトを複製</span>
</button>
<button id="import-button" type="button" role="menuitem">
<i data-lucide="folder-open"></i><span>プロジェクトを読み込む</span>
</button>
<button id="export-button" type="button" role="menuitem">
<i data-lucide="download"></i><span>ファイルとして書き出す</span>
</button>
<button id="asset-button" type="button" role="menuitem">
<i data-lucide="image-plus"></i><span>アセットを追加</span>
</button>
<button id="sample-button" type="button" role="menuitem">
<i data-lucide="file-input"></i><span>サンプルを読み込む</span>
</button>
<button id="recovery-button" class="warning-button" type="button" role="menuitem" hidden>
<i data-lucide="shield-alert"></i><span>破損データを書き出す</span>
</button>
<div class="project-menu-separator" role="separator"></div>
<button id="clear-button" class="danger-button" type="button" role="menuitem">
<i data-lucide="trash-2"></i><span>ワークスペースを消去</span>
</button>
</div>
</div>
<input id="project-file-input" type="file" accept=".json,.stackchan-blocks.json" hidden />
<input id="asset-file-input" type="file" multiple hidden />
</div>
</header>
<div class="editor-layout">
<section id="blockly-workspace" class="workspace" aria-label="Blocklyワークスペース"></section>
<aside class="editor-inspector" aria-label="MOD、アセットと出力">
<section class="build-section" aria-labelledby="build-section-heading">
<div class="section-heading">
<h1 id="build-section-heading">MOD</h1>
<p id="build-status" class="status-line" role="status">未ビルド</p>
</div>
<button id="build-button" type="button" class="primary-button">
<i data-lucide="hammer"></i><span>ビルド</span>
</button>
<div id="capability-summary" class="capability-summary" aria-live="polite"></div>
<div class="install-grid">
<button id="download-button" type="button" disabled title="XSAをダウンロード">
<i data-lucide="download"></i><span>ダウンロード</span>
</button>
<button id="install-simulator-button" type="button" disabled>
<i data-lucide="play"></i><span>シミュレーターで実行</span>
</button>
<button id="install-device-button" type="button" disabled>
<i data-lucide="usb"></i><span>実機へ書き込み</span>
</button>
<button id="remove-device-button" class="danger-button" type="button" disabled>
<i data-lucide="trash-2"></i><span>実機のMODを削除</span>
</button>
</div>
<progress id="install-progress" max="1" value="0" hidden aria-label="書き込み進行状況"></progress>
</section>
<section class="asset-section" aria-labelledby="asset-section-heading">
<div class="section-heading">
<h1 id="asset-section-heading">アセット</h1>
</div>
<div class="face-selection">
<span class="face-selection-heading">Face</span>
<div class="face-selection-control">
<button
id="face-selection-button"
class="face-selection-button"
type="button"
aria-haspopup="menu"
aria-expanded="false"
aria-controls="face-selection-menu"
>
<i data-lucide="smile"></i>
<span id="face-selection-label">標準Face</span>
<span class="face-selection-state">使用中</span>
<i class="face-selection-chevron" data-lucide="chevron-down"></i>
</button>
<div id="face-selection-menu" class="face-selection-menu" role="menu" aria-label="Faceを選択" hidden>
<div id="face-selection-list" class="face-selection-list"></div>
</div>
</div>
<button id="edit-face-button" class="edit-face-button" type="button" disabled>
<i data-lucide="pencil"></i><span>使用中のFaceを編集</span>
</button>
</div>
<div id="asset-summary" class="asset-summary" aria-live="polite"></div>
<label class="asset-mode">
<input id="embed-assets" type="checkbox" checked />
<span>アセットをMODへ埋め込む</span>
</label>
</section>
<section class="output-section">
<div class="output-tabs" role="tablist" aria-label="出力表示">
<button
id="code-tab"
class="output-tab"
type="button"
role="tab"
aria-selected="true"
aria-controls="code-panel"
>
生成コード
</button>
<button
id="log-tab"
class="output-tab"
type="button"
role="tab"
aria-selected="false"
aria-controls="log-panel"
>
ログ
</button>
<button
id="diagnostics-tab"
class="output-tab"
type="button"
role="tab"
aria-selected="false"
aria-controls="diagnostics-panel"
>
診断 <span id="diagnostics-count" class="count-badge">0</span>
</button>
</div>
<div id="code-panel" class="output-panel" role="tabpanel" aria-labelledby="code-tab">
<pre id="code-preview" aria-label="生成されたmod.js"></pre>
</div>
<div id="log-panel" class="output-panel" role="tabpanel" aria-labelledby="log-tab" hidden>
<pre id="log-output" aria-label="ビルドとインストールのログ"></pre>
</div>
<div
id="diagnostics-panel"
class="output-panel diagnostics-panel"
role="tabpanel"
aria-labelledby="diagnostics-tab"
hidden
>
<ol id="diagnostics-list" aria-label="プロジェクト診断"></ol>
</div>
</section>
</aside>
</div>
</main>
<dialog id="sample-dialog" class="sample-dialog" aria-labelledby="sample-dialog-title">
<header>
<div>
<h2 id="sample-dialog-title">サンプルを選ぶ</h2>
<p>プロジェクトのワークスペースを選んだサンプルへ置き換えます。</p>
</div>
<button id="sample-close" type="button" aria-label="サンプル選択を閉じる"><i data-lucide="x"></i></button>
</header>
<div id="sample-list" class="sample-list"></div>
</dialog>
<dialog
id="clear-workspace-dialog"
class="confirm-dialog"
aria-labelledby="clear-workspace-dialog-title"
aria-describedby="clear-workspace-dialog-description"
>
<form method="dialog">
<header>
<div>
<h2 id="clear-workspace-dialog-title">ワークスペースを消去しますか?</h2>
<p id="clear-workspace-dialog-description">
現在のプロジェクトからすべてのブロックを取り除き、自動保存します。
</p>
</div>
</header>
<p class="confirm-target">対象:<strong id="clear-workspace-project-name"></strong></p>
<div class="confirm-dialog-actions">
<button id="clear-workspace-cancel" type="submit" value="cancel">キャンセル</button>
<button id="clear-workspace-confirm" class="danger-button" type="submit" value="confirm">
ワークスペースを消去
</button>
</div>
</form>
</dialog>
<dialog id="simulator-dialog" class="simulator-dialog" aria-labelledby="simulator-dialog-title">
<header>
<h2 id="simulator-dialog-title">シミュレーター</h2>
<div class="simulator-controls">
<button id="simulator-restart" type="button"><i data-lucide="rotate-cw"></i><span>再実行</span></button>
<button id="simulator-stop" type="button"><i data-lucide="square"></i><span>停止</span></button>
<button id="simulator-close" type="button"><i data-lucide="x"></i><span>閉じる</span></button>
</div>
</header>
<div class="simulator-inputs" aria-label="シミュレーター入力">
<span>ボタン入力</span>
<button type="button" data-simulator-button="a">A</button>
<button type="button" data-simulator-button="b">B</button>
<button type="button" data-simulator-button="c">C</button>
</div>
<iframe id="simulator-frame" title="Stack-chan Webシミュレーター"></iframe>
</dialog>
<script type="module" src="../tool-navigation.mjs"></script>
<script type="module" src="./editor.mjs"></script>
<script>
globalThis.lucide?.createIcons()
</script>
</body>
</html>
a30dca054This file is pinned to the selected release. Download the original to open it in your design tool.