isaikr 0.0.1
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/README.md +35 -0
- package/cdn/api.js +19 -0
- package/cdn/character.js +254 -0
- package/cdn/chat.js +33 -0
- package/cdn/code-editor.js +1131 -0
- package/cdn/community-compose.js +270 -0
- package/cdn/games/2048/index.html +12 -0
- package/cdn/games/breakout/index.html +13 -0
- package/cdn/games/clicker/index.html +26 -0
- package/cdn/games/flappy/index.html +11 -0
- package/cdn/games/memory/index.html +34 -0
- package/cdn/games/pong/index.html +13 -0
- package/cdn/games/reaction/index.html +38 -0
- package/cdn/games/runner/index.html +11 -0
- package/cdn/games/snake/index.html +11 -0
- package/cdn/games/tetris/index.html +14 -0
- package/cdn/games/whack/index.html +8 -0
- package/cdn/go.js +126 -0
- package/cdn/go2.js +127 -0
- package/cdn/header3_behavior.js +1167 -0
- package/cdn/header3_layout.js +1004 -0
- package/cdn/header3_layout.js.bak +1004 -0
- package/cdn/header3_style.css +3524 -0
- package/cdn/header3_style.css.bak +3514 -0
- package/cdn/lang.js +198 -0
- package/cdn/loading.js +143 -0
- package/cdn/loading2.js +144 -0
- package/cdn/local-model.js +2941 -0
- package/cdn/main.js +4 -0
- package/cdn/main_asset.js +1849 -0
- package/cdn/main_asset.js.bak +6999 -0
- package/cdn/main_index.css +287 -0
- package/cdn/re_board3.css +733 -0
- package/cdn/re_board3.js +734 -0
- package/cdn/re_chat_tts.js +652 -0
- package/cdn/re_local_runtime.js +2246 -0
- package/cdn/re_local_runtime.js.bak +2246 -0
- package/cdn/re_share.js +577 -0
- package/cdn/re_voice.js +542 -0
- package/cdn/utils.js +36 -0
- package/cdn/view.js +321 -0
- package/header3_behavior.js +804 -0
- package/header3_layout.js +998 -0
- package/header3_style.css +2740 -0
- package/index.js +0 -0
- package/lang.js +179 -0
- package/main_asset.js +2416 -0
- package/main_index.css +274 -0
- package/package.json +14 -0
- package/re_chat_tts.js +1419 -0
- package/re_voice.js +430 -0
package/cdn/lang.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
const userLang = String(navigator.language || navigator.userLanguage || "en").substring(0, 2).toLowerCase();
|
|
2
|
+
const supportedLangs = ["ko", "en", "ja", "zh", "es", "pt", "hi"];
|
|
3
|
+
const LANG = supportedLangs.includes(userLang) ? userLang : "en";
|
|
4
|
+
|
|
5
|
+
const SYSTEM_PROMPTS = {
|
|
6
|
+
ko: "\uD55C\uAD6D\uC5B4\uB85C \uB2F5\uBCC0\uD574 \uC8FC\uC138\uC694.",
|
|
7
|
+
en: "Respond in English.",
|
|
8
|
+
ja: "\u65E5\u672C\u8A9E\u3067\u56DE\u7B54\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
9
|
+
zh: "\u8BF7\u7528\u4E2D\u6587\u56DE\u7B54\u3002",
|
|
10
|
+
es: "Responde en espanol.",
|
|
11
|
+
pt: "Responda em portugues.",
|
|
12
|
+
hi: "\u0915\u0943\u092A\u092F\u093E \u0939\u093F\u0902\u0926\u0940 \u092E\u0947\u0902 \u091C\u0935\u093E\u092C \u0926\u0947\u0902\u0964"
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const T_DATA = {
|
|
16
|
+
en: {
|
|
17
|
+
welcome: "How can I help you?",
|
|
18
|
+
ph_chat: "Ask AI anything...",
|
|
19
|
+
ph_expert: "Ask for a synthesized expert answer...",
|
|
20
|
+
ph_search: "Search topic...",
|
|
21
|
+
ph_image: "Describe image...",
|
|
22
|
+
ph_video: "Describe the video scene...",
|
|
23
|
+
ph_music: "Describe the music...",
|
|
24
|
+
ph_blog: "Enter a topic for the blog post...",
|
|
25
|
+
ph_app: "Search shortcuts...",
|
|
26
|
+
ph_code: "Request code...",
|
|
27
|
+
ph_search_store: "Search apps...",
|
|
28
|
+
popup_title_limit: "Limit reached",
|
|
29
|
+
popup_msg_limit: "Daily limit reached.",
|
|
30
|
+
popup_title_wifi: "Offline mode",
|
|
31
|
+
popup_msg_wifi: "Continue in offline mode (~600MB)",
|
|
32
|
+
btn_cancel: "Cancel",
|
|
33
|
+
btn_confirm: "Download",
|
|
34
|
+
error: "Error",
|
|
35
|
+
local_on: "Offline mode on",
|
|
36
|
+
local_off: "Offline mode off",
|
|
37
|
+
no_apps: "No apps found.",
|
|
38
|
+
no_results: "No results found.",
|
|
39
|
+
code_copied: "Code copied!"
|
|
40
|
+
},
|
|
41
|
+
ko: {
|
|
42
|
+
welcome: "\uC548\uB155\uD558\uC138\uC694. \uBB34\uC5C7\uC744 \uB3C4\uC640\uB4DC\uB9B4\uAE4C\uC694?",
|
|
43
|
+
ph_chat: "AI\uC5D0\uAC8C \uBB34\uC5C7\uC774\uB4E0 \uBB3C\uC5B4\uBCF4\uC138\uC694...",
|
|
44
|
+
ph_expert: "\uC5EC\uB7EC \uAD00\uC810\uC744 \uD569\uCCD0 \uB2F5\uD558\uB3C4\uB85D \uC694\uCCAD\uD574\uBCF4\uC138\uC694...",
|
|
45
|
+
ph_search: "\uAC80\uC0C9\uD560 \uC8FC\uC81C\uB97C \uC785\uB825\uD558\uC138\uC694...",
|
|
46
|
+
ph_image: "\uC774\uBBF8\uC9C0\uB97C \uC124\uBA85\uD574 \uC8FC\uC138\uC694...",
|
|
47
|
+
ph_video: "\uC601\uC0C1 \uC7A5\uBA74\uC744 \uC124\uBA85\uD574 \uC8FC\uC138\uC694...",
|
|
48
|
+
ph_music: "\uC74C\uC545\uC744 \uC124\uBA85\uD574 \uC8FC\uC138\uC694...",
|
|
49
|
+
ph_blog: "\uBE14\uB85C\uADF8 \uC8FC\uC81C\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694...",
|
|
50
|
+
ph_app: "\uBC14\uB85C\uAC00\uAE30 \uAC80\uC0C9...",
|
|
51
|
+
ph_code: "\uCF54\uB4DC\uB97C \uC694\uCCAD\uD574 \uBCF4\uC138\uC694...",
|
|
52
|
+
ph_search_store: "\uC571 \uAC80\uC0C9...",
|
|
53
|
+
popup_title_limit: "\uD55C\uB3C4 \uCD08\uACFC",
|
|
54
|
+
popup_msg_limit: "\uC77C\uC77C \uC0AC\uC6A9 \uD55C\uB3C4\uB97C \uCD08\uACFC\uD588\uC2B5\uB2C8\uB2E4.",
|
|
55
|
+
popup_title_wifi: "\uC624\uD504\uB77C\uC778 \uBAA8\uB4DC",
|
|
56
|
+
popup_msg_wifi: "\uC624\uD504\uB77C\uC778 \uBAA8\uB4DC\uB85C \uACC4\uC18D\uD569\uB2C8\uB2E4 (~600MB)",
|
|
57
|
+
btn_cancel: "\uCDE8\uC18C",
|
|
58
|
+
btn_confirm: "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
59
|
+
error: "\uC624\uB958",
|
|
60
|
+
local_on: "\uC624\uD504\uB77C\uC778 \uBAA8\uB4DC \uCF1C\uC9D0",
|
|
61
|
+
local_off: "\uC624\uD504\uB77C\uC778 \uBAA8\uB4DC \uAEBC\uC9D0",
|
|
62
|
+
no_apps: "\uC571\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
63
|
+
no_results: "\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
64
|
+
code_copied: "\uCF54\uB4DC\uAC00 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!"
|
|
65
|
+
},
|
|
66
|
+
ja: {
|
|
67
|
+
welcome: "\u3053\u3093\u306B\u3061\u306F\u3002\u4F55\u3092\u304A\u624B\u4F1D\u3044\u3057\u307E\u3057\u3087\u3046\u304B\uFF1F",
|
|
68
|
+
ph_chat: "AI\u306B\u4F55\u3067\u3082\u805E\u3044\u3066\u304F\u3060\u3055\u3044...",
|
|
69
|
+
ph_expert: "\u8907\u6570\u306E\u89B3\u70B9\u3092\u307E\u3068\u3081\u305F\u56DE\u7B54\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
70
|
+
ph_search: "\u691C\u7D22\u3059\u308B\u30C8\u30D4\u30C3\u30AF\u3092\u5165\u529B...",
|
|
71
|
+
ph_image: "\u753B\u50CF\u3092\u8AAC\u660E\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
72
|
+
ph_video: "\u52D5\u753B\u30B7\u30FC\u30F3\u3092\u8AAC\u660E\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
73
|
+
ph_music: "\u97F3\u697D\u3092\u8AAC\u660E\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
74
|
+
ph_blog: "\u30D6\u30ED\u30B0\u306E\u30C6\u30FC\u30DE\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044...",
|
|
75
|
+
ph_app: "\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u691C\u7D22...",
|
|
76
|
+
ph_code: "\u30B3\u30FC\u30C9\u3092\u30EA\u30AF\u30A8\u30B9\u30C8...",
|
|
77
|
+
ph_search_store: "\u30A2\u30D7\u30EA\u3092\u691C\u7D22...",
|
|
78
|
+
popup_title_limit: "\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F",
|
|
79
|
+
popup_msg_limit: "1\u65E5\u306E\u5229\u7528\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F\u3002",
|
|
80
|
+
popup_title_wifi: "\u30AA\u30D5\u30E9\u30A4\u30F3\u30E2\u30FC\u30C9",
|
|
81
|
+
popup_msg_wifi: "\u30AA\u30D5\u30E9\u30A4\u30F3\u30E2\u30FC\u30C9\u3067\u7D9A\u884C\u3057\u307E\u3059 (~600MB)",
|
|
82
|
+
btn_cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
83
|
+
btn_confirm: "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
|
|
84
|
+
error: "\u30A8\u30E9\u30FC",
|
|
85
|
+
local_on: "\u30AA\u30D5\u30E9\u30A4\u30F3\u30E2\u30FC\u30C9 ON",
|
|
86
|
+
local_off: "\u30AA\u30D5\u30E9\u30A4\u30F3\u30E2\u30FC\u30C9 OFF",
|
|
87
|
+
no_apps: "\u30A2\u30D7\u30EA\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",
|
|
88
|
+
no_results: "\u691C\u7D22\u7D50\u679C\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
89
|
+
code_copied: "\u30B3\u30FC\u30C9\u3092\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F\uFF01"
|
|
90
|
+
},
|
|
91
|
+
zh: {
|
|
92
|
+
welcome: "\u4F60\u597D\uFF0C\u6211\u53EF\u4EE5\u5E2E\u4F60\u505A\u4EC0\u4E48\uFF1F",
|
|
93
|
+
ph_chat: "\u5411 AI \u63D0\u95EE\u4EFB\u4F55\u95EE\u9898...",
|
|
94
|
+
ph_expert: "\u8BF7\u8981\u6C42\u4E00\u4E2A\u878D\u5408\u591A\u79CD\u89C2\u70B9\u7684\u4E13\u5BB6\u7B54\u6848...",
|
|
95
|
+
ph_search: "\u8F93\u5165\u641C\u7D22\u4E3B\u9898...",
|
|
96
|
+
ph_image: "\u63CF\u8FF0\u56FE\u7247...",
|
|
97
|
+
ph_video: "\u63CF\u8FF0\u89C6\u9891\u573A\u666F...",
|
|
98
|
+
ph_music: "\u63CF\u8FF0\u97F3\u4E50...",
|
|
99
|
+
ph_blog: "\u8F93\u5165\u535A\u5BA2\u4E3B\u9898...",
|
|
100
|
+
ph_app: "\u641C\u7D22\u5FEB\u6377\u65B9\u5F0F...",
|
|
101
|
+
ph_code: "\u8BF7\u6C42\u4EE3\u7801...",
|
|
102
|
+
ph_search_store: "\u641C\u7D22\u5E94\u7528...",
|
|
103
|
+
popup_title_limit: "\u5DF2\u8FBE\u5230\u4E0A\u9650",
|
|
104
|
+
popup_msg_limit: "\u4ECA\u65E5\u4F7F\u7528\u6B21\u6570\u5DF2\u8FBE\u4E0A\u9650\u3002",
|
|
105
|
+
popup_title_wifi: "\u79BB\u7EBF\u6A21\u5F0F",
|
|
106
|
+
popup_msg_wifi: "\u7EE7\u7EED\u4F7F\u7528\u79BB\u7EBF\u6A21\u5F0F (~600MB)",
|
|
107
|
+
btn_cancel: "\u53D6\u6D88",
|
|
108
|
+
btn_confirm: "\u4E0B\u8F7D",
|
|
109
|
+
error: "\u9519\u8BEF",
|
|
110
|
+
local_on: "\u79BB\u7EBF\u6A21\u5F0F\u5DF2\u5F00\u542F",
|
|
111
|
+
local_off: "\u79BB\u7EBF\u6A21\u5F0F\u5DF2\u5173\u95ED",
|
|
112
|
+
no_apps: "\u672A\u627E\u5230\u5E94\u7528\u3002",
|
|
113
|
+
no_results: "\u6CA1\u6709\u641C\u7D22\u7ED3\u679C\u3002",
|
|
114
|
+
code_copied: "\u4EE3\u7801\u5DF2\u590D\u5236\uFF01"
|
|
115
|
+
},
|
|
116
|
+
es: {
|
|
117
|
+
welcome: "Hola, como puedo ayudarte?",
|
|
118
|
+
ph_chat: "Pregunta lo que quieras...",
|
|
119
|
+
ph_expert: "Pide una respuesta sintetizada desde varias perspectivas...",
|
|
120
|
+
ph_search: "Buscar tema...",
|
|
121
|
+
ph_image: "Describe la imagen...",
|
|
122
|
+
ph_video: "Describe la escena del video...",
|
|
123
|
+
ph_music: "Describe la musica...",
|
|
124
|
+
ph_blog: "Escribe un tema para el blog...",
|
|
125
|
+
ph_app: "Buscar accesos...",
|
|
126
|
+
ph_code: "Solicitar codigo...",
|
|
127
|
+
ph_search_store: "Buscar apps...",
|
|
128
|
+
popup_title_limit: "Limite alcanzado",
|
|
129
|
+
popup_msg_limit: "Se alcanzo el limite diario.",
|
|
130
|
+
popup_title_wifi: "Modo sin conexion",
|
|
131
|
+
popup_msg_wifi: "Continuar en modo sin conexion (~600MB)",
|
|
132
|
+
btn_cancel: "Cancelar",
|
|
133
|
+
btn_confirm: "Descargar",
|
|
134
|
+
error: "Error",
|
|
135
|
+
local_on: "Modo sin conexion activado",
|
|
136
|
+
local_off: "Modo sin conexion desactivado",
|
|
137
|
+
no_apps: "No se encontraron apps.",
|
|
138
|
+
no_results: "No se encontraron resultados.",
|
|
139
|
+
code_copied: "Codigo copiado!"
|
|
140
|
+
},
|
|
141
|
+
pt: {
|
|
142
|
+
welcome: "Ola, como posso ajudar?",
|
|
143
|
+
ph_chat: "Pergunte qualquer coisa para a IA...",
|
|
144
|
+
ph_expert: "Peça uma resposta sintetizada com varias perspectivas...",
|
|
145
|
+
ph_search: "Pesquisar topico...",
|
|
146
|
+
ph_image: "Descreva a imagem...",
|
|
147
|
+
ph_video: "Descreva a cena do video...",
|
|
148
|
+
ph_music: "Descreva a musica...",
|
|
149
|
+
ph_blog: "Digite um topico para o blog...",
|
|
150
|
+
ph_app: "Pesquisar atalhos...",
|
|
151
|
+
ph_code: "Solicitar codigo...",
|
|
152
|
+
ph_search_store: "Pesquisar apps...",
|
|
153
|
+
popup_title_limit: "Limite atingido",
|
|
154
|
+
popup_msg_limit: "Limite diario atingido.",
|
|
155
|
+
popup_title_wifi: "Modo offline",
|
|
156
|
+
popup_msg_wifi: "Continuar no modo offline (~600MB)",
|
|
157
|
+
btn_cancel: "Cancelar",
|
|
158
|
+
btn_confirm: "Baixar",
|
|
159
|
+
error: "Erro",
|
|
160
|
+
local_on: "Modo offline ativado",
|
|
161
|
+
local_off: "Modo offline desativado",
|
|
162
|
+
no_apps: "Nenhum app encontrado.",
|
|
163
|
+
no_results: "Nenhum resultado encontrado.",
|
|
164
|
+
code_copied: "Codigo copiado!"
|
|
165
|
+
},
|
|
166
|
+
hi: {
|
|
167
|
+
welcome: "\u0928\u092E\u0938\u094D\u0924\u0947, \u092E\u0948\u0902 \u0906\u092A\u0915\u0940 \u0915\u0948\u0938\u0947 \u092E\u0926\u0926 \u0915\u0930 \u0938\u0915\u0924\u093E \u0939\u0942\u0901?",
|
|
168
|
+
ph_chat: "AI \u0938\u0947 \u0915\u0941\u091B \u092D\u0940 \u092A\u0942\u091B\u0947\u0902...",
|
|
169
|
+
ph_expert: "\u0905\u0928\u0947\u0915 \u0926\u0943\u0937\u094D\u091F\u093F\u0915\u094B\u0923\u094B\u0902 \u0915\u094B \u091C\u094B\u0921\u093C\u0915\u0930 \u091C\u0935\u093E\u092C \u092E\u093E\u0902\u0917\u0947\u0902...",
|
|
170
|
+
ph_search: "\u0916\u094B\u091C \u0935\u093F\u0937\u092F \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902...",
|
|
171
|
+
ph_image: "\u091B\u0935\u093F \u0915\u093E \u0935\u0930\u094D\u0923\u0928 \u0915\u0930\u0947\u0902...",
|
|
172
|
+
ph_video: "\u0935\u0940\u0921\u093F\u092F\u094B \u0926\u0943\u0936\u094D\u092F \u0915\u093E \u0935\u0930\u094D\u0923\u0928 \u0915\u0930\u0947\u0902...",
|
|
173
|
+
ph_music: "\u0938\u0902\u0917\u0940\u0924 \u0915\u093E \u0935\u0930\u094D\u0923\u0928 \u0915\u0930\u0947\u0902...",
|
|
174
|
+
ph_blog: "\u092C\u094D\u0932\u0949\u0917 \u092A\u094B\u0938\u094D\u091F \u0915\u093E \u0935\u093F\u0937\u092F \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902...",
|
|
175
|
+
ph_app: "\u0936\u0949\u0930\u094D\u091F\u0915\u091F \u0916\u094B\u091C\u0947\u0902...",
|
|
176
|
+
ph_code: "\u0915\u094B\u0921 \u0915\u0947 \u0932\u093F\u090F \u0905\u0928\u0941\u0930\u094B\u0927 \u0915\u0930\u0947\u0902...",
|
|
177
|
+
ph_search_store: "\u0910\u092A \u0916\u094B\u091C\u0947\u0902...",
|
|
178
|
+
popup_title_limit: "\u0938\u0940\u092E\u093E \u092A\u0942\u0930\u0940 \u0939\u0941\u0908",
|
|
179
|
+
popup_msg_limit: "\u0926\u0948\u0928\u093F\u0915 \u0938\u0940\u092E\u093E \u092A\u0942\u0930\u0940 \u0939\u094B \u0917\u0908 \u0939\u0948\u0964",
|
|
180
|
+
popup_title_wifi: "\u0911\u092B\u0932\u093E\u0907\u0928 \u092E\u094B\u0921",
|
|
181
|
+
popup_msg_wifi: "\u0911\u092B\u0932\u093E\u0907\u0928 \u092E\u094B\u0921 \u092E\u0947\u0902 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902 (~600MB)",
|
|
182
|
+
btn_cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
|
|
183
|
+
btn_confirm: "\u0921\u093E\u0909\u0928\u0932\u094B\u0921",
|
|
184
|
+
error: "\u0924\u094D\u0930\u0941\u091F\u093F",
|
|
185
|
+
local_on: "\u0911\u092B\u0932\u093E\u0907\u0928 \u092E\u094B\u0921 \u091A\u093E\u0932\u0942",
|
|
186
|
+
local_off: "\u0911\u092B\u0932\u093E\u0907\u0928 \u092E\u094B\u0921 \u092C\u0902\u0926",
|
|
187
|
+
no_apps: "\u0915\u094B\u0908 \u0910\u092A \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964",
|
|
188
|
+
no_results: "\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964",
|
|
189
|
+
code_copied: "\u0915\u094B\u0921 \u0915\u0949\u092A\u0940 \u0939\u094B \u0917\u092F\u093E!"
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const T = T_DATA[LANG] || T_DATA.en;
|
|
194
|
+
|
|
195
|
+
window.LANG = LANG;
|
|
196
|
+
window.SYSTEM_PROMPTS = SYSTEM_PROMPTS;
|
|
197
|
+
window.T_DATA = T_DATA;
|
|
198
|
+
window.T = T;
|
package/cdn/loading.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
const base = "isai.kr";
|
|
2
|
+
const cdn = "https://cdn.jsdelivr.net/gh/sllkx";
|
|
3
|
+
|
|
4
|
+
const langs = {
|
|
5
|
+
'ko': ['안전한 링크로 연결 중입니다...', '클릭해서 더 빠르게 연결!', '클릭하여 이동하기'],
|
|
6
|
+
'en': ['Connecting to a secure link...', 'Click to connect faster!', 'Click to continue!'],
|
|
7
|
+
'es': ['Conectando a un enlace seguro...', '¡Haz clic para conectar más rápido!', '¡Haz clic para continuar!'],
|
|
8
|
+
'pt': ['Conectando a um link seguro...', 'Clique para conectar mais rápido!', 'Clique para continuar!'],
|
|
9
|
+
'hi': ['एक सुरक्षित लिंक से जोड़ा जा रहा है...', 'तेज़ी से कनेक्ट करने के लिए क्लिक करें!', 'आगे बढ़ने के लिए क्लिक करें!'],
|
|
10
|
+
'ja': ['安全なリンクへ接続しています...', 'クリックして高速接続!', 'クリックして移動する']
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const recommendItems = [
|
|
14
|
+
[`https://ollapp.${base}`, `${cdn}/icons@main/logo/ring.jfif.png`, {
|
|
15
|
+
'ko': "내 앱 무료로 출시하기", 'en': "Publish My App for Free", 'es': "Publicar mi aplicación gratis",
|
|
16
|
+
'pt': "Publicar meu aplicativo grátis", 'hi': "अपना ऐप मुफ़्त में प्रकाशित करें", 'ja': "マイアプリ를 무료로 출시하기"
|
|
17
|
+
}],
|
|
18
|
+
[`https://isai.kr`, `${cdn}/icons@main/logo/isai2.png`, {
|
|
19
|
+
'ko': "이사이 무료 AI 채팅", 'en': "isai Free AI Chat", 'es': "isai Chat de IA gratis",
|
|
20
|
+
'pt': "isai Chat de IA grátis", 'hi': "इसई मुफ़्त 에이아이챗", 'ja': "isai無料AIチャット"
|
|
21
|
+
}],
|
|
22
|
+
[`https://logig.im`, `https://i.imgur.com/UWmM5Io.png`, {
|
|
23
|
+
'ko': "나만의 사이트 만들어서 수익내기 로긱", 'en': "Logig - Build Your Own Site & Monetize", 'es': "Logig - Crea tu propio sitio y monetiza",
|
|
24
|
+
'pt': "Logig - Crie seu próprio site e monetize", 'hi': "लॉजिक - अपनी 사이트 बनाएं하고 कमाई करें", 'ja': "Logig - 自分だけのサイトを作って収益化"
|
|
25
|
+
}],
|
|
26
|
+
[`https://spirit-browser.${base}`, `${cdn}/Spirit-Browser@main/img.png`, {
|
|
27
|
+
'ko': "Spirit Browser - 차세대 AI 웹 브라우저", 'en': "Spirit Browser - Next-Gen AI Web Browser", 'es': "Spirit Browser - Navegador web de IA",
|
|
28
|
+
'pt': "Spirit Browser - Navegador web de IA", 'hi': "स्पिरिट ब्राउज़र - अगली पीढ़ी का एआई ब्राउज़र", 'ja': "Spirit Browser - 次世代AIウェブブラウザ"
|
|
29
|
+
}],
|
|
30
|
+
[`https://addly.${base}`, `${cdn}/icons@main/logo/addlybear.png`, {
|
|
31
|
+
'ko': "애디베어 극가성비 배너 광고 마케팅", 'en': "Addly - Ultra Cost-Effective Banner Ad Marketing", 'es': "Addly - Marketing de anuncios ultra económico",
|
|
32
|
+
'pt': "Addly - Marketing de anúncios ultra económico", 'hi': "애डली - बेहद किफायती बैनर विज्ञापन विपणन", 'ja': "Addly - 超高コスパバナー広告"
|
|
33
|
+
}],
|
|
34
|
+
[`https://omap.${base}`, `${cdn}/icons@main/logo/omap120.png`, {
|
|
35
|
+
'ko': "온라인 부동산으로 수익내기 오맵 OMAP", 'en': "OMAP - Monetize with Online Real Estate", 'es': "OMAP - Monetiza con bienes raíces en línea",
|
|
36
|
+
'pt': "OMAP - Monetize com imóveis online", 'hi': "ओमैप - ऑनलाइन रियल एस्टेट से कमाई करें", 'ja': "OMAP - 온라인 부동산으로 수익화"
|
|
37
|
+
}]
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
let userLang = 'en';
|
|
41
|
+
const browserLang = (navigator.language || navigator.userLanguage || 'en').substring(0, 2).toLowerCase();
|
|
42
|
+
if (langs[browserLang]) {
|
|
43
|
+
userLang = browserLang;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
document.documentElement.lang = userLang;
|
|
47
|
+
document.title = langs[userLang][0];
|
|
48
|
+
|
|
49
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
50
|
+
let targetUrl = urlParams.get('url') || 'https://isai.kr/';
|
|
51
|
+
try {
|
|
52
|
+
new URL(targetUrl);
|
|
53
|
+
} catch (_) {
|
|
54
|
+
targetUrl = 'https://isai.kr/';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const encouragement = langs[userLang][1];
|
|
58
|
+
let progress = 10;
|
|
59
|
+
let clickCount = 0;
|
|
60
|
+
const progressBar = document.getElementById('progress-bar');
|
|
61
|
+
const progressText = document.getElementById('progress-text');
|
|
62
|
+
const loadingTrigger = document.getElementById('loading-trigger');
|
|
63
|
+
|
|
64
|
+
progressText.textContent = `${encouragement} (10%)`;
|
|
65
|
+
|
|
66
|
+
function updateProgress(value) {
|
|
67
|
+
progress = Math.min(value, 100);
|
|
68
|
+
progressBar.style.width = `${progress}%`;
|
|
69
|
+
|
|
70
|
+
if (progress >= 100) {
|
|
71
|
+
progressText.textContent = langs[userLang][2];
|
|
72
|
+
} else {
|
|
73
|
+
progressText.textContent = `${encouragement} (${progress}%)`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
loadingTrigger.addEventListener('click', () => {
|
|
78
|
+
clickCount++;
|
|
79
|
+
document.body.style.minHeight = `calc(100vh + ${clickCount * 60}px)`;
|
|
80
|
+
window.scrollBy({ top: 60, behavior: 'smooth' });
|
|
81
|
+
|
|
82
|
+
if (progress < 100) {
|
|
83
|
+
updateProgress(progress + 10);
|
|
84
|
+
} else {
|
|
85
|
+
window.location.href = targetUrl;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const listContainer = document.getElementById('list-container');
|
|
90
|
+
recommendItems.forEach(item => {
|
|
91
|
+
const url = item[0];
|
|
92
|
+
const img = item[1];
|
|
93
|
+
const name = item[2][userLang] || item[2]['en'];
|
|
94
|
+
|
|
95
|
+
const a = document.createElement('a');
|
|
96
|
+
a.href = url;
|
|
97
|
+
a.rel = "nofollow noopener noreferrer";
|
|
98
|
+
a.target = "_blank";
|
|
99
|
+
a.className = "flex items-center justify-between p-4 hover:bg-zinc-900/40 active:bg-zinc-900 transition duration-150 group w-full";
|
|
100
|
+
a.innerHTML = `
|
|
101
|
+
<div class="flex items-center space-x-3.5 min-w-0">
|
|
102
|
+
<img src="${img}" alt="Icon" class="w-12 h-12 object-cover rounded-xl shrink-0 group-hover:scale-[1.03] transition-transform duration-200">
|
|
103
|
+
<div class="flex flex-col min-w-0">
|
|
104
|
+
<span class="text-[13px] font-semibold text-slate-200 group-hover:text-white transition duration-150 truncate leading-snug">${name}</span>
|
|
105
|
+
<span class="text-[10px] text-zinc-500 mt-0.5 tracking-wide uppercase font-medium">Link</span>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="flex items-center justify-center w-7 h-7 rounded-full bg-zinc-900/50 group-hover:bg-zinc-800 border border-zinc-800 group-hover:border-zinc-700 transition duration-150 shrink-0 ml-3">
|
|
109
|
+
<svg class="w-3.5 h-3.5 text-zinc-400 group-hover:text-zinc-200 transition duration-150" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
|
|
110
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
|
|
111
|
+
</svg>
|
|
112
|
+
</div>
|
|
113
|
+
`;
|
|
114
|
+
listContainer.appendChild(a);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
118
|
+
const numChars = 10;
|
|
119
|
+
const container = document.body;
|
|
120
|
+
|
|
121
|
+
for (let i = 0; i < numChars; i++) {
|
|
122
|
+
const img = document.createElement("img");
|
|
123
|
+
let charId = Math.floor(Math.random() * 14) + 1;
|
|
124
|
+
img.src = `https://cdn.jsdelivr.net/gh/sllkx/icons@main/char/${charId}.png`;
|
|
125
|
+
img.alt = "bg-character";
|
|
126
|
+
img.style.position = "absolute";
|
|
127
|
+
img.style.zIndex = "1";
|
|
128
|
+
img.style.left = `${5 + Math.random() * 80}%`;
|
|
129
|
+
img.style.top = `${15 + Math.random() * 70}%`;
|
|
130
|
+
|
|
131
|
+
const scale = (0.7 + Math.random() * 0.6).toFixed(2);
|
|
132
|
+
const rotate = Math.floor(Math.random() * 70) - 35;
|
|
133
|
+
img.style.transform = `scale(${scale}) rotate(${rotate}deg)`;
|
|
134
|
+
img.className = "w-12 h-12 object-contain cursor-pointer select-none active:scale-95 transition duration-150";
|
|
135
|
+
|
|
136
|
+
img.addEventListener("click", function() {
|
|
137
|
+
charId = (charId % 14) + 1;
|
|
138
|
+
this.src = `https://cdn.jsdelivr.net/gh/sllkx/icons@main/char/${charId}.png`;
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
container.appendChild(img);
|
|
142
|
+
}
|
|
143
|
+
});
|
package/cdn/loading2.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const base = "isai.kr";
|
|
2
|
+
const cdn = "https://cdn.jsdelivr.net/gh/sllkx";
|
|
3
|
+
|
|
4
|
+
const langs = {
|
|
5
|
+
'ko': ['안전한 링크로 연결 중입니다...', '클릭해서 더 빠르게 연결!', '클릭하여 이동하기'],
|
|
6
|
+
'en': ['Connecting to a secure link...', 'Click to connect faster!', 'Click to continue!'],
|
|
7
|
+
'es': ['Conectando a un enlace seguro...', '¡Haz clic para conectar más rápido!', '¡Haz clic para continuar!'],
|
|
8
|
+
'pt': ['Conectando a um link seguro...', 'Clique para conectar mais rápido!', 'Clique para continuar!'],
|
|
9
|
+
'hi': ['एक सुरक्षित लिंक से जोड़ा जा रहा है...', 'तेज़ी से कनेक्ट करने के लिए क्लिक करें!', 'आगे बढ़ने के लिए क्लिक करें!'],
|
|
10
|
+
'ja': ['安全なリンクへ接続しています...', 'クリックして高速接続!', 'クリックして移動する']
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const recommendItems = [
|
|
14
|
+
[`https://ollapp.${base}`, `${cdn}/icons@main/logo/ring.jfif.png`, {
|
|
15
|
+
'ko': "내 앱 무료로 출시하기", 'en': "Publish My App for Free", 'es': "Publicar mi aplicación gratis",
|
|
16
|
+
'pt': "Publicar meu aplicativo grátis", 'hi': "अपना ऐप मुफ़्त में प्रकाशित करें", 'ja': "マイアプリ를 무료로 출시하기"
|
|
17
|
+
}],
|
|
18
|
+
[`https://isai.kr`, `${cdn}/icons@main/logo/isai2.png`, {
|
|
19
|
+
'ko': "이사이 무료 AI 채팅", 'en': "isai Free AI Chat", 'es': "isai Chat de IA gratis",
|
|
20
|
+
'pt': "isai Chat de IA grátis", 'hi': "इसई मुफ़्त 에이아이챗", 'ja': "isai無料AIチャット"
|
|
21
|
+
}],
|
|
22
|
+
[`https://logig.im`, `https://i.imgur.com/UWmM5Io.png`, {
|
|
23
|
+
'ko': "나만의 사이트 만들어서 수익내기 로긱", 'en': "Logig - Build Your Own Site & Monetize", 'es': "Logig - Crea tu propio sitio y monetiza",
|
|
24
|
+
'pt': "Logig - Crie seu próprio site e monetize", 'hi': "लॉजिक - अपनी 사이트 बनाएं하고 कमाई करें", 'ja': "Logig - 自分だけのサイトを作って収益化"
|
|
25
|
+
}],
|
|
26
|
+
[`https://spirit-browser.${base}`, `${cdn}/Spirit-Browser@main/img.png`, {
|
|
27
|
+
'ko': "Spirit Browser - 차세대 AI 웹 브라우저", 'en': "Spirit Browser - Next-Gen AI Web Browser", 'es': "Spirit Browser - Navegador web de IA",
|
|
28
|
+
'pt': "Spirit Browser - Navegador web de IA", 'hi': "स्पिरिट ब्राउज़र - अगली पीढ़ी का एआई ब्राउज़र", 'ja': "Spirit Browser - 次世代AIウェブブラウザ"
|
|
29
|
+
}],
|
|
30
|
+
[`https://addly.${base}`, `${cdn}/icons@main/logo/addlybear.png`, {
|
|
31
|
+
'ko': "애디베어 극가성비 배너 광고 마케팅", 'en': "Addly - Ultra Cost-Effective Banner Ad Marketing", 'es': "Addly - Marketing de anuncios ultra económico",
|
|
32
|
+
'pt': "Addly - Marketing de anúncios ultra económico", 'hi': "애डली - बेहद किफायती बैनर विज्ञापन विपणन", 'ja': "Addly - 超高コスパバナー広告"
|
|
33
|
+
}],
|
|
34
|
+
[`https://omap.${base}`, `${cdn}/icons@main/logo/omap120.png`, {
|
|
35
|
+
'ko': "온라인 부동산으로 수익내기 오맵 OMAP", 'en': "OMAP - Monetize with Online Real Estate", 'es': "OMAP - Monetiza con bienes raíces en línea",
|
|
36
|
+
'pt': "OMAP - Monetize com imóveis online", 'hi': "ओमैप - ऑनलाइन रियल एस्टेट से कमाई करें", 'ja': "OMAP - 온라인 부동산으로 수익화"
|
|
37
|
+
}]
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
let userLang = 'en';
|
|
41
|
+
const browserLang = (navigator.language || navigator.userLanguage || 'en').substring(0, 2).toLowerCase();
|
|
42
|
+
if (langs[browserLang]) {
|
|
43
|
+
userLang = browserLang;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
document.documentElement.lang = userLang;
|
|
47
|
+
document.title = langs[userLang][0];
|
|
48
|
+
|
|
49
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
50
|
+
let targetUrl = urlParams.get('url') || 'https://isai.kr/';
|
|
51
|
+
try {
|
|
52
|
+
new URL(targetUrl);
|
|
53
|
+
} catch (_) {
|
|
54
|
+
targetUrl = 'https://isai.kr/';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const encouragement = langs[userLang][1];
|
|
58
|
+
let progress = 10;
|
|
59
|
+
let clickCount = 0;
|
|
60
|
+
const progressBar = document.getElementById('progress-bar');
|
|
61
|
+
const progressText = document.getElementById('progress-text');
|
|
62
|
+
const loadingTrigger = document.getElementById('loading-trigger');
|
|
63
|
+
|
|
64
|
+
progressText.textContent = `${encouragement} (10%)`;
|
|
65
|
+
|
|
66
|
+
function updateProgress(value) {
|
|
67
|
+
progress = Math.min(value, 100);
|
|
68
|
+
progressBar.style.width = `${progress}%`;
|
|
69
|
+
|
|
70
|
+
if (progress >= 100) {
|
|
71
|
+
progressText.textContent = langs[userLang][2];
|
|
72
|
+
} else {
|
|
73
|
+
progressText.textContent = `${encouragement} (${progress}%)`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
loadingTrigger.addEventListener('click', () => {
|
|
78
|
+
clickCount++;
|
|
79
|
+
document.body.style.minHeight = `calc(100vh + ${clickCount * 60}px)`;
|
|
80
|
+
window.scrollBy({ top: 60, behavior: 'smooth' });
|
|
81
|
+
|
|
82
|
+
if (progress < 100) {
|
|
83
|
+
updateProgress(progress + 10);
|
|
84
|
+
} else {
|
|
85
|
+
// 기존 리다이렉트 코드(window.location.href = targetUrl;)를 주석 처리하여 이동하지 않게 만듭니다.
|
|
86
|
+
// window.location.href = targetUrl;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const listContainer = document.getElementById('list-container');
|
|
91
|
+
recommendItems.forEach(item => {
|
|
92
|
+
const url = item[0];
|
|
93
|
+
const img = item[1];
|
|
94
|
+
const name = item[2][userLang] || item[2]['en'];
|
|
95
|
+
|
|
96
|
+
const a = document.createElement('a');
|
|
97
|
+
a.href = url;
|
|
98
|
+
a.rel = "nofollow noopener noreferrer";
|
|
99
|
+
a.target = "_blank";
|
|
100
|
+
a.className = "flex items-center justify-between p-4 hover:bg-zinc-900/40 active:bg-zinc-900 transition duration-150 group w-full";
|
|
101
|
+
a.innerHTML = `
|
|
102
|
+
<div class="flex items-center space-x-3.5 min-w-0">
|
|
103
|
+
<img src="${img}" alt="Icon" class="w-12 h-12 object-cover rounded-xl shrink-0 group-hover:scale-[1.03] transition-transform duration-200">
|
|
104
|
+
<div class="flex flex-col min-w-0">
|
|
105
|
+
<span class="text-[13px] font-semibold text-slate-200 group-hover:text-white transition duration-150 truncate leading-snug">${name}</span>
|
|
106
|
+
<span class="text-[10px] text-zinc-500 mt-0.5 tracking-wide uppercase font-medium">Link</span>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
<div class="flex items-center justify-center w-7 h-7 rounded-full bg-zinc-900/50 group-hover:bg-zinc-800 border border-zinc-800 group-hover:border-zinc-700 transition duration-150 shrink-0 ml-3">
|
|
110
|
+
<svg class="w-3.5 h-3.5 text-zinc-400 group-hover:text-zinc-200 transition duration-150" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
|
|
111
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
|
|
112
|
+
</svg>
|
|
113
|
+
</div>
|
|
114
|
+
`;
|
|
115
|
+
listContainer.appendChild(a);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
119
|
+
const numChars = 10;
|
|
120
|
+
const container = document.body;
|
|
121
|
+
|
|
122
|
+
for (let i = 0; i < numChars; i++) {
|
|
123
|
+
const img = document.createElement("img");
|
|
124
|
+
let charId = Math.floor(Math.random() * 14) + 1;
|
|
125
|
+
img.src = `https://cdn.jsdelivr.net/gh/sllkx/icons@main/char/${charId}.png`;
|
|
126
|
+
img.alt = "bg-character";
|
|
127
|
+
img.style.position = "absolute";
|
|
128
|
+
img.style.zIndex = "1";
|
|
129
|
+
img.style.left = `${5 + Math.random() * 80}%`;
|
|
130
|
+
img.style.top = `${15 + Math.random() * 70}%`;
|
|
131
|
+
|
|
132
|
+
const scale = (0.7 + Math.random() * 0.6).toFixed(2);
|
|
133
|
+
const rotate = Math.floor(Math.random() * 70) - 35;
|
|
134
|
+
img.style.transform = `scale(${scale}) rotate(${rotate}deg)`;
|
|
135
|
+
img.className = "w-12 h-12 object-contain cursor-pointer select-none active:scale-95 transition duration-150";
|
|
136
|
+
|
|
137
|
+
img.addEventListener("click", function() {
|
|
138
|
+
charId = (charId % 14) + 1;
|
|
139
|
+
this.src = `https://cdn.jsdelivr.net/gh/sllkx/icons@main/char/${charId}.png`;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
container.appendChild(img);
|
|
143
|
+
}
|
|
144
|
+
});
|