@open-slide/core 1.3.0 → 1.4.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/{build-_276DMmJ.js → build-1Rqivz0d.js} +1 -1
- package/dist/cli/bin.js +3 -3
- package/dist/{config-BAwKWNtW.js → config-XZJnC_fu.js} +533 -59
- package/dist/{config-D9cZ1A0X.d.ts → config-s0YUbmUe.d.ts} +2 -1
- package/dist/{dev-BoqeVXVq.js → dev-0W8gYiSa.js} +1 -1
- package/dist/{en-CDKzoZvf.js → en-7GU-DHbJ.js} +13 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/locale/index.d.ts +1 -1
- package/dist/locale/index.js +40 -10
- package/dist/{preview-BLPxspc9.js → preview-DT9hJvzM.js} +1 -1
- package/dist/{types-JYG1cmwC.d.ts → types-QCpkHkiS.d.ts} +11 -1
- package/dist/vite/index.d.ts +2 -2
- package/dist/vite/index.js +1 -1
- package/package.json +1 -1
- package/skills/slide-authoring/SKILL.md +10 -2
- package/src/app/app.tsx +2 -0
- package/src/app/components/asset-view.tsx +36 -9
- package/src/app/components/inspector/inspect-overlay.tsx +49 -3
- package/src/app/components/inspector/inspector-panel.tsx +251 -24
- package/src/app/components/inspector/inspector-provider.tsx +390 -49
- package/src/app/components/player.tsx +25 -5
- package/src/app/components/present/control-bar.tsx +12 -0
- package/src/app/components/sidebar/folder-item.tsx +14 -3
- package/src/app/components/sidebar/sidebar.tsx +10 -0
- package/src/app/lib/export-pdf.ts +6 -0
- package/src/app/lib/inspector/use-editor.ts +9 -1
- package/src/app/lib/slides.ts +7 -0
- package/src/app/lib/use-slide-module.ts +48 -0
- package/src/app/routes/assets.tsx +9 -0
- package/src/app/routes/home-shell.tsx +23 -2
- package/src/app/routes/presenter.tsx +2 -20
- package/src/app/routes/slide.tsx +73 -40
- package/src/locale/en.ts +14 -4
- package/src/locale/ja.ts +14 -4
- package/src/locale/types.ts +11 -1
- package/src/locale/zh-cn.ts +14 -5
- package/src/locale/zh-tw.ts +14 -5
package/src/locale/en.ts
CHANGED
|
@@ -39,6 +39,7 @@ export const en: Locale = {
|
|
|
39
39
|
appTitle: 'open-slide',
|
|
40
40
|
draft: 'Draft',
|
|
41
41
|
themes: 'Themes',
|
|
42
|
+
assets: 'Assets',
|
|
42
43
|
folders: 'Folders',
|
|
43
44
|
newFolder: 'New folder',
|
|
44
45
|
folderName: 'Folder name',
|
|
@@ -85,7 +86,7 @@ export const en: Locale = {
|
|
|
85
86
|
backToHome: 'Back to home',
|
|
86
87
|
agentConnected: 'Agent connected',
|
|
87
88
|
agentConnectedTooltip:
|
|
88
|
-
'The
|
|
89
|
+
'The current slide and inspector selection are synced to your agent in real time.',
|
|
89
90
|
agentDisconnected: 'Agent disconnected',
|
|
90
91
|
agentDisconnectedTooltip:
|
|
91
92
|
'Lost connection to the dev server, so your agent can no longer see the current slide or inspector selection. Restart the dev server to restore the connection.',
|
|
@@ -93,7 +94,13 @@ export const en: Locale = {
|
|
|
93
94
|
exportAsHtml: 'Export as HTML',
|
|
94
95
|
exportAsPdf: 'Export as PDF',
|
|
95
96
|
pdfExportFailed: 'PDF export failed',
|
|
97
|
+
pdfExportSafariUnsupported:
|
|
98
|
+
'Export as PDF is not supported on Safari. Please try a Chromium-based browser instead.',
|
|
96
99
|
present: 'Present',
|
|
100
|
+
presentMenuAria: 'Present options',
|
|
101
|
+
presentInWindow: 'Play',
|
|
102
|
+
presentFullscreen: 'Fullscreen',
|
|
103
|
+
presentPresenter: 'Presenter mode',
|
|
97
104
|
slidesTab: 'Slides',
|
|
98
105
|
assetsTab: 'Assets',
|
|
99
106
|
renameSlide: 'Rename slide',
|
|
@@ -137,6 +144,8 @@ export const en: Locale = {
|
|
|
137
144
|
whiteoutAria: 'White screen (W)',
|
|
138
145
|
laserAria: 'Laser pointer (L)',
|
|
139
146
|
presenterAria: 'Presenter view (P)',
|
|
147
|
+
enterFullscreenAria: 'Enter fullscreen',
|
|
148
|
+
exitFullscreenAria: 'Exit fullscreen',
|
|
140
149
|
helpAria: 'Keyboard shortcuts (?)',
|
|
141
150
|
exitAria: 'Exit (Esc)',
|
|
142
151
|
elapsedTime: 'Elapsed time',
|
|
@@ -163,8 +172,7 @@ export const en: Locale = {
|
|
|
163
172
|
inspect: 'Inspect',
|
|
164
173
|
deselect: 'Deselect',
|
|
165
174
|
agentWatching: 'Agent is watching',
|
|
166
|
-
agentWatchingTooltip:
|
|
167
|
-
'Your agent already sees the selected element via the dev server — just ask it in chat. Leave comments here only when you want to queue a few before asking.',
|
|
175
|
+
agentWatchingTooltip: 'The selected element is synced to your agent in real time.',
|
|
168
176
|
agentNotWatching: 'Agent not watching',
|
|
169
177
|
agentNotWatchingTooltip:
|
|
170
178
|
'Lost connection to the dev server, so your agent can no longer see the selected element. Restart the dev server to restore the connection.',
|
|
@@ -251,6 +259,8 @@ export const en: Locale = {
|
|
|
251
259
|
devOnlyMessage: 'Asset management is only available in dev mode.',
|
|
252
260
|
sectionAria: 'Slide assets',
|
|
253
261
|
eyebrow: 'Assets',
|
|
262
|
+
scopeSlide: 'This slide',
|
|
263
|
+
scopeGlobal: 'Global',
|
|
254
264
|
fileCount: { one: '{count} file', other: '{count} files' },
|
|
255
265
|
searchLogos: 'Search logos',
|
|
256
266
|
upload: 'Upload',
|
|
@@ -266,7 +276,7 @@ export const en: Locale = {
|
|
|
266
276
|
renameMenuItem: 'Rename',
|
|
267
277
|
deleteMenuItem: 'Delete',
|
|
268
278
|
conflictTitle: 'File already exists',
|
|
269
|
-
conflictDescription:
|
|
279
|
+
conflictDescription: '{name} is already in the assets folder.',
|
|
270
280
|
conflictReplace: 'Replace',
|
|
271
281
|
conflictRenameCopy: 'Rename copy',
|
|
272
282
|
deleteAssetTitle: 'Delete asset',
|
package/src/locale/ja.ts
CHANGED
|
@@ -39,6 +39,7 @@ export const ja: Locale = {
|
|
|
39
39
|
appTitle: 'open-slide',
|
|
40
40
|
draft: '下書き',
|
|
41
41
|
themes: 'テーマ',
|
|
42
|
+
assets: 'アセット',
|
|
42
43
|
folders: 'フォルダ',
|
|
43
44
|
newFolder: '新規フォルダ',
|
|
44
45
|
folderName: 'フォルダ名',
|
|
@@ -83,7 +84,7 @@ export const ja: Locale = {
|
|
|
83
84
|
slide: {
|
|
84
85
|
agentConnected: 'エージェント接続中',
|
|
85
86
|
agentConnectedTooltip:
|
|
86
|
-
'現在のスライドと Inspector
|
|
87
|
+
'現在のスライドと Inspector の選択はエージェントにリアルタイムで同期されています。',
|
|
87
88
|
agentDisconnected: 'エージェント切断',
|
|
88
89
|
agentDisconnectedTooltip:
|
|
89
90
|
'dev server との接続が切れたため、現在のスライドや Inspector の選択がエージェントに届かなくなっています。dev server を再起動して接続を復旧してください。',
|
|
@@ -93,7 +94,13 @@ export const ja: Locale = {
|
|
|
93
94
|
exportAsHtml: 'HTML として書き出し',
|
|
94
95
|
exportAsPdf: 'PDF として書き出し',
|
|
95
96
|
pdfExportFailed: 'PDF の書き出しに失敗しました',
|
|
97
|
+
pdfExportSafariUnsupported:
|
|
98
|
+
'PDF の書き出しは現在 Safari では対応していません。Chromium ベースのブラウザでお試しください。',
|
|
96
99
|
present: '発表',
|
|
100
|
+
presentMenuAria: '発表オプション',
|
|
101
|
+
presentInWindow: '再生',
|
|
102
|
+
presentFullscreen: 'フルスクリーン再生',
|
|
103
|
+
presentPresenter: '発表者モード',
|
|
97
104
|
slidesTab: 'スライド',
|
|
98
105
|
assetsTab: 'アセット',
|
|
99
106
|
renameSlide: 'スライドの名前を変更',
|
|
@@ -137,6 +144,8 @@ export const ja: Locale = {
|
|
|
137
144
|
whiteoutAria: '白い画面 (W)',
|
|
138
145
|
laserAria: 'レーザーポインタ (L)',
|
|
139
146
|
presenterAria: '発表者ビュー (P)',
|
|
147
|
+
enterFullscreenAria: 'フルスクリーンへ',
|
|
148
|
+
exitFullscreenAria: 'フルスクリーン解除',
|
|
140
149
|
helpAria: 'キーボードショートカット (?)',
|
|
141
150
|
exitAria: '終了 (Esc)',
|
|
142
151
|
elapsedTime: '経過時間',
|
|
@@ -200,8 +209,7 @@ export const ja: Locale = {
|
|
|
200
209
|
cropApply: '適用',
|
|
201
210
|
cropResetAria: 'トリミングをリセット',
|
|
202
211
|
agentWatching: 'エージェント監視中',
|
|
203
|
-
agentWatchingTooltip:
|
|
204
|
-
'エージェントは選択中の要素を dev server 経由で把握しています。直接チャットで頼めます。ここにコメントを残すのは、複数の依頼をまとめて出したいときだけで OK。',
|
|
212
|
+
agentWatchingTooltip: '選択中の要素はエージェントにリアルタイムで同期されています。',
|
|
205
213
|
agentNotWatching: 'エージェント未接続',
|
|
206
214
|
agentNotWatchingTooltip:
|
|
207
215
|
'dev server との接続が切れたため、選択中の要素がエージェントに見えなくなっています。dev server を再起動して接続を復旧してください。',
|
|
@@ -253,6 +261,8 @@ export const ja: Locale = {
|
|
|
253
261
|
devOnlyMessage: 'アセット管理は開発モードでのみ利用できます。',
|
|
254
262
|
sectionAria: 'スライドのアセット',
|
|
255
263
|
eyebrow: 'アセット',
|
|
264
|
+
scopeSlide: 'このスライド',
|
|
265
|
+
scopeGlobal: 'グローバル',
|
|
256
266
|
fileCount: { one: 'ファイル {count} 件', other: 'ファイル {count} 件' },
|
|
257
267
|
searchLogos: 'ロゴを検索',
|
|
258
268
|
upload: 'アップロード',
|
|
@@ -268,7 +278,7 @@ export const ja: Locale = {
|
|
|
268
278
|
renameMenuItem: '名前を変更',
|
|
269
279
|
deleteMenuItem: '削除',
|
|
270
280
|
conflictTitle: 'ファイルがすでに存在します',
|
|
271
|
-
conflictDescription: '{name}
|
|
281
|
+
conflictDescription: '{name} はすでにアセットフォルダにあります。',
|
|
272
282
|
conflictReplace: '置き換え',
|
|
273
283
|
conflictRenameCopy: 'コピーをリネーム',
|
|
274
284
|
deleteAssetTitle: 'アセットを削除',
|
package/src/locale/types.ts
CHANGED
|
@@ -39,6 +39,7 @@ export type Locale = {
|
|
|
39
39
|
appTitle: string;
|
|
40
40
|
draft: string;
|
|
41
41
|
themes: string;
|
|
42
|
+
assets: string;
|
|
42
43
|
folders: string;
|
|
43
44
|
newFolder: string;
|
|
44
45
|
folderName: string;
|
|
@@ -94,7 +95,12 @@ export type Locale = {
|
|
|
94
95
|
exportAsHtml: string;
|
|
95
96
|
exportAsPdf: string;
|
|
96
97
|
pdfExportFailed: string;
|
|
98
|
+
pdfExportSafariUnsupported: string;
|
|
97
99
|
present: string;
|
|
100
|
+
presentMenuAria: string;
|
|
101
|
+
presentInWindow: string;
|
|
102
|
+
presentFullscreen: string;
|
|
103
|
+
presentPresenter: string;
|
|
98
104
|
slidesTab: string;
|
|
99
105
|
assetsTab: string;
|
|
100
106
|
renameSlide: string;
|
|
@@ -139,6 +145,8 @@ export type Locale = {
|
|
|
139
145
|
whiteoutAria: string;
|
|
140
146
|
laserAria: string;
|
|
141
147
|
presenterAria: string;
|
|
148
|
+
enterFullscreenAria: string;
|
|
149
|
+
exitFullscreenAria: string;
|
|
142
150
|
helpAria: string;
|
|
143
151
|
exitAria: string;
|
|
144
152
|
elapsedTime: string;
|
|
@@ -251,6 +259,8 @@ export type Locale = {
|
|
|
251
259
|
devOnlyMessage: string;
|
|
252
260
|
sectionAria: string;
|
|
253
261
|
eyebrow: string;
|
|
262
|
+
scopeSlide: string;
|
|
263
|
+
scopeGlobal: string;
|
|
254
264
|
/** templates: "{count} file" / "{count} files" */
|
|
255
265
|
fileCount: Plural;
|
|
256
266
|
searchLogos: string;
|
|
@@ -269,7 +279,7 @@ export type Locale = {
|
|
|
269
279
|
renameMenuItem: string;
|
|
270
280
|
deleteMenuItem: string;
|
|
271
281
|
conflictTitle: string;
|
|
272
|
-
/** template: "{name} is already in
|
|
282
|
+
/** template: "{name} is already in the assets folder." */
|
|
273
283
|
conflictDescription: string;
|
|
274
284
|
conflictReplace: string;
|
|
275
285
|
conflictRenameCopy: string;
|
package/src/locale/zh-cn.ts
CHANGED
|
@@ -39,6 +39,7 @@ export const zhCN: Locale = {
|
|
|
39
39
|
appTitle: 'open-slide',
|
|
40
40
|
draft: '草稿',
|
|
41
41
|
themes: '主题',
|
|
42
|
+
assets: '素材',
|
|
42
43
|
folders: '文件夹',
|
|
43
44
|
newFolder: '新建文件夹',
|
|
44
45
|
folderName: '文件夹名称',
|
|
@@ -82,8 +83,7 @@ export const zhCN: Locale = {
|
|
|
82
83
|
|
|
83
84
|
slide: {
|
|
84
85
|
agentConnected: 'Agent 已连接',
|
|
85
|
-
agentConnectedTooltip:
|
|
86
|
-
'Dev server 正在把你目前在哪张 slide、Inspector 选了哪个元素发布给 agent。直接到聊天说"这张 slide"或"这个元素"就行。Production build 不会出现。',
|
|
86
|
+
agentConnectedTooltip: '目前的 slide 与 Inspector 选择会即时同步给 agent。',
|
|
87
87
|
agentDisconnected: 'Agent 已断开',
|
|
88
88
|
agentDisconnectedTooltip:
|
|
89
89
|
'已和 dev server 断开连接,agent 没办法再看到你目前的 slide 或 Inspector 选择。请重新启动 dev server 来恢复连接。',
|
|
@@ -93,7 +93,13 @@ export const zhCN: Locale = {
|
|
|
93
93
|
exportAsHtml: '导出为 HTML',
|
|
94
94
|
exportAsPdf: '导出为 PDF',
|
|
95
95
|
pdfExportFailed: 'PDF 导出失败',
|
|
96
|
+
pdfExportSafariUnsupported:
|
|
97
|
+
'导出 PDF 目前不支持 Safari 设备,请尝试使用基于 Chromium 的浏览器替代。',
|
|
96
98
|
present: '演示',
|
|
99
|
+
presentMenuAria: '演示选项',
|
|
100
|
+
presentInWindow: '播放',
|
|
101
|
+
presentFullscreen: '全屏播放',
|
|
102
|
+
presentPresenter: '演讲者模式',
|
|
97
103
|
slidesTab: '幻灯片',
|
|
98
104
|
assetsTab: '素材',
|
|
99
105
|
renameSlide: '重命名幻灯片',
|
|
@@ -137,6 +143,8 @@ export const zhCN: Locale = {
|
|
|
137
143
|
whiteoutAria: '白屏 (W)',
|
|
138
144
|
laserAria: '激光笔 (L)',
|
|
139
145
|
presenterAria: '演讲者视图 (P)',
|
|
146
|
+
enterFullscreenAria: '进入全屏',
|
|
147
|
+
exitFullscreenAria: '退出全屏',
|
|
140
148
|
helpAria: '键盘快捷键 (?)',
|
|
141
149
|
exitAria: '退出 (Esc)',
|
|
142
150
|
elapsedTime: '已用时',
|
|
@@ -199,8 +207,7 @@ export const zhCN: Locale = {
|
|
|
199
207
|
cropApply: '应用',
|
|
200
208
|
cropResetAria: '重置裁剪',
|
|
201
209
|
agentWatching: 'Agent 正在关注',
|
|
202
|
-
agentWatchingTooltip:
|
|
203
|
-
'Agent 已经通过 dev server 看到你选的元素了,直接到聊天请它修改就行。想累积几个再一次问才需要在这里留 comments。',
|
|
210
|
+
agentWatchingTooltip: '选取的元素会即时同步给 agent。',
|
|
204
211
|
agentNotWatching: 'Agent 没在关注',
|
|
205
212
|
agentNotWatchingTooltip:
|
|
206
213
|
'已和 dev server 断开连接,agent 看不到你选的元素了。请重新启动 dev server 来恢复连接。',
|
|
@@ -251,6 +258,8 @@ export const zhCN: Locale = {
|
|
|
251
258
|
devOnlyMessage: '素材管理仅在开发模式下可用。',
|
|
252
259
|
sectionAria: '幻灯片素材',
|
|
253
260
|
eyebrow: '素材',
|
|
261
|
+
scopeSlide: '当前幻灯片',
|
|
262
|
+
scopeGlobal: '全局',
|
|
254
263
|
fileCount: { one: '{count} 个文件', other: '{count} 个文件' },
|
|
255
264
|
searchLogos: '搜索 Logo',
|
|
256
265
|
upload: '上传',
|
|
@@ -266,7 +275,7 @@ export const zhCN: Locale = {
|
|
|
266
275
|
renameMenuItem: '重命名',
|
|
267
276
|
deleteMenuItem: '删除',
|
|
268
277
|
conflictTitle: '文件已存在',
|
|
269
|
-
conflictDescription: '{name}
|
|
278
|
+
conflictDescription: '{name} 已在素材文件夹中。',
|
|
270
279
|
conflictReplace: '替换',
|
|
271
280
|
conflictRenameCopy: '重命名副本',
|
|
272
281
|
deleteAssetTitle: '删除素材',
|
package/src/locale/zh-tw.ts
CHANGED
|
@@ -39,6 +39,7 @@ export const zhTW: Locale = {
|
|
|
39
39
|
appTitle: 'open-slide',
|
|
40
40
|
draft: '草稿',
|
|
41
41
|
themes: '主題',
|
|
42
|
+
assets: '素材',
|
|
42
43
|
folders: '資料夾',
|
|
43
44
|
newFolder: '新增資料夾',
|
|
44
45
|
folderName: '資料夾名稱',
|
|
@@ -82,8 +83,7 @@ export const zhTW: Locale = {
|
|
|
82
83
|
|
|
83
84
|
slide: {
|
|
84
85
|
agentConnected: 'Agent 已連線',
|
|
85
|
-
agentConnectedTooltip:
|
|
86
|
-
'Dev server 正在把你目前在哪張 slide、Inspector 選了哪個元素發布給 agent。直接到聊天說「這張 slide」或「這個元素」就行。Production build 不會出現。',
|
|
86
|
+
agentConnectedTooltip: '目前的 slide 與 Inspector 選擇會即時同步給 agent。',
|
|
87
87
|
agentDisconnected: 'Agent 已斷線',
|
|
88
88
|
agentDisconnectedTooltip:
|
|
89
89
|
'已和 dev server 斷線,agent 沒辦法再看到你目前的 slide 或 Inspector 選擇。請重新啟動 dev server 來恢復連線。',
|
|
@@ -93,7 +93,13 @@ export const zhTW: Locale = {
|
|
|
93
93
|
exportAsHtml: '匯出為 HTML',
|
|
94
94
|
exportAsPdf: '匯出為 PDF',
|
|
95
95
|
pdfExportFailed: 'PDF 匯出失敗',
|
|
96
|
+
pdfExportSafariUnsupported:
|
|
97
|
+
'匯出 PDF 目前不支援 Safari 裝置,請嘗試用 Chromium 基底瀏覽器替代。',
|
|
96
98
|
present: '簡報',
|
|
99
|
+
presentMenuAria: '簡報選項',
|
|
100
|
+
presentInWindow: '播放',
|
|
101
|
+
presentFullscreen: '全螢幕播放',
|
|
102
|
+
presentPresenter: '簡報者模式',
|
|
97
103
|
slidesTab: '投影片',
|
|
98
104
|
assetsTab: '素材',
|
|
99
105
|
renameSlide: '重新命名投影片',
|
|
@@ -137,6 +143,8 @@ export const zhTW: Locale = {
|
|
|
137
143
|
whiteoutAria: '白屏 (W)',
|
|
138
144
|
laserAria: '雷射筆 (L)',
|
|
139
145
|
presenterAria: '主講人檢視 (P)',
|
|
146
|
+
enterFullscreenAria: '進入全螢幕',
|
|
147
|
+
exitFullscreenAria: '退出全螢幕',
|
|
140
148
|
helpAria: '鍵盤快速鍵 (?)',
|
|
141
149
|
exitAria: '離開 (Esc)',
|
|
142
150
|
elapsedTime: '已耗時',
|
|
@@ -199,8 +207,7 @@ export const zhTW: Locale = {
|
|
|
199
207
|
cropApply: '套用',
|
|
200
208
|
cropResetAria: '重設裁切',
|
|
201
209
|
agentWatching: 'Agent 正在關注',
|
|
202
|
-
agentWatchingTooltip:
|
|
203
|
-
'Agent 已經透過 dev server 看到你選的元素了,直接到聊天請它修改就行。想累積幾個再一次問才需要在這裡留 comments。',
|
|
210
|
+
agentWatchingTooltip: '選取的元素會即時同步給 agent。',
|
|
204
211
|
agentNotWatching: 'Agent 沒在關注',
|
|
205
212
|
agentNotWatchingTooltip:
|
|
206
213
|
'已和 dev server 斷線,agent 看不到你選的元素了。請重新啟動 dev server 來恢復連線。',
|
|
@@ -251,6 +258,8 @@ export const zhTW: Locale = {
|
|
|
251
258
|
devOnlyMessage: '素材管理僅在開發模式下可用。',
|
|
252
259
|
sectionAria: '投影片素材',
|
|
253
260
|
eyebrow: '素材',
|
|
261
|
+
scopeSlide: '此投影片',
|
|
262
|
+
scopeGlobal: '全域',
|
|
254
263
|
fileCount: { one: '{count} 個檔案', other: '{count} 個檔案' },
|
|
255
264
|
searchLogos: '搜尋 Logo',
|
|
256
265
|
upload: '上傳',
|
|
@@ -266,7 +275,7 @@ export const zhTW: Locale = {
|
|
|
266
275
|
renameMenuItem: '重新命名',
|
|
267
276
|
deleteMenuItem: '刪除',
|
|
268
277
|
conflictTitle: '檔案已存在',
|
|
269
|
-
conflictDescription: '{name}
|
|
278
|
+
conflictDescription: '{name} 已在素材資料夾中。',
|
|
270
279
|
conflictReplace: '取代',
|
|
271
280
|
conflictRenameCopy: '重新命名副本',
|
|
272
281
|
deleteAssetTitle: '刪除素材',
|