x-block-lib 0.11.7 → 0.11.9
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/{en.ek9yugi6.js → en.e929s12a.js} +263 -9
- package/dist/{i18n-en.c3uxu3r5.js → i18n-en.o4ueycrn.js} +1 -1
- package/dist/{i18n-zhHans.hyv14btt.js → i18n-zhHans.b2uuecq7.js} +1 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.js +82 -92
- package/dist/{vendor.k3ftbehq.js → vendor.eb5jfwqa.js} +1 -1
- package/dist/{zhHans.e42r5aas.js → zhHans.c7mba28i.js} +265 -11
- package/package.json +1 -1
|
@@ -1,13 +1,87 @@
|
|
|
1
1
|
//#region src/core/locale/msg/en.ts
|
|
2
|
-
|
|
2
|
+
const blockly = {
|
|
3
3
|
ADD_COMMENT: "Add Comment",
|
|
4
|
-
|
|
4
|
+
ALT_KEY: "Alt",
|
|
5
|
+
ANNOUNCE_CANT_SCROLL_FURTHER: "Can't scroll further.",
|
|
6
|
+
ANNOUNCE_MOVE_AFTER: "Moving %1 after %2.",
|
|
7
|
+
ANNOUNCE_MOVE_AROUND: "Moving %1 around %2.",
|
|
8
|
+
ANNOUNCE_MOVE_BEFORE: "Moving %1 before %2.",
|
|
9
|
+
ANNOUNCE_MOVE_CANCELED: "Canceled movement.",
|
|
10
|
+
ANNOUNCE_MOVE_INSIDE: "Moving %1 inside %2.",
|
|
11
|
+
ANNOUNCE_MOVE_OF: "%1 of %2",
|
|
12
|
+
ANNOUNCE_MOVE_TO: "Moving %1 to %2.",
|
|
13
|
+
ANNOUNCE_MOVE_WORKSPACE: "Moving %1 on workspace.",
|
|
14
|
+
ANNOUNCE_SCROLLED_DOWN: "Scrolled down.",
|
|
15
|
+
ANNOUNCE_SCROLLED_LEFT: "Scrolled left.",
|
|
16
|
+
ANNOUNCE_SCROLLED_RIGHT: "Scrolled right.",
|
|
17
|
+
ANNOUNCE_SCROLLED_UP: "Scrolled up.",
|
|
18
|
+
ARIA_LABEL_ADD_ELSE_IF: "Add else if",
|
|
19
|
+
ARIA_LABEL_ADD_INPUT: "Add input",
|
|
20
|
+
ARIA_LABEL_ADD_LIST_ITEM: "Add list item",
|
|
21
|
+
ARIA_LABEL_ADD_TEXT: "Add text",
|
|
22
|
+
ARIA_LABEL_BUTTON: "button",
|
|
23
|
+
ARIA_LABEL_COMMENT: "Comment",
|
|
24
|
+
ARIA_LABEL_COMMENT_COLLAPSE: "Collapse Comment",
|
|
25
|
+
ARIA_LABEL_COMMENT_EXPAND: "Expand Comment",
|
|
26
|
+
ARIA_LABEL_FIELD_ANGLE: "%1 degrees",
|
|
27
|
+
ARIA_LABEL_HEADING: "heading",
|
|
28
|
+
ARIA_LABEL_REMOVE_ELSE_IF: "Remove else if",
|
|
29
|
+
ARIA_LABEL_REMOVE_INPUT: "Remove input",
|
|
30
|
+
ARIA_LABEL_REMOVE_LIST_ITEM: "Remove list item",
|
|
31
|
+
ARIA_LABEL_REMOVE_TEXT: "Remove text",
|
|
32
|
+
ARIA_LABEL_TRASH_EMPTY: "Trash, currently empty",
|
|
33
|
+
ARIA_TYPE_FIELD_ANGLE: "angle",
|
|
34
|
+
ARIA_TYPE_FIELD_BITMAP: "pixel image",
|
|
35
|
+
ARIA_TYPE_FIELD_CHECKBOX: "checkbox",
|
|
36
|
+
ARIA_TYPE_FIELD_COLOUR: "color",
|
|
37
|
+
ARIA_TYPE_FIELD_DATE: "date",
|
|
38
|
+
ARIA_TYPE_FIELD_DROPDOWN: "dropdown",
|
|
39
|
+
ARIA_TYPE_FIELD_GRID: "grid dropdown",
|
|
40
|
+
ARIA_TYPE_FIELD_IMAGE: "image",
|
|
41
|
+
ARIA_TYPE_FIELD_INPUT: "input",
|
|
42
|
+
ARIA_TYPE_FIELD_NUMBER: "number",
|
|
43
|
+
ARIA_TYPE_FIELD_TEXT_INPUT: "text",
|
|
44
|
+
ARIA_TYPE_FIELD_TEXT_INPUT_ARGUMENT: "input name",
|
|
45
|
+
ARIA_TYPE_FIELD_TEXT_INPUT_PROCEDURE: "function name",
|
|
46
|
+
BACKSPACE_KEY: "Backspace",
|
|
47
|
+
BLOCK_LABEL_BEGIN_PREFIX: "Begin %1",
|
|
48
|
+
BLOCK_LABEL_BEGIN_STACK: "Begin stack",
|
|
49
|
+
BLOCK_LABEL_COLLAPSED: "collapsed",
|
|
50
|
+
BLOCK_LABEL_CONTAINER: "container",
|
|
51
|
+
BLOCK_LABEL_DISABLED: "disabled",
|
|
52
|
+
BLOCK_LABEL_HAS_BRANCHES: "has %1 branches",
|
|
53
|
+
BLOCK_LABEL_HAS_INPUT: "has input",
|
|
54
|
+
BLOCK_LABEL_HAS_INPUTS: "has inputs",
|
|
55
|
+
BLOCK_LABEL_REPLACEABLE: "replaceable",
|
|
56
|
+
BLOCK_LABEL_STACK_BLOCKS: "%1 stack blocks",
|
|
57
|
+
BLOCK_LABEL_STATEMENT: "statement",
|
|
58
|
+
BLOCK_LABEL_TOOLBOX_CATEGORY: "%1 category",
|
|
59
|
+
BLOCK_LABEL_VALUE: "value",
|
|
60
|
+
BUBBLE_LABEL_COMMENT: "Comment: %1",
|
|
61
|
+
BUBBLE_LABEL_DEFAULT: "Bubble",
|
|
62
|
+
BUBBLE_LABEL_WARNING: "Warning: %1",
|
|
63
|
+
CANNOT_DELETE_VARIABLE_PROCEDURE: "Can't delete the variable '%1' because it's part of the definition of the function '%2'",
|
|
64
|
+
CAPS_LOCK_KEY: "Caps Lock",
|
|
65
|
+
CHANGE_VALUE_TITLE: "Change value:",
|
|
66
|
+
CHROME_OS: "ChromeOS",
|
|
67
|
+
CLEAN_UP: "Clean up Blocks",
|
|
68
|
+
CLOSE: "Close",
|
|
69
|
+
CLOSE_BACKPACK: "Close backpack",
|
|
5
70
|
COLLAPSED_WARNINGS_WARNING: "Collapsed blocks contain warnings.",
|
|
6
|
-
COLLAPSE_ALL: "Collapse
|
|
71
|
+
COLLAPSE_ALL: "Collapse Blocks",
|
|
7
72
|
COLLAPSE_BLOCK: "Collapse Block",
|
|
73
|
+
COMMAND_KEY: "Command",
|
|
74
|
+
CONTEXT_MENU_KEY: "≣ Menu",
|
|
75
|
+
CONTROL_KEY: "Control",
|
|
76
|
+
COPY_ALL_TO_BACKPACK: "Copy All Blocks to Backpack",
|
|
77
|
+
COPY_SHORTCUT: "Copy",
|
|
78
|
+
COPY_TO_BACKPACK: "Copy to Backpack",
|
|
79
|
+
CURRENT_BLOCK_ANNOUNCEMENT: "Current block: %1",
|
|
80
|
+
CUT_SHORTCUT: "Cut",
|
|
8
81
|
DELETE_ALL_BLOCKS: "Delete all %1 blocks?",
|
|
9
82
|
DELETE_BLOCK: "Delete Block",
|
|
10
|
-
|
|
83
|
+
DELETE_KEY: "Delete",
|
|
84
|
+
DELETE_VARIABLE: "Delete the '%1' variable",
|
|
11
85
|
DELETE_VARIABLE_CONFIRMATION: "Delete %1 uses of the '%2' variable?",
|
|
12
86
|
DELETE_X_BLOCKS: "Delete %1 Blocks",
|
|
13
87
|
DIALOG_CANCEL: "Cancel",
|
|
@@ -15,22 +89,202 @@ var en_default = {
|
|
|
15
89
|
DISABLE_BLOCK: "Disable Block",
|
|
16
90
|
DUPLICATE_BLOCK: "Duplicate",
|
|
17
91
|
DUPLICATE_COMMENT: "Duplicate Comment",
|
|
92
|
+
EDIT_BLOCK_CONTENTS: "Edit Block contents",
|
|
93
|
+
EMPTY_BACKPACK: "Empty Backpack",
|
|
18
94
|
ENABLE_BLOCK: "Enable Block",
|
|
19
|
-
|
|
95
|
+
END_KEY: "End",
|
|
96
|
+
ENTER_KEY: "Enter",
|
|
97
|
+
ESCAPE: "Escape",
|
|
98
|
+
EXPAND_ALL: "Expand Blocks",
|
|
20
99
|
EXPAND_BLOCK: "Expand Block",
|
|
21
100
|
EXTERNAL_INPUTS: "External Inputs",
|
|
101
|
+
FIELD_BITMAP_ARIA_VALUE: "%1 by %2, %3 pixels on",
|
|
102
|
+
FIELD_BITMAP_BUTTON_LABEL_CLEAR: "Clear",
|
|
103
|
+
FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE: "Randomize",
|
|
104
|
+
FIELD_BITMAP_PIXEL_LABEL: "%1, row %2, column %3",
|
|
105
|
+
FIELD_BITMAP_PIXEL_OFF: "off",
|
|
106
|
+
FIELD_BITMAP_PIXEL_ON: "on",
|
|
107
|
+
FIELD_LABEL_CHECKBOX_CHECKED: "Checked",
|
|
108
|
+
FIELD_LABEL_CHECKBOX_UNCHECKED: "Not checked",
|
|
109
|
+
FIELD_LABEL_EDIT_PREFIX: "Edit %1",
|
|
110
|
+
FIELD_LABEL_EMPTY: "empty",
|
|
111
|
+
FIELD_LABEL_OPTION_INDEX: "Option %1",
|
|
112
|
+
FIELD_LABEL_VARIABLE: "Variable '%1'",
|
|
113
|
+
FIELD_MULTILINEINPUT_FINISH_EDITING: "Finish editing",
|
|
114
|
+
FIELD_MULTILINEINPUT_NEW_LINE: "New line",
|
|
22
115
|
HELP: "Help",
|
|
116
|
+
HELP_PROMPT: "Press %1 for help on keyboard controls.",
|
|
117
|
+
HOME_KEY: "Home",
|
|
118
|
+
ICON_LABEL_COMMENT_CLOSED: "Open Comment",
|
|
119
|
+
ICON_LABEL_COMMENT_OPEN: "Close Comment",
|
|
120
|
+
ICON_LABEL_DEFAULT: "Icon",
|
|
121
|
+
ICON_LABEL_MUTATOR_CLOSED: "Edit this block",
|
|
122
|
+
ICON_LABEL_MUTATOR_OPEN: "Close block editor",
|
|
123
|
+
ICON_LABEL_WARNING_CLOSED: "Open Warning",
|
|
124
|
+
ICON_LABEL_WARNING_OPEN: "Close Warning",
|
|
23
125
|
INLINE_INPUTS: "Inline Inputs",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
126
|
+
INPUT_LABEL_CONDITION: "condition",
|
|
127
|
+
INPUT_LABEL_CONDITION_A: "first condition",
|
|
128
|
+
INPUT_LABEL_CONDITION_B: "second condition",
|
|
129
|
+
INPUT_LABEL_EMPTY: "Empty",
|
|
130
|
+
INPUT_LABEL_END_STATEMENT: "End %1",
|
|
131
|
+
INPUT_LABEL_INDEX: "input %1",
|
|
132
|
+
INPUT_LABEL_LISTS_CREATE_WITH_ITEM: "value %1",
|
|
133
|
+
INPUT_LABEL_LISTS_DELIMITER: "delimiter",
|
|
134
|
+
INPUT_LABEL_LISTS_END_POSITION: "end position",
|
|
135
|
+
INPUT_LABEL_LISTS_LIST_FROM_TEXT: "text to split",
|
|
136
|
+
INPUT_LABEL_LISTS_POSITION: "position within list",
|
|
137
|
+
INPUT_LABEL_LISTS_REPEAT_ITEM: "value to repeat",
|
|
138
|
+
INPUT_LABEL_LISTS_REPEAT_NUM: "number of times to repeat",
|
|
139
|
+
INPUT_LABEL_LISTS_START_POSITION: "start position",
|
|
140
|
+
INPUT_LABEL_LISTS_TEXT_FROM_LIST: "list to join",
|
|
141
|
+
INPUT_LABEL_LISTS_TO_CHANGE: "list to change",
|
|
142
|
+
INPUT_LABEL_LISTS_TO_CHECK: "list to check",
|
|
143
|
+
INPUT_LABEL_LISTS_VALUE_TO_SET: "value to set",
|
|
144
|
+
INPUT_LABEL_LOOP_BY: "increment",
|
|
145
|
+
INPUT_LABEL_LOOP_FROM: "starting number",
|
|
146
|
+
INPUT_LABEL_LOOP_LIST: "list to iterate over",
|
|
147
|
+
INPUT_LABEL_LOOP_TIMES: "number of times to repeat",
|
|
148
|
+
INPUT_LABEL_LOOP_TO: "ending number",
|
|
149
|
+
INPUT_LABEL_MATH_CHANGE_BY: "amount to change by",
|
|
150
|
+
INPUT_LABEL_MATH_CONSTRAIN_VALUE: "number to constrain",
|
|
151
|
+
INPUT_LABEL_MATH_DIVIDEND: "dividend",
|
|
152
|
+
INPUT_LABEL_MATH_DIVISOR: "divisor",
|
|
153
|
+
INPUT_LABEL_NUMBER: "number",
|
|
154
|
+
INPUT_LABEL_NUMBER_A: "first number",
|
|
155
|
+
INPUT_LABEL_NUMBER_ATAN2_X: "x coordinate",
|
|
156
|
+
INPUT_LABEL_NUMBER_ATAN2_Y: "y coordinate",
|
|
157
|
+
INPUT_LABEL_NUMBER_B: "second number",
|
|
158
|
+
INPUT_LABEL_NUMBER_LIST: "list of numbers",
|
|
159
|
+
INPUT_LABEL_NUMBER_MAX: "maximum",
|
|
160
|
+
INPUT_LABEL_NUMBER_MIN: "minimum",
|
|
161
|
+
INPUT_LABEL_NUMBER_TO_CHECK: "number to check",
|
|
162
|
+
INPUT_LABEL_STATEMENT: "statement position",
|
|
163
|
+
INPUT_LABEL_TEXT_APPEND: "value to append",
|
|
164
|
+
INPUT_LABEL_TEXT_END_POSITION: "end position",
|
|
165
|
+
INPUT_LABEL_TEXT_JOIN_ITEM: "value %1",
|
|
166
|
+
INPUT_LABEL_TEXT_POSITION: "letter position",
|
|
167
|
+
INPUT_LABEL_TEXT_PROMPT_MESSAGE: "message",
|
|
168
|
+
INPUT_LABEL_TEXT_START_POSITION: "start position",
|
|
169
|
+
INPUT_LABEL_TEXT_TO_CHANGE: "text to change",
|
|
170
|
+
INPUT_LABEL_TEXT_TO_CHECK: "text to check",
|
|
171
|
+
INPUT_LABEL_TEXT_TO_FIND: "text to find",
|
|
172
|
+
INPUT_LABEL_TEXT_TO_REPLACE: "text to replace",
|
|
173
|
+
INPUT_LABEL_VALUE: "value position",
|
|
174
|
+
INPUT_LABEL_VALUE_A: "first value",
|
|
175
|
+
INPUT_LABEL_VALUE_B: "second value",
|
|
176
|
+
INPUT_LABEL_VARIABLES_SET: "value to set",
|
|
177
|
+
INSERT_KEY: "Insert",
|
|
178
|
+
KEYBOARD_NAV_BLOCK_NAVIGATION_HINT: "Use %1 to navigate inside of blocks.",
|
|
179
|
+
KEYBOARD_NAV_CONSTRAINED_MOVE_HINT: "Use the arrow keys to move, then %1 to accept the position.",
|
|
180
|
+
KEYBOARD_NAV_COPIED_HINT: "Copied. Press %1 to paste.",
|
|
181
|
+
KEYBOARD_NAV_CUT_HINT: "Cut. Press %1 to paste.",
|
|
182
|
+
KEYBOARD_NAV_FLYOUT_LABEL_HINT: "Use the arrow keys to navigate to a block, or press %1 to go to the next heading.",
|
|
183
|
+
KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT: "Hold %1 and use arrow keys to move freely, then %2 to accept the position.",
|
|
184
|
+
KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT: "Use the arrow keys to navigate.",
|
|
185
|
+
LINUX: "Linux",
|
|
186
|
+
MAC_OS: "macOS",
|
|
187
|
+
MINIMAP_ARIA_LABEL: "Workspace minimap. Use the arrow keys to pan the workspace.",
|
|
188
|
+
MOVE_BLOCK: "Move Block",
|
|
189
|
+
NEW_COLOUR_VARIABLE: "Create colour variable...",
|
|
190
|
+
NEW_NUMBER_VARIABLE: "Create number variable...",
|
|
191
|
+
NEW_STRING_VARIABLE: "Create string variable...",
|
|
192
|
+
NEW_VARIABLE: "Create variable...",
|
|
193
|
+
NEW_VARIABLE_TITLE: "New variable name:",
|
|
194
|
+
NEW_VARIABLE_TYPE_TITLE: "New variable type:",
|
|
195
|
+
NO_PARENT_ANNOUNCEMENT: "Current block has no parent",
|
|
196
|
+
OPEN_BACKPACK: "Open backpack",
|
|
197
|
+
OPEN_TRASH: "Open trash",
|
|
198
|
+
OPTION_KEY: "Option",
|
|
199
|
+
ORDINAL_NUMBER_SUFFIX: "",
|
|
200
|
+
PAGE_DOWN_KEY: "Page Down",
|
|
201
|
+
PAGE_UP_KEY: "Page Up",
|
|
202
|
+
PARENT_BLOCKS_ANNOUNCEMENT: "Parent blocks: %1",
|
|
203
|
+
PASTE_ALL_FROM_BACKPACK: "Paste All Blocks from Backpack",
|
|
204
|
+
PASTE_SHORTCUT: "Paste",
|
|
205
|
+
PAUSE_KEY: "Pause",
|
|
27
206
|
REDO: "Redo",
|
|
28
207
|
REMOVE_COMMENT: "Remove Comment",
|
|
29
|
-
|
|
208
|
+
REMOVE_FROM_BACKPACK: "Remove from Backpack",
|
|
209
|
+
RENAME_VARIABLE: "Rename the '%1' variable",
|
|
30
210
|
RENAME_VARIABLE_TITLE: "Rename all '%1' variables to:",
|
|
211
|
+
RESET_ZOOM: "Reset zoom",
|
|
212
|
+
SCREENREADER_HINT: "Use the arrow keys to navigate. Press %1 to toggle screenreader accessibility mode.",
|
|
213
|
+
SCREENREADER_MODE_DISABLED: "Screenreader mode is off, press %1 to turn it on",
|
|
214
|
+
SCREENREADER_MODE_ENABLED: "Screenreader mode is on, press %1 to turn it off",
|
|
215
|
+
SHIFT_KEY: "Shift",
|
|
216
|
+
SHORTCUTS_ABORT_MOVE: "Abort move",
|
|
217
|
+
SHORTCUTS_CLEANUP: "Clean up workspace",
|
|
218
|
+
SHORTCUTS_CODE_NAVIGATION: "Code navigation",
|
|
219
|
+
SHORTCUTS_DELETE: "Delete",
|
|
220
|
+
SHORTCUTS_DISCONNECT: "Disconnect block",
|
|
221
|
+
SHORTCUTS_DUPLICATE: "Duplicate",
|
|
222
|
+
SHORTCUTS_EDITING: "Editing",
|
|
223
|
+
SHORTCUTS_ESCAPE: "Exit",
|
|
224
|
+
SHORTCUTS_EXTENDED_INFORMATION: "Announce detailed information",
|
|
225
|
+
SHORTCUTS_FINISH_MOVE: "Finish move",
|
|
226
|
+
SHORTCUTS_FOCUS_TOOLBOX: "Focus toolbox",
|
|
227
|
+
SHORTCUTS_FOCUS_WORKSPACE: "Focus workspace",
|
|
228
|
+
SHORTCUTS_GENERAL: "General",
|
|
229
|
+
SHORTCUTS_INFORMATION: "Announce information",
|
|
230
|
+
SHORTCUTS_JUMP_BLOCK_END: "Jump to block end",
|
|
231
|
+
SHORTCUTS_JUMP_BLOCK_START: "Jump to block start",
|
|
232
|
+
SHORTCUTS_JUMP_BOTTOM_STACK: "Jump to bottom of stack",
|
|
233
|
+
SHORTCUTS_JUMP_FIRST_BLOCK: "Jump to first block",
|
|
234
|
+
SHORTCUTS_JUMP_LAST_BLOCK: "Jump to last block",
|
|
235
|
+
SHORTCUTS_JUMP_NEXT_PAGE: "Jump to next page",
|
|
236
|
+
SHORTCUTS_JUMP_PREVIOUS_PAGE: "Jump to previous page",
|
|
237
|
+
SHORTCUTS_JUMP_TOP_STACK: "Jump to top of stack",
|
|
238
|
+
SHORTCUTS_MOVE_DOWN: "Move down",
|
|
239
|
+
SHORTCUTS_MOVE_LEFT: "Move left",
|
|
240
|
+
SHORTCUTS_MOVE_RIGHT: "Move right",
|
|
241
|
+
SHORTCUTS_MOVE_UP: "Move up",
|
|
242
|
+
SHORTCUTS_NEXT_HEADING: "Next heading",
|
|
243
|
+
SHORTCUTS_NEXT_STACK: "Next stack",
|
|
244
|
+
SHORTCUTS_PERFORM_ACTION: "Edit or confirm",
|
|
245
|
+
SHORTCUTS_PREVIOUS_HEADING: "Previous heading",
|
|
246
|
+
SHORTCUTS_PREVIOUS_STACK: "Previous stack",
|
|
247
|
+
SHORTCUTS_SCROLL_DOWN: "Scroll down",
|
|
248
|
+
SHORTCUTS_SCROLL_LEFT: "Scroll left",
|
|
249
|
+
SHORTCUTS_SCROLL_RIGHT: "Scroll right",
|
|
250
|
+
SHORTCUTS_SCROLL_UP: "Scroll up",
|
|
251
|
+
SHORTCUTS_SHOW_CONTEXT_MENU: "Show menu",
|
|
252
|
+
SHORTCUTS_SHOW_TOOLTIP: "Show tooltip",
|
|
253
|
+
SHORTCUTS_START_MOVE: "Start move",
|
|
254
|
+
SHORTCUTS_START_MOVE_STACK: "Start move stack",
|
|
255
|
+
SHORTCUTS_TOGGLE_SCREENREADER_MODE: "Toggle screenreader mode",
|
|
256
|
+
SPACE_KEY: "Space",
|
|
257
|
+
TAB_KEY: "Tab",
|
|
31
258
|
TODAY: "Today",
|
|
32
259
|
UNDO: "Undo",
|
|
260
|
+
UNKNOWN: "Unknown",
|
|
33
261
|
UNNAMED_KEY: "unnamed",
|
|
262
|
+
WINDOWS: "Windows",
|
|
263
|
+
WORKSPACE_COMMENT_DEFAULT_TEXT: "Say something...",
|
|
264
|
+
WORKSPACE_CONTENTS_BLOCKS_MANY: "%1 stacks of blocks%2 in workspace.",
|
|
265
|
+
WORKSPACE_CONTENTS_BLOCKS_ONE: "One stack of blocks%2 in workspace.",
|
|
266
|
+
WORKSPACE_CONTENTS_BLOCKS_ZERO: "No blocks%2 in workspace.",
|
|
267
|
+
WORKSPACE_CONTENTS_COMMENTS_MANY: " and %1 comments",
|
|
268
|
+
WORKSPACE_CONTENTS_COMMENTS_ONE: " and one comment",
|
|
269
|
+
WORKSPACE_LABEL_1_STACK: "1 stack of blocks",
|
|
270
|
+
WORKSPACE_LABEL_FLYOUT_WORKSPACE: "%1 blocks",
|
|
271
|
+
WORKSPACE_LABEL_MANY_STACKS: "%1 stacks of blocks",
|
|
272
|
+
WORKSPACE_LABEL_MUTATOR_WORKSPACE: "Block editor workspace",
|
|
273
|
+
WORKSPACE_LABEL_PLAIN: "Blocks workspace.",
|
|
274
|
+
WORKSPACE_ROLEDESCRIPTION: "workspace",
|
|
275
|
+
WORKSPACE_SEARCH_CLOSE: "Close search bar",
|
|
276
|
+
WORKSPACE_SEARCH_FIND_NEXT: "Find next",
|
|
277
|
+
WORKSPACE_SEARCH_FIND_PREVIOUS: "Find previous",
|
|
278
|
+
WORKSPACE_SEARCH_INPUT_LABEL: "Search workspace. Press Enter for the next match, Shift+Enter for the previous match. Press Escape to close search and focus the current match.",
|
|
279
|
+
WORKSPACE_SEARCH_MATCH: "Match %1 of %2: %3",
|
|
280
|
+
WORKSPACE_SEARCH_NO_MATCHES: "No matching blocks",
|
|
281
|
+
WORKSPACE_SEARCH_PLACEHOLDER: "Search",
|
|
282
|
+
ZOOM_IN: "Zoom in",
|
|
283
|
+
ZOOM_OUT: "Zoom out",
|
|
284
|
+
ZOOM_TO_FIT_ARIA_LABEL: "Zoom to fit"
|
|
285
|
+
};
|
|
286
|
+
var en_default = {
|
|
287
|
+
...blockly,
|
|
34
288
|
CROSS_TAB_COPY: "Copy (Paste)",
|
|
35
289
|
CROSS_TAB_PASTE: "Paste",
|
|
36
290
|
NO_OPTION: "No Option",
|
|
@@ -4,13 +4,13 @@ import { n as __exportAll } from "./rolldown-runtime.d6iwd7kf.js";
|
|
|
4
4
|
var en_exports = /* @__PURE__ */ __exportAll({ default: () => en_default });
|
|
5
5
|
var en_default = { "x-block-lib": {
|
|
6
6
|
bind: "Bind",
|
|
7
|
-
dlg: { source: { title: "Source" } },
|
|
8
7
|
funcEntry: "Func Entry",
|
|
9
8
|
implementMethod: "Implement Method",
|
|
10
9
|
msg: { cannotOperateInLockedState: "Cannot operate in locked state" },
|
|
11
10
|
navigator: "Navigator",
|
|
12
11
|
noOption: "No Option",
|
|
13
12
|
procedure: "Procedure",
|
|
13
|
+
source: "Source",
|
|
14
14
|
temporaryBlock: "Temporary Block",
|
|
15
15
|
tip: {
|
|
16
16
|
hotkeyCtrlE: "Press 'Ctrl W' to navigate",
|
|
@@ -4,13 +4,13 @@ import { n as __exportAll } from "./rolldown-runtime.d6iwd7kf.js";
|
|
|
4
4
|
var zhHans_exports = /* @__PURE__ */ __exportAll({ default: () => zhHans_default });
|
|
5
5
|
var zhHans_default = { "x-block-lib": {
|
|
6
6
|
bind: "绑定",
|
|
7
|
-
dlg: { source: { title: "源代码" } },
|
|
8
7
|
funcEntry: "函数入口",
|
|
9
8
|
implementMethod: "实现方法",
|
|
10
9
|
msg: { cannotOperateInLockedState: "锁定状态下不能操作" },
|
|
11
10
|
navigator: "导航器",
|
|
12
11
|
noOption: "没有选项",
|
|
13
12
|
procedure: "过程",
|
|
13
|
+
source: "源代码",
|
|
14
14
|
temporaryBlock: "临时块",
|
|
15
15
|
tip: {
|
|
16
16
|
hotkeyCtrlE: "按「Ctrl E」导航",
|
package/dist/index.d.ts
CHANGED
|
@@ -68,6 +68,12 @@ type __VLS_Props = {
|
|
|
68
68
|
locale: string;
|
|
69
69
|
dark: boolean;
|
|
70
70
|
};
|
|
71
|
+
declare function load(state: any): void;
|
|
72
|
+
declare function save(): any;
|
|
73
|
+
declare function appendBlock(state: any): void;
|
|
74
|
+
declare function generateCode(): string | undefined;
|
|
75
|
+
declare function generateReactivity(): import("x-runtime-lib").Reactivity;
|
|
76
|
+
declare function fireStateChange(): void;
|
|
71
77
|
type __VLS_ModelProps = {
|
|
72
78
|
'lock': boolean;
|
|
73
79
|
'scale': number;
|
|
@@ -79,12 +85,12 @@ type __VLS_Slots = {} & {
|
|
|
79
85
|
};
|
|
80
86
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
|
|
81
87
|
loading: import("vue").Ref<boolean, boolean>;
|
|
82
|
-
load:
|
|
83
|
-
save:
|
|
84
|
-
appendBlock:
|
|
85
|
-
generateCode:
|
|
86
|
-
generateReactivity:
|
|
87
|
-
fireStateChange:
|
|
88
|
+
load: typeof load;
|
|
89
|
+
save: typeof save;
|
|
90
|
+
appendBlock: typeof appendBlock;
|
|
91
|
+
generateCode: typeof generateCode;
|
|
92
|
+
generateReactivity: typeof generateReactivity;
|
|
93
|
+
fireStateChange: typeof fireStateChange;
|
|
88
94
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
89
95
|
"update:lock": (value: boolean) => any;
|
|
90
96
|
"update:scale": (value: number) => any;
|
|
@@ -107,11 +113,6 @@ declare const install: (app: App) => void;
|
|
|
107
113
|
export declare function loadLocaleMessageBlock(locale: string): Promise<{
|
|
108
114
|
'x-block-lib': {
|
|
109
115
|
bind: string;
|
|
110
|
-
dlg: {
|
|
111
|
-
source: {
|
|
112
|
-
title: string;
|
|
113
|
-
};
|
|
114
|
-
};
|
|
115
116
|
funcEntry: string;
|
|
116
117
|
implementMethod: string;
|
|
117
118
|
msg: {
|
|
@@ -120,6 +121,7 @@ export declare function loadLocaleMessageBlock(locale: string): Promise<{
|
|
|
120
121
|
navigator: string;
|
|
121
122
|
noOption: string;
|
|
122
123
|
procedure: string;
|
|
124
|
+
source: string;
|
|
123
125
|
temporaryBlock: string;
|
|
124
126
|
tip: {
|
|
125
127
|
hotkeyCtrlE: string;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(function(){try{document.getElementById(`x-block-lib`)?.remove();const e = document.createElement(`style`);e.setAttribute(`id`, `x-block-lib`);const t = document.createTextNode(`.ghost[data-v-x-block-lib-ca7316a0]{opacity:.4;pointer-events:none}.blocklyToolbox{width:56px;overflow-x:hidden}.blocklyMainBackground{stroke-width:0}.blocklyToolboxCategory{margin-bottom:12px!important}.blocklyToolboxCategoryIcon{display:none!important}.blocklyTreeRowContentContainer{place-items:center;height:28px;display:flex;overflow:hidden}.blocklyFlyout{z-index:21}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#444;background:#f3f3f3}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}`);e.appendChild(t);document.head.appendChild(e);}catch(e){console.error('rolldown-plugin-inject-css', e);}})()
|
|
2
|
-
import { A as Names, B as defineBlocksWithJsonArray, C as FieldCheckbox, D as FieldNumber, E as FieldLabel, F as Themes, G as inject$1, H as getMainWorkspace, I as Variables, J as serialization, K as inputs, L as WorkspaceSvg, M as ShortcutItems, N as ShortcutRegistry, O as FieldTextInput, P as Theme,
|
|
2
|
+
import { A as Names, B as defineBlocksWithJsonArray, C as FieldCheckbox, D as FieldNumber, E as FieldLabel, F as Themes, G as inject$1, H as getMainWorkspace, I as Variables, J as serialization, K as inputs, L as WorkspaceSvg, M as ShortcutItems, N as ShortcutRegistry, O as FieldTextInput, P as Theme, R as Xml, S as Extensions, T as FieldImage, U as getSelected, V as dialog, W as icons, X as svgResize, Y as setLocale$1, Z as utils, _ as javascriptGenerator, a as lo, b as ContextMenuRegistry, c as encodeString, d as snakeCase, f as parseInt$1, g as Order, h as cloneDeep, i as require_dist$2, j as Procedures, k as Msg, l as require_dist, m as debounce, n as o, o as useResizeObserver, p as isEqual, q as registry, r as core_default, s as require_dist$1, t as javascript, u as upperCase, v as Blocks, w as FieldDropdown, x as Events, y as ContextMenu, z as common } from "./vendor.eb5jfwqa.js";
|
|
3
3
|
import { eventBus, globalObjects, messageWarning, openConfirmDlg, openPromptDlg, useColor, useSystem, useViewStack } from "x-essential-lib";
|
|
4
4
|
import { globalState } from "x-state-lib";
|
|
5
5
|
import { addIndent, finalProperties, getElement, getImplementMethodName, getItems, getTag, getTypes, makeEventId, makeEventKeyOfCustomSlot, makeEventKeyOfElementSlot, makeMethodId, makeMethodKeyOfCustomSlot, makeMethodKeyOfElementSlot, makePropertyId, makePropertyKeyOfCustomSlot, makePropertyKeyOfElementSlot, makeTriggerId, parseNumberUnit, pkgs, themeColors, toEventName, toMethodName, toPropertyName, unwrapEventId, unwrapEventKeyOfCustomSlot, unwrapEventKeyOfElementSlot, unwrapMethodId, unwrapMethodKeyOfCustomSlot, unwrapMethodKeyOfElementSlot, unwrapPropertyId, unwrapPropertyKeyOfCustomSlot, unwrapPropertyKeyOfElementSlot, unwrapSlotId } from "x-runtime-lib";
|
|
@@ -9,8 +9,8 @@ import { useDisplay } from "vuetify";
|
|
|
9
9
|
|
|
10
10
|
//#region src/core/locale/index.ts
|
|
11
11
|
async function setLocale(locale) {
|
|
12
|
-
if (locale === "en") setLocale$1((await import("./en.
|
|
13
|
-
else if (locale === "zhHans") setLocale$1((await import("./zhHans.
|
|
12
|
+
if (locale === "en") setLocale$1((await import("./en.e929s12a.js")).default);
|
|
13
|
+
else if (locale === "zhHans") setLocale$1((await import("./zhHans.c7mba28i.js")).default);
|
|
14
14
|
else throw new Error(`invalid locale=${locale}`);
|
|
15
15
|
}
|
|
16
16
|
function localeMsg(key) {
|
|
@@ -11388,42 +11388,9 @@ WorkspaceSvg.prototype.cleanUp = function() {
|
|
|
11388
11388
|
this.setResizesEnabled(true);
|
|
11389
11389
|
};
|
|
11390
11390
|
|
|
11391
|
-
//#endregion
|
|
11392
|
-
//#region src/core/plugins/disableTopBlocks/index.ts
|
|
11393
|
-
var import_dist$1 = require_dist$1();
|
|
11394
|
-
function isOrphan(block) {
|
|
11395
|
-
const parent = block.getParent();
|
|
11396
|
-
if (parent && isOrphan(parent)) return true;
|
|
11397
|
-
return !parent && !!(block.outputConnection || block.previousConnection);
|
|
11398
|
-
}
|
|
11399
|
-
var DisableTopBlocks = class {
|
|
11400
|
-
init() {
|
|
11401
|
-
const disableMenuItem = ContextMenuRegistry.registry.getItem("blockDisable");
|
|
11402
|
-
if (!disableMenuItem) return;
|
|
11403
|
-
disableMenuItem.preconditionFn = function(scope) {
|
|
11404
|
-
const block = scope.block;
|
|
11405
|
-
if (!block) return "hidden";
|
|
11406
|
-
if (!block.isInFlyout && block.workspace.options.disable && block.isEditable()) {
|
|
11407
|
-
if (block.getInheritedDisabled() || isOrphan(block)) return "disabled";
|
|
11408
|
-
return "enabled";
|
|
11409
|
-
}
|
|
11410
|
-
return "hidden";
|
|
11411
|
-
};
|
|
11412
|
-
}
|
|
11413
|
-
};
|
|
11414
|
-
|
|
11415
|
-
//#endregion
|
|
11416
|
-
//#region src/core/plugins/index.ts
|
|
11417
|
-
(0, import_dist$2.registerFieldColour)();
|
|
11418
|
-
ShortcutRegistry.registry.unregister(ShortcutItems.names.ESCAPE);
|
|
11419
|
-
new import_dist$1.CrossTabCopyPaste().init({
|
|
11420
|
-
contextMenu: true,
|
|
11421
|
-
shortcut: true
|
|
11422
|
-
});
|
|
11423
|
-
new DisableTopBlocks().init();
|
|
11424
|
-
|
|
11425
11391
|
//#endregion
|
|
11426
11392
|
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/typeof.js
|
|
11393
|
+
var import_dist$1 = require_dist$1();
|
|
11427
11394
|
function _typeof(o) {
|
|
11428
11395
|
"@babel/helpers - typeof";
|
|
11429
11396
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -11464,6 +11431,48 @@ function _defineProperty(e, r, t) {
|
|
|
11464
11431
|
}) : e[r] = t, e;
|
|
11465
11432
|
}
|
|
11466
11433
|
|
|
11434
|
+
//#endregion
|
|
11435
|
+
//#region src/core/plugins/disableTopBlocks/index.ts
|
|
11436
|
+
function isOrphan(block) {
|
|
11437
|
+
const parent = block.getParent();
|
|
11438
|
+
if (parent && isOrphan(parent)) return true;
|
|
11439
|
+
return !parent && !!(block.outputConnection || block.previousConnection);
|
|
11440
|
+
}
|
|
11441
|
+
var DisableTopBlocks = class {
|
|
11442
|
+
constructor() {
|
|
11443
|
+
_defineProperty(this, "oldPreconditionFn", void 0);
|
|
11444
|
+
}
|
|
11445
|
+
init() {
|
|
11446
|
+
const disableMenuItem = ContextMenuRegistry.registry.getItem("blockDisable");
|
|
11447
|
+
if (!disableMenuItem) return;
|
|
11448
|
+
this.oldPreconditionFn = disableMenuItem.preconditionFn;
|
|
11449
|
+
disableMenuItem.preconditionFn = function(scope) {
|
|
11450
|
+
const block = scope.block;
|
|
11451
|
+
if (!block) return "hidden";
|
|
11452
|
+
if (!block.isInFlyout && block.workspace.options.disable && block.isEditable()) {
|
|
11453
|
+
if (block.getInheritedDisabled() || isOrphan(block)) return "disabled";
|
|
11454
|
+
return "enabled";
|
|
11455
|
+
}
|
|
11456
|
+
return "hidden";
|
|
11457
|
+
};
|
|
11458
|
+
}
|
|
11459
|
+
dispose() {
|
|
11460
|
+
const disableMenuItem = ContextMenuRegistry.registry.getItem("blockDisable");
|
|
11461
|
+
if (!disableMenuItem) return;
|
|
11462
|
+
disableMenuItem.preconditionFn = this.oldPreconditionFn;
|
|
11463
|
+
}
|
|
11464
|
+
};
|
|
11465
|
+
|
|
11466
|
+
//#endregion
|
|
11467
|
+
//#region src/core/plugins/index.ts
|
|
11468
|
+
(0, import_dist$2.registerFieldColour)();
|
|
11469
|
+
ShortcutRegistry.registry.unregister(ShortcutItems.names.ESCAPE);
|
|
11470
|
+
new import_dist$1.CrossTabCopyPaste().init({
|
|
11471
|
+
contextMenu: true,
|
|
11472
|
+
shortcut: true
|
|
11473
|
+
});
|
|
11474
|
+
new DisableTopBlocks().init();
|
|
11475
|
+
|
|
11467
11476
|
//#endregion
|
|
11468
11477
|
//#region src/core/events/index.ts
|
|
11469
11478
|
var StateChange = class extends Events.Abstract {
|
|
@@ -11744,7 +11753,7 @@ var index_vue_vue_type_script_setup_true_lang_default$7 = /*@__PURE__*/ defineCo
|
|
|
11744
11753
|
const disabled = computed(() => {
|
|
11745
11754
|
return display.smAndDown.value;
|
|
11746
11755
|
});
|
|
11747
|
-
|
|
11756
|
+
function cleanWorkspace() {
|
|
11748
11757
|
if (!context.workspace) {
|
|
11749
11758
|
console.assert(false);
|
|
11750
11759
|
return;
|
|
@@ -11754,10 +11763,10 @@ var index_vue_vue_type_script_setup_true_lang_default$7 = /*@__PURE__*/ defineCo
|
|
|
11754
11763
|
return;
|
|
11755
11764
|
}
|
|
11756
11765
|
context.workspace.cleanUp();
|
|
11757
|
-
}
|
|
11758
|
-
|
|
11766
|
+
}
|
|
11767
|
+
function onClick() {
|
|
11759
11768
|
cleanWorkspace();
|
|
11760
|
-
}
|
|
11769
|
+
}
|
|
11761
11770
|
__expose({ cleanWorkspace });
|
|
11762
11771
|
return (_ctx, _cache) => {
|
|
11763
11772
|
const _component_v_btn = resolveComponent("v-btn");
|
|
@@ -12582,7 +12591,7 @@ function callback$4() {
|
|
|
12582
12591
|
});
|
|
12583
12592
|
root.push(button);
|
|
12584
12593
|
}
|
|
12585
|
-
const variables = workspace.
|
|
12594
|
+
const variables = workspace.getVariableMap().getAllVariables();
|
|
12586
12595
|
if (variables.length <= 0) return root;
|
|
12587
12596
|
variables.sort(Variables.compareByName);
|
|
12588
12597
|
{
|
|
@@ -13499,15 +13508,18 @@ const options = {
|
|
|
13499
13508
|
maxScale: 1,
|
|
13500
13509
|
minScale: .1,
|
|
13501
13510
|
scaleSpeed: 1.25,
|
|
13502
|
-
startScale: 1
|
|
13503
|
-
wheel: true
|
|
13511
|
+
startScale: 1
|
|
13504
13512
|
}
|
|
13505
13513
|
};
|
|
13506
13514
|
function createWorkspace(container, type, version, dark) {
|
|
13507
13515
|
options.theme = dark ? "dark" : "light";
|
|
13508
13516
|
options.toolbox = getToolbox(type, version);
|
|
13509
13517
|
const workspace = inject$1(container, options);
|
|
13518
|
+
workspace.addChangeListener(Events.disableOrphans);
|
|
13510
13519
|
workspace.addChangeListener((event) => {
|
|
13520
|
+
setTimeout(() => {
|
|
13521
|
+
(0, import_dist.shadowBlockConversionChangeListener)(event);
|
|
13522
|
+
}, 0);
|
|
13511
13523
|
if (event.type === "state_change") {
|
|
13512
13524
|
const blocks = workspace.getAllBlocks();
|
|
13513
13525
|
for (const block of blocks) {
|
|
@@ -13515,9 +13527,6 @@ function createWorkspace(container, type, version, dark) {
|
|
|
13515
13527
|
if (b.checkWarning_) b.checkWarning_();
|
|
13516
13528
|
}
|
|
13517
13529
|
}
|
|
13518
|
-
setTimeout(() => {
|
|
13519
|
-
(0, import_dist.shadowBlockConversionChangeListener)(event);
|
|
13520
|
-
}, 0);
|
|
13521
13530
|
});
|
|
13522
13531
|
regCustomCategory(workspace, type, version);
|
|
13523
13532
|
regButtonCallback(workspace);
|
|
@@ -13641,7 +13650,6 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineCo
|
|
|
13641
13650
|
const emit = __emit;
|
|
13642
13651
|
const blocklyEditor = `blocklyEditor${useId()}`;
|
|
13643
13652
|
const blocklyDiv = ref();
|
|
13644
|
-
const parentContainer = useTemplateRef("parentContainer");
|
|
13645
13653
|
const clean = useTemplateRef("clean");
|
|
13646
13654
|
const navigator = useTemplateRef("navigator");
|
|
13647
13655
|
const context = {};
|
|
@@ -13707,24 +13715,11 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineCo
|
|
|
13707
13715
|
zIndex: 999
|
|
13708
13716
|
};
|
|
13709
13717
|
});
|
|
13710
|
-
const parentContStyle = computed(() => {
|
|
13711
|
-
return {
|
|
13712
|
-
position: "fixed",
|
|
13713
|
-
top: 0,
|
|
13714
|
-
left: 0,
|
|
13715
|
-
zIndex: 3e3
|
|
13716
|
-
};
|
|
13717
|
-
});
|
|
13718
13718
|
const { open: flyoutOpen } = useViewStack(`blocklyEditorFlyout${useId()}`);
|
|
13719
13719
|
onMounted(async () => {
|
|
13720
|
-
if (!blocklyDiv.value
|
|
13721
|
-
console.assert(false);
|
|
13722
|
-
return;
|
|
13723
|
-
}
|
|
13724
|
-
setParentContainer(parentContainer.value);
|
|
13720
|
+
if (!blocklyDiv.value) throw new Error(`invalid blocklyDiv`);
|
|
13725
13721
|
await setLocale(__props.locale);
|
|
13726
13722
|
context.workspace = createWorkspace(blocklyDiv.value, __props.type, __props.version, __props.dark);
|
|
13727
|
-
context.workspace.addChangeListener(Events.disableOrphans);
|
|
13728
13723
|
context.workspace.addChangeListener(onChange);
|
|
13729
13724
|
const flyoutDiv = document.querySelector(`#${blocklyEditor} .blocklyFlyout`);
|
|
13730
13725
|
new MutationObserver((mutations) => {
|
|
@@ -13766,45 +13761,45 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineCo
|
|
|
13766
13761
|
navigator.value?.update();
|
|
13767
13762
|
}, 0);
|
|
13768
13763
|
}
|
|
13769
|
-
|
|
13764
|
+
function load(state) {
|
|
13770
13765
|
loading.value = true;
|
|
13771
13766
|
if (__props.type === "json") loadFromJson(state, context.workspace);
|
|
13772
13767
|
else serialization.workspaces.load(state, context.workspace);
|
|
13773
|
-
}
|
|
13774
|
-
|
|
13768
|
+
}
|
|
13769
|
+
function save() {
|
|
13775
13770
|
if (__props.type === "json") return saveToJson(context.workspace);
|
|
13776
13771
|
else return serialization.workspaces.save(context.workspace);
|
|
13777
|
-
}
|
|
13778
|
-
|
|
13772
|
+
}
|
|
13773
|
+
function appendBlock(state) {
|
|
13779
13774
|
serialization.blocks.append(state, context.workspace);
|
|
13780
|
-
}
|
|
13781
|
-
|
|
13775
|
+
}
|
|
13776
|
+
function generateCode() {
|
|
13782
13777
|
if (__props.type === "json") console.assert(false);
|
|
13783
13778
|
else return javascriptGenerator.workspaceToCode(context.workspace);
|
|
13784
|
-
}
|
|
13785
|
-
|
|
13779
|
+
}
|
|
13780
|
+
function generateReactivity() {
|
|
13786
13781
|
return buildReactivity(context.workspace);
|
|
13787
|
-
}
|
|
13788
|
-
|
|
13782
|
+
}
|
|
13783
|
+
function applyLock() {
|
|
13789
13784
|
context.workspace.setIsReadOnly(lock.value);
|
|
13790
13785
|
if (context.workspace.isReadOnly()) flyoutOpen.value = false;
|
|
13791
|
-
}
|
|
13792
|
-
|
|
13786
|
+
}
|
|
13787
|
+
function applyScale() {
|
|
13793
13788
|
context.workspace.setScale(scale.value);
|
|
13794
|
-
}
|
|
13795
|
-
|
|
13789
|
+
}
|
|
13790
|
+
function fireStateChange() {
|
|
13796
13791
|
Events.fire(new (Events.get("state_change"))(context.workspace));
|
|
13797
|
-
}
|
|
13798
|
-
|
|
13792
|
+
}
|
|
13793
|
+
function onCleanWorkspace() {
|
|
13799
13794
|
clean.value?.cleanWorkspace();
|
|
13800
|
-
}
|
|
13801
|
-
|
|
13795
|
+
}
|
|
13796
|
+
function onToggleBlocklyLock() {
|
|
13802
13797
|
lock.value = !lock.value;
|
|
13803
|
-
}
|
|
13804
|
-
|
|
13798
|
+
}
|
|
13799
|
+
function onOpenBlocklyNavigator() {
|
|
13805
13800
|
if (!navigator.value) return;
|
|
13806
13801
|
navigator.value.open = true;
|
|
13807
|
-
}
|
|
13802
|
+
}
|
|
13808
13803
|
onMounted(() => {
|
|
13809
13804
|
eventBus.on("cleanWorkspace", onCleanWorkspace);
|
|
13810
13805
|
eventBus.on("toggleBlocklyLock", onToggleBlocklyLock);
|
|
@@ -13887,11 +13882,6 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineCo
|
|
|
13887
13882
|
key: 3,
|
|
13888
13883
|
style: normalizeStyle(mainMaskStyle.value)
|
|
13889
13884
|
}, null, 4)) : createCommentVNode("v-if", true),
|
|
13890
|
-
createElementVNode("div", {
|
|
13891
|
-
ref_key: "parentContainer",
|
|
13892
|
-
ref: parentContainer,
|
|
13893
|
-
style: normalizeStyle(parentContStyle.value)
|
|
13894
|
-
}, null, 4),
|
|
13895
13885
|
createVNode(_component_x_loading, {
|
|
13896
13886
|
open: loading.value,
|
|
13897
13887
|
"z-index": 99
|
|
@@ -13998,7 +13988,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
13998
13988
|
variant: "text",
|
|
13999
13989
|
onClick: _cache[0] || (_cache[0] = ($event) => open.value = false)
|
|
14000
13990
|
}),
|
|
14001
|
-
createElementVNode("span", _hoisted_1, toDisplayString(unref(t)("x-block-lib.
|
|
13991
|
+
createElementVNode("span", _hoisted_1, toDisplayString(unref(t)("x-block-lib.source")), 1),
|
|
14002
13992
|
createVNode(_component_v_spacer)
|
|
14003
13993
|
]),
|
|
14004
13994
|
_: 1
|
|
@@ -14027,8 +14017,8 @@ const install = (app) => {
|
|
|
14027
14017
|
//#endregion
|
|
14028
14018
|
//#region src/i18n/index.ts
|
|
14029
14019
|
async function loadLocaleMessageBlock(locale) {
|
|
14030
|
-
if (locale === "en") return (await import("./i18n-en.
|
|
14031
|
-
else if (locale === "zhHans") return (await import("./i18n-zhHans.
|
|
14020
|
+
if (locale === "en") return (await import("./i18n-en.o4ueycrn.js").then((n) => n.t)).default;
|
|
14021
|
+
else if (locale === "zhHans") return (await import("./i18n-zhHans.b2uuecq7.js").then((n) => n.t)).default;
|
|
14032
14022
|
else throw new Error(`invalid locale=${locale}`);
|
|
14033
14023
|
}
|
|
14034
14024
|
|
|
@@ -36959,4 +36959,4 @@ function javascript(hljs) {
|
|
|
36959
36959
|
}
|
|
36960
36960
|
|
|
36961
36961
|
//#endregion
|
|
36962
|
-
export { Names as A, defineBlocksWithJsonArray as B, FieldCheckbox as C, FieldNumber as D, FieldLabel as E, Themes as F, inject$1 as G, getMainWorkspace as H, Variables as I, serialization as J, inputs as K, WorkspaceSvg as L, ShortcutItems as M, ShortcutRegistry as N, FieldTextInput as O, Theme as P,
|
|
36962
|
+
export { Names as A, defineBlocksWithJsonArray as B, FieldCheckbox as C, FieldNumber as D, FieldLabel as E, Themes as F, inject$1 as G, getMainWorkspace as H, Variables as I, serialization as J, inputs as K, WorkspaceSvg as L, ShortcutItems as M, ShortcutRegistry as N, FieldTextInput as O, Theme as P, Xml as R, Extensions as S, FieldImage as T, getSelected as U, dialog as V, icons as W, svgResize as X, setLocale as Y, utils as Z, javascriptGenerator as _, lo as a, ContextMenuRegistry as b, encodeString as c, snakeCase as d, parseInt$1 as f, Order as g, cloneDeep as h, require_dist as i, Procedures as j, Msg as k, require_dist$2 as l, debounce as m, o as n, useResizeObserver as o, isEqual as p, registry as q, core_default as r, require_dist$1 as s, javascript as t, upperCase as u, Blocks as v, FieldDropdown as w, Events as x, ContextMenu as y, common as z };
|
|
@@ -1,36 +1,290 @@
|
|
|
1
1
|
//#region src/core/locale/msg/zhHans.ts
|
|
2
|
-
|
|
2
|
+
const blockly = {
|
|
3
3
|
ADD_COMMENT: "添加注释",
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
ALT_KEY: "Alt",
|
|
5
|
+
ANNOUNCE_CANT_SCROLL_FURTHER: "Can't scroll further.",
|
|
6
|
+
ANNOUNCE_MOVE_AFTER: "Moving %1 after %2.",
|
|
7
|
+
ANNOUNCE_MOVE_AROUND: "Moving %1 around %2.",
|
|
8
|
+
ANNOUNCE_MOVE_BEFORE: "Moving %1 before %2.",
|
|
9
|
+
ANNOUNCE_MOVE_CANCELED: "Canceled movement.",
|
|
10
|
+
ANNOUNCE_MOVE_INSIDE: "Moving %1 inside %2.",
|
|
11
|
+
ANNOUNCE_MOVE_OF: "%1 of %2",
|
|
12
|
+
ANNOUNCE_MOVE_TO: "Moving %1 to %2.",
|
|
13
|
+
ANNOUNCE_MOVE_WORKSPACE: "Moving %1 on workspace.",
|
|
14
|
+
ANNOUNCE_SCROLLED_DOWN: "Scrolled down.",
|
|
15
|
+
ANNOUNCE_SCROLLED_LEFT: "Scrolled left.",
|
|
16
|
+
ANNOUNCE_SCROLLED_RIGHT: "Scrolled right.",
|
|
17
|
+
ANNOUNCE_SCROLLED_UP: "Scrolled up.",
|
|
18
|
+
ARIA_LABEL_ADD_ELSE_IF: "添加否则如果",
|
|
19
|
+
ARIA_LABEL_ADD_INPUT: "添加输入",
|
|
20
|
+
ARIA_LABEL_ADD_LIST_ITEM: "添加列表项目",
|
|
21
|
+
ARIA_LABEL_ADD_TEXT: "添加文字",
|
|
22
|
+
ARIA_LABEL_BUTTON: "button",
|
|
23
|
+
ARIA_LABEL_COMMENT: "注释",
|
|
24
|
+
ARIA_LABEL_COMMENT_COLLAPSE: "收起注释",
|
|
25
|
+
ARIA_LABEL_COMMENT_EXPAND: "展开注释",
|
|
26
|
+
ARIA_LABEL_FIELD_ANGLE: "%1度",
|
|
27
|
+
ARIA_LABEL_HEADING: "heading",
|
|
28
|
+
ARIA_LABEL_REMOVE_ELSE_IF: "移除否则如果",
|
|
29
|
+
ARIA_LABEL_REMOVE_INPUT: "删除输入",
|
|
30
|
+
ARIA_LABEL_REMOVE_LIST_ITEM: "移除列表中的项目",
|
|
31
|
+
ARIA_LABEL_REMOVE_TEXT: "删除文字",
|
|
32
|
+
ARIA_LABEL_TRASH_EMPTY: "垃圾桶,当前为空",
|
|
33
|
+
ARIA_TYPE_FIELD_ANGLE: "角度",
|
|
34
|
+
ARIA_TYPE_FIELD_BITMAP: "位图",
|
|
35
|
+
ARIA_TYPE_FIELD_CHECKBOX: "checkbox",
|
|
36
|
+
ARIA_TYPE_FIELD_COLOUR: "颜色",
|
|
37
|
+
ARIA_TYPE_FIELD_DATE: "日期",
|
|
38
|
+
ARIA_TYPE_FIELD_DROPDOWN: "dropdown",
|
|
39
|
+
ARIA_TYPE_FIELD_GRID: "方格下拉框",
|
|
40
|
+
ARIA_TYPE_FIELD_IMAGE: "image",
|
|
41
|
+
ARIA_TYPE_FIELD_INPUT: "input",
|
|
42
|
+
ARIA_TYPE_FIELD_NUMBER: "number",
|
|
43
|
+
ARIA_TYPE_FIELD_TEXT_INPUT: "text",
|
|
44
|
+
ARIA_TYPE_FIELD_TEXT_INPUT_ARGUMENT: "input name",
|
|
45
|
+
ARIA_TYPE_FIELD_TEXT_INPUT_PROCEDURE: "function name",
|
|
46
|
+
BACKSPACE_KEY: "退格",
|
|
47
|
+
BLOCK_LABEL_BEGIN_PREFIX: "%1开始",
|
|
48
|
+
BLOCK_LABEL_BEGIN_STACK: "块堆开始",
|
|
49
|
+
BLOCK_LABEL_COLLAPSED: "已折叠",
|
|
50
|
+
BLOCK_LABEL_CONTAINER: "容器",
|
|
51
|
+
BLOCK_LABEL_DISABLED: "已禁用",
|
|
52
|
+
BLOCK_LABEL_HAS_BRANCHES: "有%1个分支",
|
|
53
|
+
BLOCK_LABEL_HAS_INPUT: "有输入",
|
|
54
|
+
BLOCK_LABEL_HAS_INPUTS: "有输入",
|
|
55
|
+
BLOCK_LABEL_REPLACEABLE: "可替换",
|
|
56
|
+
BLOCK_LABEL_STACK_BLOCKS: "%1块堆",
|
|
57
|
+
BLOCK_LABEL_STATEMENT: "语句",
|
|
58
|
+
BLOCK_LABEL_TOOLBOX_CATEGORY: "%1分类",
|
|
59
|
+
BLOCK_LABEL_VALUE: "值",
|
|
60
|
+
BUBBLE_LABEL_COMMENT: "注释:%1",
|
|
61
|
+
BUBBLE_LABEL_DEFAULT: "Bubble",
|
|
62
|
+
BUBBLE_LABEL_WARNING: "警告:%1",
|
|
63
|
+
CANNOT_DELETE_VARIABLE_PROCEDURE: "不能删除变量“%1”,因为它是函数“%2”定义的一部分",
|
|
64
|
+
CAPS_LOCK_KEY: "Caps Lock",
|
|
65
|
+
CHANGE_VALUE_TITLE: "更改值:",
|
|
66
|
+
CHROME_OS: "ChromeOS",
|
|
67
|
+
CLEAN_UP: "整理块",
|
|
68
|
+
CLOSE: "关闭",
|
|
69
|
+
CLOSE_BACKPACK: "关闭背包",
|
|
70
|
+
COLLAPSED_WARNINGS_WARNING: "已收起的信息块内包含警告。",
|
|
71
|
+
COLLAPSE_ALL: "折叠块",
|
|
7
72
|
COLLAPSE_BLOCK: "折叠块",
|
|
8
|
-
|
|
73
|
+
COMMAND_KEY: "Command键",
|
|
74
|
+
CONTEXT_MENU_KEY: "≣ Menu",
|
|
75
|
+
CONTROL_KEY: "Ctrl键",
|
|
76
|
+
COPY_ALL_TO_BACKPACK: "将所有块复制到背包",
|
|
77
|
+
COPY_SHORTCUT: "复制",
|
|
78
|
+
COPY_TO_BACKPACK: "复制到背包",
|
|
79
|
+
CURRENT_BLOCK_ANNOUNCEMENT: "当前块:%1",
|
|
80
|
+
CUT_SHORTCUT: "剪切",
|
|
81
|
+
DELETE_ALL_BLOCKS: "删除所有 %1 个块吗?",
|
|
9
82
|
DELETE_BLOCK: "删除块",
|
|
83
|
+
DELETE_KEY: "Delete",
|
|
10
84
|
DELETE_VARIABLE: "删除变量“%1”",
|
|
11
85
|
DELETE_VARIABLE_CONFIRMATION: "要删除对变量“%2”的%1个引用吗?",
|
|
12
|
-
DELETE_X_BLOCKS: "
|
|
86
|
+
DELETE_X_BLOCKS: "删除 %1 个块",
|
|
13
87
|
DIALOG_CANCEL: "取消",
|
|
14
88
|
DIALOG_OK: "确认",
|
|
15
89
|
DISABLE_BLOCK: "禁用块",
|
|
16
90
|
DUPLICATE_BLOCK: "复制",
|
|
17
91
|
DUPLICATE_COMMENT: "复制注释",
|
|
92
|
+
EDIT_BLOCK_CONTENTS: "编辑块内容",
|
|
93
|
+
EMPTY_BACKPACK: "清空背包",
|
|
18
94
|
ENABLE_BLOCK: "启用块",
|
|
95
|
+
END_KEY: "End",
|
|
96
|
+
ENTER_KEY: "Enter",
|
|
97
|
+
ESCAPE: "Esc",
|
|
19
98
|
EXPAND_ALL: "展开块",
|
|
20
99
|
EXPAND_BLOCK: "展开块",
|
|
21
100
|
EXTERNAL_INPUTS: "外部输入",
|
|
101
|
+
FIELD_BITMAP_ARIA_VALUE: "%1乘%2,%3 个像素开启",
|
|
102
|
+
FIELD_BITMAP_BUTTON_LABEL_CLEAR: "清空",
|
|
103
|
+
FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE: "随机",
|
|
104
|
+
FIELD_BITMAP_PIXEL_LABEL: "%1,第%2行,第%3列",
|
|
105
|
+
FIELD_BITMAP_PIXEL_OFF: "关",
|
|
106
|
+
FIELD_BITMAP_PIXEL_ON: "开",
|
|
107
|
+
FIELD_LABEL_CHECKBOX_CHECKED: "Checked",
|
|
108
|
+
FIELD_LABEL_CHECKBOX_UNCHECKED: "Not checked",
|
|
109
|
+
FIELD_LABEL_EDIT_PREFIX: "Edit %1",
|
|
110
|
+
FIELD_LABEL_EMPTY: "empty",
|
|
111
|
+
FIELD_LABEL_OPTION_INDEX: "Option %1",
|
|
112
|
+
FIELD_LABEL_VARIABLE: "Variable '%1'",
|
|
113
|
+
FIELD_MULTILINEINPUT_FINISH_EDITING: "结束编辑",
|
|
114
|
+
FIELD_MULTILINEINPUT_NEW_LINE: "换行",
|
|
22
115
|
HELP: "帮助",
|
|
116
|
+
HELP_PROMPT: "按 %1 来获取有关键盘控制的帮助。",
|
|
117
|
+
HOME_KEY: "Home",
|
|
118
|
+
ICON_LABEL_COMMENT_CLOSED: "打开注释",
|
|
119
|
+
ICON_LABEL_COMMENT_OPEN: "关闭注释",
|
|
120
|
+
ICON_LABEL_DEFAULT: "图标",
|
|
121
|
+
ICON_LABEL_MUTATOR_CLOSED: "编辑这个块",
|
|
122
|
+
ICON_LABEL_MUTATOR_OPEN: "关闭块编辑器",
|
|
123
|
+
ICON_LABEL_WARNING_CLOSED: "打开警告",
|
|
124
|
+
ICON_LABEL_WARNING_OPEN: "关闭警告",
|
|
23
125
|
INLINE_INPUTS: "单行输入",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
126
|
+
INPUT_LABEL_CONDITION: "条件",
|
|
127
|
+
INPUT_LABEL_CONDITION_A: "第一个条件",
|
|
128
|
+
INPUT_LABEL_CONDITION_B: "第二个条件",
|
|
129
|
+
INPUT_LABEL_EMPTY: "空",
|
|
130
|
+
INPUT_LABEL_END_STATEMENT: "%1结束",
|
|
131
|
+
INPUT_LABEL_INDEX: "第%1个输入",
|
|
132
|
+
INPUT_LABEL_LISTS_CREATE_WITH_ITEM: "value %1",
|
|
133
|
+
INPUT_LABEL_LISTS_DELIMITER: "delimiter",
|
|
134
|
+
INPUT_LABEL_LISTS_END_POSITION: "end position",
|
|
135
|
+
INPUT_LABEL_LISTS_LIST_FROM_TEXT: "text to split",
|
|
136
|
+
INPUT_LABEL_LISTS_POSITION: "position within list",
|
|
137
|
+
INPUT_LABEL_LISTS_REPEAT_ITEM: "value to repeat",
|
|
138
|
+
INPUT_LABEL_LISTS_REPEAT_NUM: "number of times to repeat",
|
|
139
|
+
INPUT_LABEL_LISTS_START_POSITION: "start position",
|
|
140
|
+
INPUT_LABEL_LISTS_TEXT_FROM_LIST: "list to join",
|
|
141
|
+
INPUT_LABEL_LISTS_TO_CHANGE: "list to change",
|
|
142
|
+
INPUT_LABEL_LISTS_TO_CHECK: "list to check",
|
|
143
|
+
INPUT_LABEL_LISTS_VALUE_TO_SET: "value to set",
|
|
144
|
+
INPUT_LABEL_LOOP_BY: "increment",
|
|
145
|
+
INPUT_LABEL_LOOP_FROM: "starting number",
|
|
146
|
+
INPUT_LABEL_LOOP_LIST: "list to iterate over",
|
|
147
|
+
INPUT_LABEL_LOOP_TIMES: "number of times to repeat",
|
|
148
|
+
INPUT_LABEL_LOOP_TO: "ending number",
|
|
149
|
+
INPUT_LABEL_MATH_CHANGE_BY: "更改量",
|
|
150
|
+
INPUT_LABEL_MATH_CONSTRAIN_VALUE: "要约束的数字",
|
|
151
|
+
INPUT_LABEL_MATH_DIVIDEND: "被除数",
|
|
152
|
+
INPUT_LABEL_MATH_DIVISOR: "除数",
|
|
153
|
+
INPUT_LABEL_NUMBER: "数字",
|
|
154
|
+
INPUT_LABEL_NUMBER_A: "第一个数字",
|
|
155
|
+
INPUT_LABEL_NUMBER_ATAN2_X: "X坐标",
|
|
156
|
+
INPUT_LABEL_NUMBER_ATAN2_Y: "Y坐标",
|
|
157
|
+
INPUT_LABEL_NUMBER_B: "第二个数字",
|
|
158
|
+
INPUT_LABEL_NUMBER_LIST: "数字列表",
|
|
159
|
+
INPUT_LABEL_NUMBER_MAX: "最大",
|
|
160
|
+
INPUT_LABEL_NUMBER_MIN: "最小",
|
|
161
|
+
INPUT_LABEL_NUMBER_TO_CHECK: "要检查的数字",
|
|
162
|
+
INPUT_LABEL_STATEMENT: "语句位置",
|
|
163
|
+
INPUT_LABEL_TEXT_APPEND: "value to append",
|
|
164
|
+
INPUT_LABEL_TEXT_END_POSITION: "end position",
|
|
165
|
+
INPUT_LABEL_TEXT_JOIN_ITEM: "value %1",
|
|
166
|
+
INPUT_LABEL_TEXT_POSITION: "letter position",
|
|
167
|
+
INPUT_LABEL_TEXT_PROMPT_MESSAGE: "message",
|
|
168
|
+
INPUT_LABEL_TEXT_START_POSITION: "start position",
|
|
169
|
+
INPUT_LABEL_TEXT_TO_CHANGE: "text to change",
|
|
170
|
+
INPUT_LABEL_TEXT_TO_CHECK: "text to check",
|
|
171
|
+
INPUT_LABEL_TEXT_TO_FIND: "text to find",
|
|
172
|
+
INPUT_LABEL_TEXT_TO_REPLACE: "text to replace",
|
|
173
|
+
INPUT_LABEL_VALUE: "值位置",
|
|
174
|
+
INPUT_LABEL_VALUE_A: "第一个值",
|
|
175
|
+
INPUT_LABEL_VALUE_B: "第二个值",
|
|
176
|
+
INPUT_LABEL_VARIABLES_SET: "value to set",
|
|
177
|
+
INSERT_KEY: "Insert",
|
|
178
|
+
KEYBOARD_NAV_BLOCK_NAVIGATION_HINT: "使用%1导航到块内部。",
|
|
179
|
+
KEYBOARD_NAV_CONSTRAINED_MOVE_HINT: "使用箭头键移动,然后按%1接受位置。",
|
|
180
|
+
KEYBOARD_NAV_COPIED_HINT: "已拷貝。按下 %1 貼上。",
|
|
181
|
+
KEYBOARD_NAV_CUT_HINT: "已剪下。按下 %1 貼上。",
|
|
182
|
+
KEYBOARD_NAV_FLYOUT_LABEL_HINT: "使用方向键导航到一个块,或按%1跳转到下一个标题。",
|
|
183
|
+
KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT: "按住 %1 并使用箭头键来自由一点,然后按下 %2 接受位置。",
|
|
184
|
+
KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT: "使用方向键导航。",
|
|
185
|
+
LINUX: "Linux",
|
|
186
|
+
MAC_OS: "macOS",
|
|
187
|
+
MINIMAP_ARIA_LABEL: "工作区小地图,用方向键平移工作区。",
|
|
188
|
+
MOVE_BLOCK: "移动块",
|
|
189
|
+
NEW_COLOUR_VARIABLE: "创建颜色变量...",
|
|
190
|
+
NEW_NUMBER_VARIABLE: "创建数变量...",
|
|
191
|
+
NEW_STRING_VARIABLE: "创建字符串变量...",
|
|
192
|
+
NEW_VARIABLE: "创建变量...",
|
|
193
|
+
NEW_VARIABLE_TITLE: "新变量的名称:",
|
|
194
|
+
NEW_VARIABLE_TYPE_TITLE: "新变量的类型:",
|
|
195
|
+
NO_PARENT_ANNOUNCEMENT: "当前块没有父块",
|
|
196
|
+
OPEN_BACKPACK: "打开背包",
|
|
197
|
+
OPEN_TRASH: "Open trash",
|
|
198
|
+
OPTION_KEY: "Option键",
|
|
199
|
+
ORDINAL_NUMBER_SUFFIX: "",
|
|
200
|
+
PAGE_DOWN_KEY: "Page Down",
|
|
201
|
+
PAGE_UP_KEY: "Page Up",
|
|
202
|
+
PARENT_BLOCKS_ANNOUNCEMENT: "父块:%1",
|
|
203
|
+
PASTE_ALL_FROM_BACKPACK: "从背包粘贴所有块",
|
|
204
|
+
PASTE_SHORTCUT: "粘贴",
|
|
205
|
+
PAUSE_KEY: "Pause",
|
|
27
206
|
REDO: "重做",
|
|
28
207
|
REMOVE_COMMENT: "删除注释",
|
|
29
|
-
|
|
30
|
-
|
|
208
|
+
REMOVE_FROM_BACKPACK: "从背包移除",
|
|
209
|
+
RENAME_VARIABLE: "重命名变量“%1”...",
|
|
210
|
+
RENAME_VARIABLE_TITLE: "将所有“%1”变量重命名为:",
|
|
211
|
+
RESET_ZOOM: "Reset zoom",
|
|
212
|
+
SCREENREADER_HINT: "使用方向键导航。按%1切换屏幕阅读器模式",
|
|
213
|
+
SCREENREADER_MODE_DISABLED: "屏幕阅读器已关闭,按%1以启用",
|
|
214
|
+
SCREENREADER_MODE_ENABLED: "屏幕阅读器已启用,按%1以关闭",
|
|
215
|
+
SHIFT_KEY: "Shift",
|
|
216
|
+
SHORTCUTS_ABORT_MOVE: "中止移动",
|
|
217
|
+
SHORTCUTS_CLEANUP: "清空工作区",
|
|
218
|
+
SHORTCUTS_CODE_NAVIGATION: "代码导航",
|
|
219
|
+
SHORTCUTS_DELETE: "删除",
|
|
220
|
+
SHORTCUTS_DISCONNECT: "断开块",
|
|
221
|
+
SHORTCUTS_DUPLICATE: "复制",
|
|
222
|
+
SHORTCUTS_EDITING: "编辑",
|
|
223
|
+
SHORTCUTS_ESCAPE: "退出",
|
|
224
|
+
SHORTCUTS_EXTENDED_INFORMATION: "朗读详细信息",
|
|
225
|
+
SHORTCUTS_FINISH_MOVE: "完成移动",
|
|
226
|
+
SHORTCUTS_FOCUS_TOOLBOX: "聚焦到工具箱",
|
|
227
|
+
SHORTCUTS_FOCUS_WORKSPACE: "聚焦到工作区",
|
|
228
|
+
SHORTCUTS_GENERAL: "常规",
|
|
229
|
+
SHORTCUTS_INFORMATION: "朗读信息",
|
|
230
|
+
SHORTCUTS_JUMP_BLOCK_END: "移动到块尾",
|
|
231
|
+
SHORTCUTS_JUMP_BLOCK_START: "移动到块首",
|
|
232
|
+
SHORTCUTS_JUMP_BOTTOM_STACK: "移动到块堆尾部",
|
|
233
|
+
SHORTCUTS_JUMP_FIRST_BLOCK: "移动到第一个块",
|
|
234
|
+
SHORTCUTS_JUMP_LAST_BLOCK: "移动到最后一个块",
|
|
235
|
+
SHORTCUTS_JUMP_NEXT_PAGE: "Jump to next page",
|
|
236
|
+
SHORTCUTS_JUMP_PREVIOUS_PAGE: "Jump to previous page",
|
|
237
|
+
SHORTCUTS_JUMP_TOP_STACK: "移动到块堆开始",
|
|
238
|
+
SHORTCUTS_MOVE_DOWN: "下移",
|
|
239
|
+
SHORTCUTS_MOVE_LEFT: "左移",
|
|
240
|
+
SHORTCUTS_MOVE_RIGHT: "右移",
|
|
241
|
+
SHORTCUTS_MOVE_UP: "上移",
|
|
242
|
+
SHORTCUTS_NEXT_HEADING: "下一个标题",
|
|
243
|
+
SHORTCUTS_NEXT_STACK: "下一个块堆",
|
|
244
|
+
SHORTCUTS_PERFORM_ACTION: "编辑或确认",
|
|
245
|
+
SHORTCUTS_PREVIOUS_HEADING: "上一个标题",
|
|
246
|
+
SHORTCUTS_PREVIOUS_STACK: "上一个块堆",
|
|
247
|
+
SHORTCUTS_SCROLL_DOWN: "Scroll down",
|
|
248
|
+
SHORTCUTS_SCROLL_LEFT: "Scroll left",
|
|
249
|
+
SHORTCUTS_SCROLL_RIGHT: "Scroll right",
|
|
250
|
+
SHORTCUTS_SCROLL_UP: "Scroll up",
|
|
251
|
+
SHORTCUTS_SHOW_CONTEXT_MENU: "显示菜单",
|
|
252
|
+
SHORTCUTS_SHOW_TOOLTIP: "显示工具提示",
|
|
253
|
+
SHORTCUTS_START_MOVE: "开始移动",
|
|
254
|
+
SHORTCUTS_START_MOVE_STACK: "开始移动块堆",
|
|
255
|
+
SHORTCUTS_TOGGLE_SCREENREADER_MODE: "切换屏幕阅读器模式",
|
|
256
|
+
SPACE_KEY: "空格",
|
|
257
|
+
TAB_KEY: "Tab",
|
|
31
258
|
TODAY: "今天",
|
|
32
259
|
UNDO: "撤销",
|
|
260
|
+
UNKNOWN: "未知",
|
|
33
261
|
UNNAMED_KEY: "未命名",
|
|
262
|
+
WINDOWS: "Windows",
|
|
263
|
+
WORKSPACE_COMMENT_DEFAULT_TEXT: "说点什么...",
|
|
264
|
+
WORKSPACE_CONTENTS_BLOCKS_MANY: "%1个块堆%2在工作区中",
|
|
265
|
+
WORKSPACE_CONTENTS_BLOCKS_ONE: "1个块堆%2在工作区中",
|
|
266
|
+
WORKSPACE_CONTENTS_BLOCKS_ZERO: "没有块%2在工作区中",
|
|
267
|
+
WORKSPACE_CONTENTS_COMMENTS_MANY: "和%1个注释",
|
|
268
|
+
WORKSPACE_CONTENTS_COMMENTS_ONE: "和1个注释",
|
|
269
|
+
WORKSPACE_LABEL_1_STACK: "1个块堆",
|
|
270
|
+
WORKSPACE_LABEL_FLYOUT_WORKSPACE: "%1个块",
|
|
271
|
+
WORKSPACE_LABEL_MANY_STACKS: "%1个块堆",
|
|
272
|
+
WORKSPACE_LABEL_MUTATOR_WORKSPACE: "块编辑工作区",
|
|
273
|
+
WORKSPACE_LABEL_PLAIN: "Blocks工作区。",
|
|
274
|
+
WORKSPACE_ROLEDESCRIPTION: "工作区",
|
|
275
|
+
WORKSPACE_SEARCH_CLOSE: "Close search bar",
|
|
276
|
+
WORKSPACE_SEARCH_FIND_NEXT: "Find next",
|
|
277
|
+
WORKSPACE_SEARCH_FIND_PREVIOUS: "Find previous",
|
|
278
|
+
WORKSPACE_SEARCH_INPUT_LABEL: "Search workspace. Press Enter for the next match, Shift+Enter for the previous match. Press Escape to close search and focus the current match.",
|
|
279
|
+
WORKSPACE_SEARCH_MATCH: "Match %1 of %2: %3",
|
|
280
|
+
WORKSPACE_SEARCH_NO_MATCHES: "No matching blocks",
|
|
281
|
+
WORKSPACE_SEARCH_PLACEHOLDER: "Search",
|
|
282
|
+
ZOOM_IN: "Zoom in",
|
|
283
|
+
ZOOM_OUT: "Zoom out",
|
|
284
|
+
ZOOM_TO_FIT_ARIA_LABEL: "缩放到适合"
|
|
285
|
+
};
|
|
286
|
+
var zhHans_default = {
|
|
287
|
+
...blockly,
|
|
34
288
|
CROSS_TAB_COPY: "拷贝(黏贴)",
|
|
35
289
|
CROSS_TAB_PASTE: "黏贴",
|
|
36
290
|
NO_OPTION: "没有选项",
|