soiz1 commited on
Commit
681d2bd
·
verified ·
1 Parent(s): 905a2de

Upload 1546 files

Browse files
Dockerfile CHANGED
@@ -1,24 +1,24 @@
1
- # ベースイメージとして Node.js を使用
2
- FROM node:18
3
-
4
- # 作業ディレクトリを設定
5
- WORKDIR /app
6
-
7
- # ホストのファイルをコンテナにコピー
8
- COPY . .
9
-
10
- # translations ディレクトリを作成し、権限を設定
11
- RUN mkdir -p /app/translations && chmod -R 777 /app/translations
12
- RUN chmod -R 777 /app
13
-
14
- # 依存関係をインストール(競合を無視)
15
- RUN npm install --legacy-peer-deps
16
-
17
- # OpenSSL の互換オプションを有効化
18
- ENV NODE_OPTIONS="--openssl-legacy-provider"
19
-
20
- # コンテナの起動時にサーバーを実行
21
- CMD ["npm", "start"]
22
-
23
- # コンテナがリッスンするポート
24
- EXPOSE 3000
 
1
+ # ベースイメージとして Node.js を使用
2
+ FROM node:18
3
+
4
+ # 作業ディレクトリを設定
5
+ WORKDIR /app
6
+
7
+ # ホストのファイルをコンテナにコピー
8
+ COPY . .
9
+
10
+ # translations ディレクトリを作成し、権限を設定
11
+ RUN mkdir -p /app/translations && chmod -R 777 /app/translations
12
+ RUN chmod -R 777 /app
13
+
14
+ # 依存関係をインストール(競合を無視)
15
+ RUN npm install --legacy-peer-deps
16
+
17
+ # OpenSSL の互換オプションを有効化
18
+ ENV NODE_OPTIONS="--openssl-legacy-provider"
19
+
20
+ # コンテナの起動時にサーバーを実行
21
+ CMD ["npm", "start"]
22
+
23
+ # コンテナがリッスンするポート
24
+ EXPOSE 3000
src/addons/addons.js CHANGED
@@ -2,6 +2,7 @@
2
 
3
  const addons = [
4
  'cat-blocks',
 
5
  'editor-devtools',
6
  'find-bar',
7
  'middle-click-popup',
 
2
 
3
  const addons = [
4
  'cat-blocks',
5
+ 'save-to-google',
6
  'editor-devtools',
7
  'find-bar',
8
  'middle-click-popup',
src/addons/addons/save-to-google/_manifest_entry.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* generated by pull.js */
2
+ const manifest = {
3
+ "name": "Save project to Google drive",
4
+ "description": " \"Googleに保存\" を追加し、Googleドライブに保存するようにします。",
5
+ "tags": [
6
+ "recommended"
7
+ ],
8
+ "userscripts": [
9
+ {
10
+ "url": "userscript.js"
11
+ }
12
+ ],
13
+ "enabledByDefault": true
14
+ };
15
+ import {mediaRecorderSupported} from "../../environment";
16
+ if (!mediaRecorderSupported) manifest.unsupported = true;
17
+ export default manifest;
src/addons/addons/save-to-google/_runtime_entry.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ /* generated by pull.js */
2
+ import _js from "./userscript.js";
3
+ import _css from "!css-loader!./style.css";
4
+ export const resources = {
5
+ "userscript.js": _js,
6
+ "style.css": _css,
7
+ };
src/addons/addons/save-to-google/style.css ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .mediaRecorderPopup {
2
+ box-sizing: border-box;
3
+ width: 700px;
4
+ max-height: min(800px, 80vh);
5
+ max-width: 85%;
6
+ margin-top: 12vh;
7
+ overflow-y: auto;
8
+ margin-left: auto;
9
+ margin-right: auto;
10
+ }
11
+
12
+ .mediaRecorderPopupContent {
13
+ padding: 1.5rem 2.25rem;
14
+ }
15
+
16
+ .mediaRecorderPopup p {
17
+ font-size: 1rem;
18
+ margin: 0.5rem auto;
19
+ }
20
+
21
+ .mediaRecorderPopup p :last-child {
22
+ margin-left: 1rem;
23
+ }
24
+
25
+ .mediaRecorderPopup[dir="rtl"] p :last-child {
26
+ margin-left: 0;
27
+ margin-right: 1rem;
28
+ }
29
+
30
+ p.mediaRecorderPopupOption {
31
+ display: flex;
32
+ align-items: center;
33
+ }
34
+
35
+ .mediaRecorderPopupOption input[type="checkbox"] {
36
+ height: 1.5rem;
37
+ }
38
+
39
+ #recordOptionSecondsInput,
40
+ #recordOptionDelayInput {
41
+ width: 6rem;
42
+ }
43
+
44
+ .mediaRecorderPopupButtons {
45
+ margin-top: 1.5rem;
46
+ }
47
+
48
+ .mediaRecorderPopupButtons button {
49
+ margin-left: 0.5rem;
50
+ }
51
+
52
+ /* TW: Fixes cancel button in dark mode */
53
+ .mediaRecorderPopupButtons button:nth-of-type(1) {
54
+ color: black;
55
+ }
src/addons/addons/save-to-google/userscript.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export default async ({ addon, console, msg }) => {
2
+ // 永続的に対象要素が出現するのを待つループ
3
+ while (true) {
4
+ // 対象のメニュー要素を待機
5
+ const targetElem = await addon.tab.waitForElement(
6
+ 'div[class*="menu-bar_file-group"] > div:last-child:not(.sa-record)',
7
+ { markAsSeen: true }
8
+ );
9
+
10
+ // 同じボタンが複数作られないようにチェック
11
+ if (!document.querySelector('.sa-custom-modal-button')) {
12
+ // ボタン要素を作成
13
+ const button = document.createElement("div");
14
+ button.className = "sa-custom-modal-button " + targetElem.className;
15
+ button.textContent = msg("open-modal"); // ローカライズされた文字列
16
+ button.style.cursor = "pointer";
17
+
18
+ // ボタンがクリックされたときにモーダルを表示するイベントリスナー
19
+ button.addEventListener("click", () => {
20
+ // モーダルを作成(addon.tab.createModalを利用)
21
+ const { backdrop, container, content, closeButton, remove } = addon.tab.createModal(
22
+ msg("modal-title"), // モーダルのタイトル
23
+ { isOpen: true, useEditorClasses: true }
24
+ );
25
+
26
+ // モーダル内に任意のHTMLを設定
27
+ content.innerHTML = `
28
+ <div>
29
+ <h1>${msg("modal-header")}</h1>
30
+ <p>${msg("modal-description")}</p>
31
+ <button id="modal-ok-button">${msg("ok")}</button>
32
+ </div>
33
+ `;
34
+
35
+ // 「OK」ボタンがクリックされたらモーダルを閉じる
36
+ const okButton = content.querySelector("#modal-ok-button");
37
+ if (okButton) {
38
+ okButton.addEventListener("click", () => remove());
39
+ }
40
+
41
+ // バックドロップやクローズボタンをクリックした場合もモーダルを閉じる
42
+ backdrop.addEventListener("click", () => remove());
43
+ closeButton.addEventListener("click", () => remove());
44
+ });
45
+
46
+ // 対象の親要素にボタンを追加
47
+ targetElem.parentElement.appendChild(button);
48
+ }
49
+ }
50
+ };
src/addons/generated/addon-manifests.js CHANGED
@@ -3,6 +3,7 @@ import _cat_blocks from "../addons/cat-blocks/_manifest_entry.js";
3
  import _editor_devtools from "../addons/editor-devtools/_manifest_entry.js";
4
  import _find_bar from "../addons/find-bar/_manifest_entry.js";
5
  import _middle_click_popup from "../addons/middle-click-popup/_manifest_entry.js";
 
6
  import _editor_block_chomping from "../addons/editor-block-chomping/_manifest_entry.js";
7
  import _jump_to_def from "../addons/jump-to-def/_manifest_entry.js";
8
  import _editor_searchable_dropdowns from "../addons/editor-searchable-dropdowns/_manifest_entry.js";
@@ -70,6 +71,7 @@ export default {
70
  "cat-blocks": _cat_blocks,
71
  "editor-devtools": _editor_devtools,
72
  "find-bar": _find_bar,
 
73
  "middle-click-popup": _middle_click_popup,
74
  "editor-block-chomping": _editor_block_chomping,
75
  "jump-to-def": _jump_to_def,
 
3
  import _editor_devtools from "../addons/editor-devtools/_manifest_entry.js";
4
  import _find_bar from "../addons/find-bar/_manifest_entry.js";
5
  import _middle_click_popup from "../addons/middle-click-popup/_manifest_entry.js";
6
+ import _save_to_google from "../addons/save-to-google/_manifest_entry.js";
7
  import _editor_block_chomping from "../addons/editor-block-chomping/_manifest_entry.js";
8
  import _jump_to_def from "../addons/jump-to-def/_manifest_entry.js";
9
  import _editor_searchable_dropdowns from "../addons/editor-searchable-dropdowns/_manifest_entry.js";
 
71
  "cat-blocks": _cat_blocks,
72
  "editor-devtools": _editor_devtools,
73
  "find-bar": _find_bar,
74
+ "save-to-google": _save_to_google,
75
  "middle-click-popup": _middle_click_popup,
76
  "editor-block-chomping": _editor_block_chomping,
77
  "jump-to-def": _jump_to_def,