Compare commits

...

354 Commits

Author SHA1 Message Date
Nick O'Leary ee48a2f2bf
Merge pull request #4362 from node-red/4342-subflow-err
Handle credential env var evaluation when no value set
2023-09-25 18:20:28 +01:00
Nick O'Leary 680d5b8216
Merge pull request #4364 from node-red/4323-redo-mermaid-integration
Rework mermaid integration to support off-DOM rendering
2023-09-25 18:08:48 +01:00
Nick O'Leary c9320c190d
Ensure creds object is not undefined when evaling env vars 2023-09-25 18:08:02 +01:00
Nick O'Leary 566c667c5d
Merge pull request #4354 from bonanitech/ignore-package-lock
Don't commit package-lock.json
2023-09-25 18:05:46 +01:00
Nick O'Leary ec6e42e655
Merge pull request #4361 from node-red/4342-fix-subflow-env-self-reference
Fix env evaluation when one env references another in the same object
2023-09-25 18:04:58 +01:00
Nick O'Leary bba6b6f71d
Merge pull request #4365 from node-red/4334-context-labels
Add missing nls labels to context menu
2023-09-25 18:04:35 +01:00
Nick O'Leary c261f6625a
Merge pull request #4368 from node-red/4340-switch-validation
Improve validation of switch/change node rules
2023-09-25 18:04:19 +01:00
Nick O'Leary a489b270d1
Remove extra debug 2023-09-25 17:38:16 +01:00
Nick O'Leary 51cb61940d
Improve validation of switch/change node rules
Fixes #4340
2023-09-25 17:33:59 +01:00
Nick O'Leary ce2f896b45
Add missing nls labels to context menu
Fixes #4334
2023-09-22 16:29:33 +01:00
Nick O'Leary 6635ff9a69
Rework mermaid integration to support off-DOM rendering 2023-09-22 15:23:01 +01:00
Nick O'Leary 41797f8cef
Handle credential env var evaluation when no value set 2023-09-22 13:56:54 +01:00
Nick O'Leary 797cea5394
Fix env evaluation when one env references another in the same object
Fixes #4342
2023-09-22 13:49:54 +01:00
Mauricio Bonani 2880d4120e Don't commit package-lock.json 2023-09-19 14:58:44 -04:00
Nick O'Leary 58dec7b9b0
Merge pull request #4312 from Rotzbua/add_dependabot
Add dependabot for Github Actions
2023-09-19 09:28:50 +01:00
Nick O'Leary b0f900e25d
Merge pull request #4311 from Rotzbua/update_gh_actions
Update outdated Github Actions
2023-09-19 09:28:19 +01:00
Nick O'Leary fc54848318
Merge pull request #4349 from braincube-io/feat/fmo/makeCsvExportFast
Performance : make CSV export way faster by not re-allocating and handling huge string
2023-09-19 09:22:54 +01:00
Nick O'Leary 2f9f8cda81
Merge pull request #4350 from node-red/Fix-delay-node-passing-on-reset-regression
Fix regression in delay node to not pass on msg.reset
2023-09-19 09:21:33 +01:00
Nick O'Leary 667e7ab8dc
Merge pull request #4348 from ZJvandeWeg/patch-2
github: Request `npm run test` in PR template
2023-09-19 09:21:06 +01:00
Nick O'Leary 4e55408fed
Merge pull request #4346 from kazuhitoyokoi/master-fixheight4templete
Fix height of description editor in template node
2023-09-19 09:20:09 +01:00
Nick O'Leary 88aa61ea77
Merge pull request #4329 from GogoVega/french-translation-v3.1-beta.4-changes
Add French translation of v3.1.0-beta.4 changes + slight improvements
2023-09-19 09:19:49 +01:00
Nick O'Leary 2ccdeb968c
Merge pull request #4332 from node-red/4330-fix-multiple-input-handlers
Handle nodes with multiple input handlers properly
2023-09-19 09:19:22 +01:00
Nick O'Leary 90045683c9
Merge pull request #4331 from node-red/fix-unexpected-link-validation-err
Handle undefined linkType value for existing link-call nodes
2023-09-19 09:18:50 +01:00
Nick O'Leary eb49b01cbc
Merge pull request #4351 from node-red/knolleary-patch-1
Soften the language around unrequited PRs
2023-09-19 09:18:26 +01:00
Nick O'Leary 3a6062775e
Update CONTRIBUTING.md
Soften the language around unrequited PRs
2023-09-18 21:03:46 +01:00
Dave Conway-Jones 718a7bfc26
Update 89-delay.js 2023-09-18 19:32:01 +01:00
Franck 27ca30aa82 PERF : make csv way faster by not allocating and handling huge string 2023-09-18 15:16:15 +02:00
Zeger-Jan van de Weg 01b0bf1a36
github: Request `npm run test` in PR template
Due to the way grunt is installed, `grunt` might not work for the user locally.
However, `npm run test` will succeed for them, as NPM knows where `grunt` is located to execute.
2023-09-17 08:38:10 +02:00
Kazuhito Yokoi e1cecc9601 Fix height of description editor in template node 2023-09-16 15:46:07 +09:00
GogoVega 4c13f5a0af
Adapting the translation depending on the context 2023-09-09 14:34:33 +02:00
GogoVega f5a9942d5e
Fix translation mistakenly erased 2023-09-09 10:59:59 +02:00
Nick O'Leary ee2d91fb4a
Handle nodes with multiple input handlers properly
Fixes #4330
2023-09-08 16:26:10 +01:00
Nick O'Leary 6ca41ba69d
Handle undefined linkType value for existing link-call nodes 2023-09-08 16:03:08 +01:00
GogoVega 7f9d142038
Add translation of v3.1-beta.4 changes 2023-09-08 15:45:00 +02:00
GogoVega 44a1f83b26
Add some capital letters 2023-09-08 15:39:46 +02:00
Nick O'Leary d9bbac20f3
Merge pull request #4320 from node-red/dev
Sync `dev` to `master` for 3.1.0 release
2023-09-06 14:04:36 +01:00
Nick O'Leary a48c57dd17
Merge pull request #4321 from node-red/rel-310
Bump version and changelog for 3.1.0 release
2023-09-06 13:57:44 +01:00
Nick O'Leary 77b235655c
Bump version and changelog 2023-09-05 21:29:20 +01:00
Nick O'Leary 8dc0261993
Merge pull request #4319 from Rotzbua/fix_duplicate
Fix duplicate declaration
2023-09-05 20:41:38 +01:00
Rotzbua 65d2ad68d3
Fix duplicate declaration 2023-09-05 19:02:39 +02:00
Nick O'Leary 52fde088e9
Merge pull request #4318 from node-red/4315-small-catalogs-fix
Default filter to All Catalogues and show nodes for small lists
2023-09-05 17:59:57 +01:00
Nick O'Leary ab6d537c3e
Default filter to All Catalogues and show nodes for small lists 2023-09-05 17:49:50 +01:00
Nick O'Leary 3a6078a56a
Merge pull request #4317 from node-red/update-deps-31
Dependency updates
2023-09-05 17:21:06 +01:00
Nick O'Leary b0c3fefcab
Dependency updates 2023-09-05 17:16:05 +01:00
Nick O'Leary 2bc739194e
Merge pull request #4316 from node-red/4221-handle-concurrent-write-file
Ensure storage/util.writeFile handles concurrent write attempts
2023-09-05 15:57:27 +01:00
Nick O'Leary afb06e8c9a
Update packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/util.js 2023-09-05 15:11:47 +01:00
Nick O'Leary 2c1274ff76
Ensure storage/util.writeFile handles concurrent write attempts 2023-09-05 15:09:11 +01:00
Nick O'Leary e18721a03e
Merge pull request #4313 from Rotzbua/fix_https
Migrate http -> https for nodered.org
2023-09-05 14:20:32 +01:00
Rotzbua 25120e44ce
Update outdated GH Actions 2023-09-05 14:56:14 +02:00
Rotzbua aea32cc279
Migrate http -> https for nodered.org 2023-09-05 14:55:56 +02:00
Nick O'Leary ce0feb2f42
Merge pull request #4310 from node-red/4206-ctrl-click-behaviour
Better distinguish between ctrl and meta keys on mac
2023-09-05 13:48:17 +01:00
Rotzbua 12a1c5c2f4
Add dependabot for GH Action workflows 2023-09-05 14:11:08 +02:00
Nick O'Leary d307968880
Better distinguish between ctrl and meta keys on mac
Fixes #4206, #4205
2023-09-05 12:36:44 +01:00
Nick O'Leary 1f98d19f77
Merge pull request #4309 from node-red/pr_4265
Adding function timeout to settings file (#4265)
2023-09-05 11:44:41 +01:00
Nick O'Leary 9a934c941f
Tidy up functionTimeout setting 2023-09-05 10:34:18 +01:00
Nick O'Leary dbc7284b97
Merge pull request #4308 from node-red/revert-3991-http-request-form-array
Revert "Support form-data arrays"
2023-09-05 10:03:13 +01:00
Nick O'Leary de63e17a4d
Merge pull request #4305 from Rotzbua/add_node_20_to_test
Add Node 20 to GH Action test matrix
2023-09-05 09:44:23 +01:00
Nick O'Leary 1bad643b30
Merge pull request #4302 from node-red/4291-auto-sub-mqtt-error
Remove unnecessary check for clientid if autoUnsub set
2023-09-05 09:43:52 +01:00
Nick O'Leary 57c44d4b18
Merge pull request #4301 from node-red/4292-fix-catch-in-subflow
Handle group-scoped nodes inside subflow
2023-09-05 09:43:44 +01:00
Nick O'Leary 7d06133787
Merge pull request #4299 from node-red/4296-fix-function-setup-height
Fix function setup tab layout
2023-09-05 09:43:35 +01:00
Nick O'Leary 261998201b
Merge pull request #4298 from node-red/4295-urlencode-context-api
Handle non-url-safe chars in context api
2023-09-05 09:43:17 +01:00
Nick O'Leary 9a899b929e
Merge pull request #4297 from node-red/4294-fix-junction-quick-add
Ensure junction appears when filtering quick-add list
2023-09-05 09:42:42 +01:00
Nick O'Leary 46b15a51d4
Revert "Support form-data arrays" 2023-09-05 09:41:48 +01:00
Rotzbua 5fcace8776
Add Node 20 to GH Action test matrix 2023-09-04 14:31:30 +02:00
Nick O'Leary a12826e719
Remove unnecessary check for clientid if autoUnsub set
Fixes #4291
2023-09-02 20:48:13 +01:00
Nick O'Leary 0dc024c722
Handle group-scoped nodes inside subflow
Fixes #4292
2023-09-01 16:38:46 +01:00
Nick O'Leary f6f36c5599
Fix function setup tab layout 2023-09-01 16:17:29 +01:00
Nick O'Leary 18bd318da2
Handle non-url-safe chars in context api 2023-09-01 16:06:05 +01:00
Nick O'Leary e1712073c9
Ensure junction appears when filtering quick-add list 2023-09-01 15:41:33 +01:00
Nick O'Leary 2478a7194e
Merge pull request #4287 from kazuhitoyokoi/dev-fixjsonata
Update message catalogs for JSONata Expression editor
2023-08-21 15:42:37 +01:00
Nick O'Leary 89b8e88df3
Merge pull request #4290 from kazuhitoyokoi/dev-fixgitpull
Fix git pull operation in project feature
2023-08-21 15:42:11 +01:00
Kazuhito Yokoi a7e80f351a Fix git pull operation in project feature 2023-08-21 11:18:01 +09:00
Stephen McLaughlin c39d3db121
Merge pull request #4288 from kazuhitoyokoi/dev-tooltip4nodesearch
Add tooltip to relevance sort button in user settings UI
2023-08-20 08:45:25 +01:00
Kazuhito Yokoi e7f9e61f2a Add tooltip to relevance sort button in user settings UI 2023-08-20 16:20:18 +09:00
Kazuhito Yokoi 3047ed1253 Improve message catalogs for JSONata Expression editor 2023-08-19 13:33:42 +09:00
Kazuhito Yokoi cf0c7ce583 Fix typo in Korean message catalog 2023-08-19 13:24:34 +09:00
Kazuhito Yokoi 206211f9ef Fix typo in English message catalog 2023-08-19 13:21:42 +09:00
Kazuhito Yokoi 8220ff8a35 Add docs for function in Japanese message catalog 2023-08-19 13:19:55 +09:00
Nick O'Leary 927fc5424b
Merge pull request #4283 from node-red/4282-dirty-junction-undo
Capture workspace dirty state when quick-adding junction
2023-08-18 15:53:25 +01:00
Nick O'Leary 64b94c68d3
Merge pull request #4284 from node-red/4268-add-clone-jsonata-docs
Add docs for $clone function
2023-08-18 15:52:45 +01:00
Nick O'Leary 3391d18942
Merge pull request #4286 from kazuhitoyokoi/dev-fixlinefeed
Change linefeed codes from "\r\n" to "\n" in Korean message catalogs
2023-08-18 15:52:27 +01:00
Kazuhito Yokoi 1414fed776 Change linefeed codes from "\r\n" to "\n" in Korean message catalogs 2023-08-18 20:39:13 +09:00
Nick O'Leary f884cb015a
Merge pull request #4285 from kazuhitoyokoi/dev-fixpermission
Fix file permissions of message catalogs
2023-08-17 10:29:25 +01:00
Kazuhito Yokoi 7e6a96db87 Fix file permissions of message catalogs 2023-08-17 18:17:58 +09:00
Nick O'Leary 966bbe2856
Add docs for $clone function 2023-08-16 16:02:33 +01:00
Nick O'Leary 2137211d42
Capture workspace dirty state when quick-adding junction
Fixes #4282
2023-08-16 15:58:08 +01:00
Nick O'Leary cc5533c183
Merge pull request #4281 from kazuhitoyokoi/master-roundedcorners
Fix not rounded corners in project settings UI
2023-08-16 15:53:07 +01:00
Nick O'Leary 19787e5d28
Merge pull request #4280 from kazuhitoyokoi/master-svgicon2
Add svg icons for nodes
2023-08-16 15:52:47 +01:00
Kazuhito Yokoi 6e46666895 Fix not rounded corners in project settings UI 2023-08-16 20:14:22 +09:00
Kazuhito Yokoi a87d7276c5 Add svg icons for nodes 2023-08-16 19:21:31 +09:00
Nick O'Leary c630b4f770
Merge pull request #4276 from kazuhitoyokoi/master-svgicon
Add svg icons for nodes
2023-08-16 10:23:35 +01:00
Nick O'Leary f719e5ad49
Merge pull request #4278 from node-red/update-tour
Update tour
2023-08-16 10:23:07 +01:00
Nick O'Leary 20557f20db
Update tour for 3.1.0 2023-08-15 20:36:07 +01:00
Kazuhito Yokoi 66144c1eb5 Add svg icons for nodes 2023-08-15 16:16:04 +09:00
Nick O'Leary 054d6870d5
Merge pull request #4267 from kazuhitoyokoi/dev-tostring4filenodes
Fix handling in file nodes when number is specified as file name
2023-08-14 17:28:07 +01:00
Nick O'Leary 04aa4897fe
Merge pull request #4275 from kazuhitoyokoi/dev-fixtest4jsonnode
Fix test cases of JSON node
2023-08-14 14:51:02 +01:00
Kazuhito Yokoi 72b22a4845 Fix test cases of JSON node 2023-08-14 22:44:02 +09:00
Kazuhito Yokoi 3fd2b5f4e1
Merge branch 'dev' into dev-tostring4filenodes 2023-08-14 21:16:57 +09:00
Kazuhito Yokoi 8a4128defb Fix handling in file nodes when 0 is specified as file name 2023-08-14 19:53:00 +09:00
Nick O'Leary 9542c22191
Merge pull request #4259 from kazuhitoyokoi/master-fixtooltip4textdiff
Add tooltip to text diff button
2023-08-14 11:11:32 +01:00
Nick O'Leary 15b8d79489
Merge pull request #4261 from DarshanDixit05/fix-Invalid-label
fix : Invalid label for attribute on the tray
2023-08-14 11:11:10 +01:00
Nick O'Leary 97470e94f1
Merge pull request #4262 from sammachin/patch-3
Handle 204 in httprequest JSON
2023-08-14 11:10:24 +01:00
Nick O'Leary 37a518b655
Merge pull request #4273 from kazuhitoyokoi/master-fixswitchnode
Fix broken text input in the switch node (again)
2023-08-14 11:09:05 +01:00
Nick O'Leary 312b2f8ddb
Merge pull request #4270 from AuspeXeu/master
fix: undefined node and wrong method name
2023-08-14 11:08:04 +01:00
Kazuhito Yokoi 9caa6a3553 Fix broken text input in the switch node (again) 2023-08-13 15:33:37 +09:00
Christian Vaas 6c597bba5b
fix: undefined node and wrong method name 2023-08-08 19:21:31 +02:00
Kazuhito Yokoi 0dd771351d Fix handling in file nodes when number is specified as file name 2023-08-06 20:35:33 +09:00
Kilian Hertel f7b64b101e adding function timeout to settings file
adding function timeout to settings file
2023-08-04 14:20:49 +02:00
Sam Machin ec86ec188b
Update Test
I've changed the DELETE test to expect an empty object as the node is requesting an object response, this will therefore cover testing the new functionality.
The subsequent HEAD test also expects a 204 response but the requested type is txt so that will still expect an empty string response.
2023-08-02 14:32:39 +01:00
Sam Machin 2b01a3fcd3
Handle 204 in httprequest JSON
If the http statusCode is 204 (Success, No Content) and the node return type is set to JSON this sets msg.payload as an empty json object so as to supress the JSON parse error
2023-08-02 14:15:29 +01:00
DarshanDixit05 9540502d06 removed package lock 2023-07-31 20:22:46 +05:30
DarshanDixit05 792dedb1f1 fix : Invalid label for attribute on the tray 2023-07-31 19:34:12 +05:30
Kazuhito Yokoi 0bf1343442 Add tooltip to text diff button 2023-07-29 16:36:55 +09:00
Nick O'Leary 4d3e3a73fd
Merge pull request #4257 from node-red/310b4
Bump versions for 3.1.0-beta.4
2023-07-26 17:10:20 +01:00
Nick O'Leary 1ffef393c2
Bump versions for 3.1.0-beta.4 2023-07-26 17:09:29 +01:00
Nick O'Leary 8b7b3e22d7
Merge branch 'master' into dev 2023-07-26 16:59:12 +01:00
Nick O'Leary 877aa75e4e
Merge pull request #4254 from manuel-buchner/fix-html-syntax-httprequest
fix html syntax in 21-httprequest.html
2023-07-26 16:41:09 +01:00
Nick O'Leary d21c0758b1
Merge pull request #4246 from kazuhitoyokoi/dev-fixfilenode
Fix JSONata in file nodes
2023-07-26 11:55:32 +01:00
Manuel Buchner 21be329008
fix html syntax in 21-httprequest.html 2023-07-18 17:16:17 +02:00
Stephen McLaughlin e7b27ce7fb
Merge pull request #4251 from kazuhitoyokoi/master-fixjpn4inject
Update Japanese translation for inject node
2023-07-16 09:26:33 +01:00
Stephen McLaughlin fb2c0e5441
Merge pull request #4252 from kazuhitoyokoi/dev-jpn
Add Japanese translation for 3.1.0
2023-07-16 09:24:38 +01:00
Stephen McLaughlin 29898ea68f
Merge pull request #4253 from kazuhitoyokoi/dev-fixtimeouticon
Fix timeout icon in function and link call nodes
2023-07-15 17:33:48 +01:00
Kazuhito Yokoi 9dcb8a729c Show timeout icon in link call node 2023-07-15 18:16:42 +09:00
Kazuhito Yokoi b66237efa8 Show timeout icon in function node 2023-07-15 18:15:34 +09:00
Kazuhito Yokoi 6d2f855227 Add Japanese translation for 3.1.0 2023-07-15 17:34:08 +09:00
Kazuhito Yokoi 638aa0372b Update Japanese translation for inject node 2023-07-15 17:23:14 +09:00
Stephen McLaughlin d5baa402c8
Merge pull request #4250 from node-red/4239-add-nr-subflow-name-env
Add NR_SUBFLOW_NAME/ID/PATH env vars
2023-07-14 17:24:14 +01:00
Nick O'Leary ec7e594ec1
Add NR_SUBFLOW_NAME/ID/PATH env vars
Closes #4239
2023-07-14 17:14:39 +01:00
Nick O'Leary 3fad690d1e
Merge pull request #4248 from node-red/node-catalog-filter
Improve Catalogue visibility
2023-07-14 16:35:54 +01:00
Steve-Mcl 15973768e2 improve catalog visibility/ux 2023-07-14 12:57:27 +01:00
Stephen McLaughlin 0d73a4b013
remove console debugging 2023-07-13 20:28:24 +01:00
Stephen McLaughlin 50f11faf1f
remove console debugging 2023-07-13 20:28:16 +01:00
Stephen McLaughlin cfb7406fb8
remove console debugging 2023-07-13 20:28:09 +01:00
Steve-Mcl 9008f063c3 hook up filtering to catalog selection 2023-07-13 19:49:17 +01:00
Steve-Mcl 368ac4ed5c i18n update 2023-07-13 19:48:34 +01:00
Steve-Mcl 6ac2e703a6 fix layout bugs 2023-07-13 19:48:13 +01:00
Kazuhito Yokoi cd9a5f112a Add test cases to cover the JSONata issue in file nodes 2023-07-14 00:27:44 +09:00
Kazuhito Yokoi f3847a17f3 Fix JSONata in file-in node 2023-07-14 00:24:50 +09:00
Steve-Mcl 1fa4aaf706 add catalog select 2023-07-13 13:27:42 +01:00
Nick O'Leary db108a37cf
Merge pull request #4230 from node-red/revert-4225-4196-fix-jsonata-env-var-async
Evaluate all env vars as part of async flow start
2023-07-11 23:06:09 +01:00
Nick O'Leary a3e41d4f35
Update packages/node_modules/@node-red/util/lib/util.js
Co-authored-by: Stephen McLaughlin <44235289+Steve-Mcl@users.noreply.github.com>
2023-07-11 21:11:26 +01:00
Kazuhito Yokoi 80e33489d9 Fix JSONata in file nodes 2023-07-12 02:36:39 +09:00
Nick O'Leary 271b1327c7
Merge branch 'dev' into revert-4225-4196-fix-jsonata-env-var-async 2023-07-10 12:37:41 +01:00
Nick O'Leary 5d990ff4c5
Merge pull request #4242 from kazuhitoyokoi/master-fixswitchnode
Fix broken text input in the switch node
2023-07-10 12:35:50 +01:00
Nick O'Leary 69aacc6256
Merge pull request #4228 from node-red/4223-fix-http-request-keep-alive
Fix connection keep-alive in http request node
2023-07-10 12:31:28 +01:00
Nick O'Leary a5066d529f
Use flowChanged in diff to mark flows to restart 2023-07-10 12:30:36 +01:00
Nick O'Leary 5bf034f3c1
Merge pull request #4238 from ZJvandeWeg/patch-1
help: Template might be a better fit to create multiline strings
2023-07-10 12:10:32 +01:00
Nick O'Leary 0743ff371c
Merge pull request #4244 from Steve-Mcl/3877-fix-touch-join-junc
3877-fix-touch-join-junc
2023-07-10 12:09:54 +01:00
Nick O'Leary 7481b78b16
Force reeval of env vars if group/flow/global envs change 2023-07-10 12:04:52 +01:00
Steve-Mcl bd589aa140 fix touch mode wire linking 2023-07-10 10:24:28 +01:00
Steve-Mcl 8fa1d4def5 Merge remote-tracking branch 'upstream/dev' into dev 2023-07-10 10:17:17 +01:00
Stephen McLaughlin fe3626035c
Merge pull request #4243 from kazuhitoyokoi/master-jpn4subflow
Add Japanese translation for error message when creating subflow
2023-07-05 16:22:38 +01:00
Kazuhito Yokoi c4019bd91d Add Japanese translation for error message when creating subflow 2023-07-02 15:51:35 +09:00
Kazuhito Yokoi 18e1b670ca Make handlings one line 2023-07-02 01:33:11 +09:00
Kazuhito Yokoi cd76c934b6 Fix broken text input in the switch node 2023-07-02 00:40:15 +09:00
Zeger-Jan van de Weg db98641a32
help: Template might be a better fit to create multiline strings
The inject node doesn't create multiline strings as the help text explains. While there's indeed many ways to circumvent this, the Template node might be more "low-code" than the function node is.
2023-06-27 09:53:39 +02:00
Nick O'Leary 59745fec0b
Merge pull request #4231 from bvmensvoort/4219-missing-error-logging-for-config-nodes
Show errors and statuses of config nodes in the sidebar when no catch node is available
2023-06-23 16:46:51 +01:00
Nick O'Leary 8bcaea7830
Merge pull request #4232 from node-red/wiring-tweak
Improve wiring for horizontally aligned nodes
2023-06-23 16:46:02 +01:00
Nick O'Leary 56ed32e4a1
Add background to node status 2023-06-23 16:09:34 +01:00
Nick O'Leary 3209777aba
Tidy up flow/util 2023-06-23 15:48:06 +01:00
Nick O'Leary 11f9ad8ca3
Remove debug for wiring 2023-06-23 12:29:33 +01:00
Nick O'Leary 26fc942c79
Improve wiring for horizontally aligned nodes 2023-06-23 12:24:48 +01:00
Nick O'Leary f196493402
Evaluate global-config env on startup 2023-06-23 09:35:00 +01:00
Nick O'Leary 1c5fdb6ab6
Evaluate all env vars as part of async flow start 2023-06-23 02:11:57 +01:00
bvmensvoort 3ed530ed9e Merge branch 'dev' into 4219-missing-error-logging-for-config-nodes 2023-06-22 20:14:56 +02:00
Nick O'Leary 8db2972288
Restore expended env var tests 2023-06-22 10:24:29 +01:00
Nick O'Leary 51a0b68d8e
Revert "Add callback to getSetting to support async jsonata access" 2023-06-22 10:17:48 +01:00
Steve-Mcl 2fdbe12a7f Merge remote-tracking branch 'upstream/dev' into dev 2023-06-22 09:35:44 +01:00
Nick O'Leary 2448e137c8
Merge pull request #4229 from node-red/4125-httpstatic-middleware
Add support for httpStatic middleware
2023-06-21 16:57:00 +01:00
Nick O'Leary 33899763ef
Add support for httpStatic middleware 2023-06-21 16:47:47 +01:00
Steve-Mcl d8f4f92e1d Merge remote-tracking branch 'upstream/dev' into dev 2023-06-21 16:39:32 +01:00
Nick O'Leary ce679f90ee
Merge pull request #4177 from k1ln/adding-timeout-to-functio-node
adding timeout attribute to function node
2023-06-21 15:57:44 +01:00
Nick O'Leary 8fb379079b
Merge pull request #4225 from node-red/4196-fix-jsonata-env-var-async
Add callback to getSetting to support async jsonata access
2023-06-21 15:56:11 +01:00
Nick O'Leary b382d048de
Merge pull request #4227 from node-red/4196-add-callback-opt-to-env.get
Adds optional callback to env.get in function node
2023-06-21 15:55:40 +01:00
Nick O'Leary 610cb170e7
Fix connection keep-alive in http request node 2023-06-21 15:45:23 +01:00
Nick O'Leary 4d9fcaeebf
Update env.get type hint 2023-06-21 15:00:27 +01:00
Nick O'Leary aa0225f59f
Apply suggestions from code review 2023-06-21 14:27:32 +01:00
Nick O'Leary 2571949e90
Merge pull request #4143 from inNETMonitoring/fix/joinManual
fix: closes #4142
2023-06-21 14:24:53 +01:00
Kilian Hertel 20d2c11154
Merge branch 'dev' into adding-timeout-to-functio-node 2023-06-21 15:24:24 +02:00
Nick O'Leary 3f604e9d93
Adds optional callback to env.get in function node 2023-06-21 14:20:23 +01:00
Nick O'Leary 234e92db12
Merge pull request #4215 from node-red/4213-fix-subflow-env
Fix subflow env var `length` not correctly handled in Node-RED
2023-06-21 14:06:05 +01:00
Nick O'Leary 01c56f6515
Merge pull request #4200 from GogoVega/french-translation-of-welcome-tours
French translation of Welcome Tours
2023-06-21 14:03:56 +01:00
Nick O'Leary 026be5a990
Merge pull request #4199 from GogoVega/french-translation-of-v3.1.0-beta.3
French translation of v3.1.0-beta.3 changes
2023-06-21 14:01:10 +01:00
Nick O'Leary aafb86ef09
Merge branch 'dev' into adding-timeout-to-functio-node 2023-06-21 13:35:48 +01:00
Nick O'Leary 1a24efe85d
Merge pull request #4209 from HiroyasuNishiyama/jp-message
add Japanese message for 3.1.0 beta 3
2023-06-21 13:34:23 +01:00
Nick O'Leary 1ad67d5c73
Merge pull request #4218 from node-red/4204-cant-go-fullscreen-on-a-mac
Dont handle shortcuts with both cmd+ctrl modifiers
2023-06-21 13:31:21 +01:00
Nick O'Leary 0b3f7dbb1f
Merge pull request #4203 from node-red/fix-delay-node-flush-issue-4202
Fix delay node flush issue
2023-06-21 13:27:32 +01:00
Nick O'Leary e90007860c
Merge pull request #4207 from node-red/4197-status-catch-label
Update status and catch node labels in group mode
2023-06-21 13:27:09 +01:00
Nick O'Leary 3b38669c04
Merge pull request #4163 from XuyuEre/patch-1
Add missing Simplified Chinese translations for editor.json
2023-06-21 13:26:24 +01:00
Steve-Mcl 74ab03288b fix typos in test flows 2023-06-20 12:18:03 +01:00
Steve-Mcl 502dacd865 fix failure to return after calling callback 2023-06-17 22:44:55 +01:00
Steve-Mcl 31bc99cd61 remove .only 2023-06-17 22:29:39 +01:00
Steve-Mcl 5435c9ebd2 fix test (missing getUserSettings stub 🤷‍♂️) 2023-06-17 22:12:09 +01:00
Steve-Mcl ceb9a320ba expand existing env var test for all scenarios 2023-06-17 22:11:02 +01:00
Steve-Mcl ee8b2a0b58 Delete stray it.only 2023-06-17 22:03:59 +01:00
Steve-Mcl 8202f1b7c6 Add env var is JSONata expr test 2023-06-17 21:54:32 +01:00
Steve-Mcl 4808cac89d Add async to all paths that JSONata env var calls 2023-06-17 21:14:56 +01:00
bvmensvoort c1ea3380eb Show errors and statuses of config nodes in the sidebar when no catch nodes are used 2023-06-10 21:27:06 +02:00
Stephen McLaughlin 694fdebc71
dont handle both cmd+ctrl 2023-06-10 16:23:21 +01:00
Steve-Mcl 1cbd910e5d correct declaration of env object/dic/lookup 2023-06-09 11:30:21 +01:00
Steve-Mcl b102ef512e ensure object before attempting to call function 2023-06-09 11:29:54 +01:00
Kilian Hertel 220a621dc6
Merge branch 'dev' into adding-timeout-to-functio-node 2023-06-02 12:20:51 +02:00
BitCaesar 0db288e6dc
Merge branch 'dev' into fix/joinManual 2023-05-31 16:10:41 +02:00
Stephen McLaughlin f8175fc325
Update packages/node_modules/@node-red/nodes/locales/en-US/messages.json
Co-authored-by: Nick O'Leary <nick.oleary@gmail.com>
2023-05-31 14:11:06 +01:00
Stephen McLaughlin 5eee38e7de
Update packages/node_modules/@node-red/nodes/locales/en-US/messages.json
Co-authored-by: Nick O'Leary <nick.oleary@gmail.com>
2023-05-31 14:10:59 +01:00
Nick O'Leary fb5b470966
Merge pull request #4208 from node-red/4198-group-edit-stack-overflow
Dont clone the group nodes `node` array when saving edits
2023-05-31 09:50:31 +01:00
Kilian Hertel 876053f858
Merge branch 'dev' into adding-timeout-to-functio-node 2023-05-30 14:55:56 +02:00
GogoVega 9714ef19de
Missing french translation of beta 3 changes 2023-05-30 14:19:39 +02:00
HiroyasuNishiyama 613a345771 add additional Japanese translation for status and catch node 2023-05-30 20:58:17 +09:00
BitCaesar 4fe29dd33f
Merge branch 'dev' into fix/joinManual 2023-05-30 10:42:04 +02:00
Steve-Mcl 4b24223290 Dont clone group node `node` array
fixes #4198
2023-05-29 23:55:52 +01:00
Steve-Mcl a78da0db1e Update status and catch node labels in group mode 2023-05-29 22:47:29 +01:00
Dave Conway-Jones 5e4fce1e12
Fix delay node flush issue
to close #4202
2023-05-27 17:51:21 +01:00
GogoVega 4cb2624a5d
French translation of Welcome Tours 2023-05-26 20:58:50 +02:00
GogoVega 58e045f25d
French translation of changes from v3.1.0-beta.3 2023-05-26 20:52:25 +02:00
Nick O'Leary 26a770e490
Merge pull request #4192 from node-red/prep-310-beta3
Bump everything for beta.3
2023-05-26 13:31:53 +01:00
Nick O'Leary dfe145a0ed
Merge pull request #4190 from Steve-Mcl/fix-mqtt-keep-subscription-4132
Fix new feature "mqtt keep subscription"
2023-05-26 13:31:15 +01:00
Steve-Mcl 6cb4c9224d Merge remote-tracking branch 'upstream/dev' into fix-mqtt-keep-subscription-4132 2023-05-26 10:46:59 +01:00
Nick O'Leary 4047612b96
Merge branch 'master' into patch-1 2023-05-26 10:31:29 +01:00
Nick O'Leary 1978a360af
Merge pull request #4191 from node-red/update-xml2js
Update xml2js
2023-05-26 10:30:13 +01:00
Nick O'Leary 1f46b3fda9
Merge pull request #4193 from kazuhitoyokoi/prep-310-beta3-jp
Add Japanese translations for v3.1.0-beta.3
2023-05-26 10:29:59 +01:00
Nick O'Leary 47a945d92e
Merge pull request #4195 from node-red/4191-function-error-badge-not-shown
fix function node error badge not shown
2023-05-26 10:29:23 +01:00
Steve-Mcl 59ec87a393 fix function node error badge not shown
fixes #4194
2023-05-26 10:12:48 +01:00
Kazuhito Yokoi 9423104dad Add Japanese translations for v3.1.0-beta.3 2023-05-26 12:35:53 +09:00
Nick O'Leary 614834090e
Bump everything for beta.3 2023-05-25 18:10:01 +01:00
Nick O'Leary 2f9523a586
Merge branch 'dev' into adding-timeout-to-functio-node 2023-05-25 17:43:04 +01:00
Nick O'Leary 3a9f38a873
Merge branch 'master' into dev 2023-05-25 17:42:34 +01:00
Nick O'Leary 0697c26dd1
Merge branch 'dev' into adding-timeout-to-functio-node 2023-05-25 17:33:41 +01:00
Nick O'Leary cfa25dc655
Update xml2js 2023-05-25 17:30:17 +01:00
Nick O'Leary b3498a888d
Merge pull request #4189 from node-red/monaco-0-38-0
Monaco 0.38.0
2023-05-25 17:27:20 +01:00
Steve-Mcl 0528c12782 Merge remote-tracking branch 'upstream/dev' into fix-mqtt-keep-subscription-4132 2023-05-25 12:07:33 +01:00
Steve-Mcl e19b60b202 patch the editor to fix invisible action list 2023-05-25 11:30:24 +01:00
Steve-Mcl 0ed274f994 remove useless file 2023-05-25 10:59:09 +01:00
Steve-Mcl e8378b382b update function node env typing 2023-05-25 10:58:25 +01:00
Nick O'Leary e6c12a0c54
Merge pull request #4186 from node-red/3843-alternative-impl
Remove unused function
2023-05-22 23:20:18 +01:00
Nick O'Leary 70620ad12d
Merge pull request #4184 from node-red/4113-group-selection-api
Enable RED.view.select to select group by id
2023-05-22 23:15:56 +01:00
Nick O'Leary 991f13e704
Remove unused function 2023-05-22 23:14:31 +01:00
Nick O'Leary 14bbe79651
Merge pull request #4185 from node-red/3843-alternative-impl
feature: new node selection group for catch and status nodes
2023-05-22 23:13:27 +01:00
Nick O'Leary 2388232179
Fix catch/status group scoping to handle group hierarchies 2023-05-22 22:33:31 +01:00
Nick O'Leary 11ded1e497
Merge branch 'dev' into 3843-alternative-impl 2023-05-22 17:41:23 +01:00
Nick O'Leary 9479b56549
Merge pull request #4109 from kevinGodell/dev
httpStatic feature
2023-05-22 16:54:29 +01:00
Nick O'Leary 90e32f52c9
Enable RED.view.select to select group by id 2023-05-22 16:51:17 +01:00
Nick O'Leary ce6a4845f2
Merge pull request #4113 from Steve-Mcl/select-deep-linked-item
Select the item that is specified in a deep link URL
2023-05-22 16:48:00 +01:00
Nick O'Leary 0f5cf1d51c
Merge pull request #4183 from node-red/4111-subflow-node-position
Place subflow outputs/inputs relative to current view
2023-05-22 16:46:56 +01:00
Kilian Hertel c2812b05a4
Merge branch 'master' into adding-timeout-to-functio-node 2023-05-22 17:42:59 +02:00
Nick O'Leary 5d698d66d0
Merge pull request #4156 from node-red/4133-mqtt-v5-disconnects-when-subscribing-to-aws-core-broker
Dont use `subscriptionIdentifier` if broker doesnt support it
2023-05-22 16:42:25 +01:00
Nick O'Leary 1a149592d6
Merge pull request #4181 from node-red/4122-exit-codes
Ensure non-zero exit codes for errors
2023-05-22 16:39:22 +01:00
Nick O'Leary 5e2e0b2e39
Merge pull request #4182 from node-red/4101-merge-group-env-vars
Combine existing env vars when merging groups
2023-05-22 16:39:11 +01:00
Nick O'Leary 7a4f48e4fb
Place subflow outputs/inputs relative to current view
Fixes #4111
2023-05-22 16:26:38 +01:00
Nick O'Leary 2ae2ec2578
Combine existing env vars when merging groups
Closes #4101
2023-05-22 16:07:14 +01:00
Nick O'Leary a790136164
Merge branch 'master' into 4133-mqtt-v5-disconnects-when-subscribing-to-aws-core-broker 2023-05-22 15:16:58 +01:00
Nick O'Leary e6c454bba5
Ensure non-zero exit codes for errors 2023-05-22 15:11:57 +01:00
Nick O'Leary b904c23e4d
Merge pull request #4180 from node-red/4168-make-module-install-synchronous
Ensure external modules are installed synchronously
2023-05-22 14:39:26 +01:00
Nick O'Leary ece3eb2e7b
Merge pull request #4155 from node-red/update-deps
Update dependecies include got
2023-05-22 14:29:30 +01:00
Nick O'Leary 18610bb540
Ensure external modules are installed synchronously
Fixes #4168
2023-05-22 14:24:11 +01:00
Nick O'Leary 69d643942c
Merge branch 'dev' into update-deps 2023-05-22 13:57:47 +01:00
Nick O'Leary 6e1b298282
Reconstruct xml2js output as proper object 2023-05-22 13:57:12 +01:00
Nick O'Leary c2387777c9
Merge branch 'master' into dev 2023-05-22 12:52:07 +01:00
Nick O'Leary 32a49a1ef1
Merge pull request #4172 from wooferguy/Zombie-Junctions-Fix
Check for group
2023-05-22 12:51:46 +01:00
Nick O'Leary 4b88775183
Merge pull request #4166 from node-red/fix-RBE-for-missing-payload
Fix RBE for missing "payload"
2023-05-22 12:49:07 +01:00
Nick O'Leary 29db82625f
Merge pull request #4162 from kazuhitoyokoi/master-fixdownload4ipad
Fix content type for downloading flows.json
2023-05-22 12:48:05 +01:00
Nick O'Leary 2b6c9e3439
Merge pull request #4157 from kazuhitoyokoi/master-addjpn
Add Japanese translation for keyboard shortcut scope
2023-05-22 12:47:46 +01:00
Nick O'Leary a7e0444e92
Merge pull request #4158 from kazuhitoyokoi/dev-addjpn
Add Japanese translations for v3.1 beta.2
2023-05-22 11:36:32 +01:00
Nick O'Leary e9e32550df
Merge pull request #4178 from node-red/4169-remove-express-header
Ensure express server options are applied consistently
2023-05-22 11:35:32 +01:00
Nick O'Leary 59b059f06f
Merge pull request #4179 from node-red/4170-remove-version-from-theme
Remove version info from theme endpoint
2023-05-22 11:35:20 +01:00
Nick O'Leary 42166f5fc4
Merge pull request #4153 from node-red/remove-empty-global-config
Avoid creating empty global-config node if not needed
2023-05-22 11:33:07 +01:00
Nick O'Leary eefe69d136
Merge branch 'dev' into 4170-remove-version-from-theme 2023-05-22 11:29:54 +01:00
Nick O'Leary aabaf7c5e2
Merge branch 'dev' into 4169-remove-express-header 2023-05-22 11:29:45 +01:00
Nick O'Leary 9ea4853c89
Merge branch 'master' into Zombie-Junctions-Fix 2023-05-22 11:29:31 +01:00
Nick O'Leary 3b5e21761b
Merge branch 'master' into fix-RBE-for-missing-payload 2023-05-22 11:29:19 +01:00
Nick O'Leary 2d76bf29cf
Merge branch 'master' into master-fixdownload4ipad 2023-05-22 11:29:02 +01:00
Nick O'Leary a684ec235f
Merge branch 'dev' into dev-addjpn 2023-05-22 11:28:50 +01:00
Nick O'Leary c21f7abe4e
Merge branch 'master' into master-addjpn 2023-05-22 11:28:40 +01:00
Nick O'Leary 8c191263c0
Merge branch 'master' into 4133-mqtt-v5-disconnects-when-subscribing-to-aws-core-broker 2023-05-22 11:28:24 +01:00
Nick O'Leary 47005043a5
Merge branch 'dev' into remove-empty-global-config 2023-05-22 11:27:43 +01:00
Nick O'Leary 1e36ba8429
Merge branch 'master' into dev 2023-05-22 11:26:55 +01:00
Nick O'Leary 2679ff277c
Merge pull request #4173 from wooferguy/Inject-Node-Test-Fix
Invalid JSONata Inject node test passing condition
2023-05-22 11:26:38 +01:00
Nick O'Leary 0e52271ba9
Remove version info from theme endpoint
Fixes #4170
2023-05-22 11:00:15 +01:00
Nick O'Leary 57359d1659
Ensure express server options are applied consistently
Fixes #4169
2023-05-22 10:54:37 +01:00
Kilian Hertel 2253417459 adding timeout attribute to function node
- [x] New feature (non-breaking change which adds functionality)

Discussion here:
https://discourse.nodered.org/t/function-node-doesnt-have-timeout-feature/78483

## Proposed changes

Adding a timeout attribute to the function node, so an endless funciton doesnt break the node red server.

## Checklist

- [x] I have read the [contribution guidelines](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
- [x] For non-bugfix PRs, I have discussed this change on the forum/slack team.
- [x] I have run `grunt` to verify the unit tests pass
- [x] I have added suitable unit tests to cover the new/changed functionality
2023-05-22 10:16:37 +02:00
wooferguy 9e3f148273 Invalid JSONata Inject node test passing condition
This test would sometimes run twice, causing the author to increase its catch count to 2 before considering the test complete. However even one pass proves the node is behaving as expected, and it always runs at least once. I have left the conditional statement in so it can be changed in future.
2023-05-17 18:56:07 +12:00
wooferguy 7e9042e9f7 Check for group
Remove junction from groups node list if it is present.
2023-05-17 05:14:18 +12:00
Steve-Mcl dee68b903c fix sub/unsub when using "dont unsub" 2023-05-13 11:14:57 +01:00
Dave Conway-Jones 67c5a248ad
Fix RBE for missing "payload"
To close #4165
2023-05-08 09:28:35 +01:00
xuyu0v0 940512fb2c
Update editor.json
Update Simplified Chinese translation files
2023-05-07 20:16:28 +08:00
Kazuhito Yokoi e8ddee24a9 Use correct content type for downloading flows.json 2023-05-06 21:10:49 +09:00
Kazuhito Yokoi be4eab65f6 Fix content type for downloading flows.json 2023-05-06 20:00:20 +09:00
Kazuhito Yokoi fb5ffa1c31 Add Japanese translation for keyboard shortcut scope 2023-05-01 14:44:14 +09:00
Kazuhito Yokoi aff0bd3f6a Add Japanese translation for auto unsubscribe in MQTT node 2023-05-01 14:28:02 +09:00
Kazuhito Yokoi c0650cc0f5 Add Japanese translation for keyboard shortcut scope 2023-05-01 13:53:54 +09:00
Stephen McLaughlin 02c7d014cb
dont use subscriptionIdentifier no broker support 2023-04-29 21:00:26 +01:00
Nick O'Leary e29479fd25
Merge branch 'dev' into remove-empty-global-config 2023-04-28 21:49:16 +01:00
Nick O'Leary 46ae66c8b2
Bump test helper version 2023-04-28 21:42:36 +01:00
Nick O'Leary 20abe4a40c
Update dependecies include got 2023-04-28 21:37:03 +01:00
Nick O'Leary 55a9a29f76
Merge branch 'master' into dev 2023-04-28 18:49:03 +01:00
Nick O'Leary 67dd7e30fa
Merge pull request #4154 from node-red/add-editor-scope
Add editor scope to keyboard shortcut scope select
2023-04-28 18:47:25 +01:00
Nick O'Leary e9a08af73b
Merge pull request #4148 from GerwinvBeek/Bugs/not-loading-missing-subflow
Handle missing subflow when loading flows into the editor
2023-04-28 18:47:10 +01:00
Nick O'Leary 08b1ef2766
Merge branch 'master' into add-editor-scope 2023-04-28 18:07:47 +01:00
Nick O'Leary 667d8673d4
Merge branch 'master' into Bugs/not-loading-missing-subflow 2023-04-28 18:07:28 +01:00
Nick O'Leary d44ea9d558
Merge pull request #4152 from node-red/remove-coveralls
Remove coveralls reporting as it is failing builds
2023-04-28 18:07:10 +01:00
Nick O'Leary 86dfe86813
Add editor scope to keyboard shortcut scope select 2023-04-28 17:47:16 +01:00
Nick O'Leary b129e11c8f
Avoid creating empty global-config node if not needed 2023-04-28 17:36:55 +01:00
Nick O'Leary 246409970d
Remove coveralls reporting as it is failing builds 2023-04-28 17:17:40 +01:00
Nick O'Leary bd7b3bb4d7
Merge pull request #4108 from node-red/fix-group-select-delete
Fix group selection when using lasso
2023-04-28 15:28:04 +01:00
Nick O'Leary 841f1849c8
Update packages/node_modules/@node-red/runtime/lib/flows/util.js 2023-04-28 15:25:29 +01:00
Nick O'Leary 00e7e4d43c
Merge pull request #4147 from kazuhitoyokoi/master-selection2subflow
Add node width and height to boundingBox
2023-04-28 15:23:02 +01:00
Nick O'Leary ee43a845aa
Merge pull request #4128 from kazuhitoyokoi/master-fixquickadddialog
Fix broken subflow icon and overflowed name in quick add dialog
2023-04-28 15:22:25 +01:00
Nick O'Leary a7cc66af93
Merge pull request #4130 from kazuhitoyokoi/master-fixoverflow
Wrap long node name in tooltip, info sidebar, and node property
2023-04-28 15:21:37 +01:00
Nick O'Leary f8701cfed0
Merge pull request #4135 from kazuhitoyokoi/master-fixactionlist
Support uppercase in keyword when searching action list
2023-04-28 15:20:56 +01:00
Nick O'Leary 6b205bf303
Merge pull request #4141 from bonanitech/palette-search-background
Fix palette filter background
2023-04-28 15:20:38 +01:00
Nick O'Leary 07729247ac
Merge pull request #4145 from kazuhitoyokoi/dev-addjpn4tour
Add Japanese translations for welcome tour of 3.1.0 beta.2
2023-04-28 15:16:13 +01:00
Nick O'Leary 792b310fad
Merge pull request #4151 from mw75/master
Use editor path in generating localStorage keys
2023-04-28 15:15:55 +01:00
Mario Wolff ed2c9d24e8 use replace instead of replaceAll to support node14 2023-04-28 14:53:18 +02:00
Mario Wolff f917212d67 a simple approach to fix #2657 2023-04-28 12:35:19 +02:00
Gerwin van Beek 6fbcec8b98 Solved node red not loading without error when subflow is missing 2023-04-24 11:51:06 +02:00
Kazuhito Yokoi c30e57c31d Add node width and height to boundingBox 2023-04-23 20:47:17 +09:00
Kazuhito Yokoi 674c9f0405 Add Japanese translations for welcome tour of 3.1.0 beta.2 2023-04-22 21:26:02 +09:00
BitCaesar e16d5cf83d fix: closes #4142
The issue occured because the partId is set to "_" by default and is never overwritten in manual mode.
With concurrent messages and different processing times all parts of all messages have the identifier "_" and are assembled following the FIFO principle.
2023-04-20 12:28:36 +02:00
Mauricio Bonani df3dc36874 Fix palette filter background 2023-04-17 10:57:40 -04:00
Kazuhito Yokoi 7b71d8d212 Support uppercase in keyword when searching action list 2023-04-10 01:25:34 +09:00
Kazuhito Yokoi 2eaae4b83f Wrap long node name in info sidebar 2023-04-05 00:56:27 +09:00
Kazuhito Yokoi 3c66af9506 Wrap long node name in tooltip and node property 2023-04-05 00:45:46 +09:00
Nick O'Leary e5d579c1bb
Merge pull request #4120 from kazuhitoyokoi/master-fixbuildstatus
Use build status icon of GitHub Actions
2023-04-01 17:29:41 +01:00
Kazuhito Yokoi ee811ca89b
Use build status icon of GitHub Actions 2023-04-02 00:39:33 +09:00
Kazuhito Yokoi 8e4933041d Wrap text of label in quick add dialog 2023-04-01 02:34:11 +09:00
Kazuhito Yokoi 1f3559e14f Set label width in quick add dialog to prevent broken node icon 2023-04-01 02:28:48 +09:00
Steve-Mcl 12ac260dce select the deep link item 2023-03-26 11:00:28 +01:00
Nick O'Leary 53f99ecc23
Merge pull request #4112 from node-red/editor-cred-export
Ensure no node credentials are included when exporting to clipboard
2023-03-24 09:50:14 +00:00
Nick O'Leary 347410f744
Do not include credentials when exporting to clipboard 2023-03-24 09:44:10 +00:00
Kevin Godell 7ae3e32abd update example and document feature for httpStatic options 2023-03-20 17:51:05 -05:00
Kevin Godell 54b2215164 pass options to express.static 2023-03-20 17:51:05 -05:00
Kevin Godell 889489e33e set default when root is not defined 2023-03-20 17:51:05 -05:00
Nick O'Leary 4667e76c6b
Merge pull request #4078 from flying7eleven/option-to-disable-mqtt-ubsubscribe-on-disconnect
Option to disable MQTT topic unsubscribe on disconnect
2023-03-20 20:32:08 +00:00
Nick O'Leary a10d07d1dc
Merge pull request #4100 from sroebert/feature/sha-digest-algorithms
Added SHA-256 and SHA-512-256 digest authentication
2023-03-20 20:30:48 +00:00
Nick O'Leary 9f1ac733b7
Merge pull request #4103 from Steve-Mcl/add-missing-timer-types
add "timers" types to known types
2023-03-20 20:29:36 +00:00
Nick O'Leary 33ea25922d
Update packages/node_modules/@node-red/editor-client/src/js/ui/view.js 2023-03-20 20:29:10 +00:00
Nick O'Leary b56bd7bb5e
Fix group selection when using lasso 2023-03-20 17:15:45 +00:00
Tim Janke e7617de1ee
Replace a `var` with a `const` since its value won't be modified further on 2023-03-13 13:22:51 +01:00
Steve-Mcl 97fbad4dc5 add "timers" types to known types 2023-03-13 10:02:46 +00:00
Steven Roebert ddf6023983 Added unit tests for digest authentication 2023-03-12 10:08:32 +01:00
Steven Roebert daa84c9415 Added SHA-256 and SHA-512-256 algorithms to http digest authentication 2023-03-11 12:07:54 +01:00
Stephen McLaughlin 586006de4d
Merge pull request #4097 from node-red/fix-json-expr-test
Fix jsonata expression test ui
2023-03-07 17:13:50 +00:00
Stephen McLaughlin af8ec9f02b
Merge pull request #4096 from node-red/fix-search-repeat
Fix search button in palette popover
2023-03-07 17:00:50 +00:00
Nick O'Leary dc6abb691e
Fix jsonata expression test ui 2023-03-07 16:59:13 +00:00
Nick O'Leary d273c38194
Fix search button in palette popover 2023-03-07 16:47:44 +00:00
Tim Janke c94f0896e1
Ensure that a client id is set if autoUnsubscribe is disabled 2023-02-27 14:11:22 +01:00
Tim Janke 182361c176
Re-enable the tests for the autoUnsubscribe property 2023-02-27 12:43:04 +01:00
Tim Janke 8dcc530f44
Refactor to use the already existing autoUnsubscribe property
The tests had an unused property called autoUnsubscribe. I refactored
the code to use this wording too.
2023-02-27 12:41:29 +01:00
Tim Janke b5dfd62c99
Add an option to not unsubscribe topics on disconnect 2023-02-27 12:21:39 +01:00
NetHans e147602a3a JSdoc documentation fixed 2022-08-18 21:27:59 +02:00
NetHans b7a016edcf Update Flow.js
replace tabs with whitespace
2022-08-16 06:37:03 +02:00
NetHans 371253a4f6 catch node extended 2022-08-14 20:45:01 +02:00
NetHans 08ce6cce97 status node extended 2022-08-14 20:24:05 +02:00
NetHans d7a10328c0 function for group analysis added 2022-08-14 20:20:59 +02:00
207 changed files with 7824 additions and 4958 deletions

View File

@ -30,5 +30,5 @@ the [forum](https://discourse.nodered.org) or
- [ ] I have read the [contribution guidelines](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
- [ ] For non-bugfix PRs, I have discussed this change on the forum/slack team.
- [ ] I have run `grunt` to verify the unit tests pass
- [ ] I have run `npm run test` to verify the unit tests pass
- [ ] I have added suitable unit tests to cover the new/changed functionality

15
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,15 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "monthly"
groups:
github-actions:
patterns:
- "*"

View File

@ -14,20 +14,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out node-red repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
path: 'node-red'
- name: Check out node-red-docker repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: 'node-red/node-red-docker'
path: 'node-red-docker'
- name: Check out node-red.github.io repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: 'node-red/node-red.github.io'
path: 'node-red.github.io'
- uses: actions/setup-node@v1
- uses: actions/setup-node@v3
with:
node-version: '16'
- run: node ./node-red/.github/scripts/update-node-red-docker.js

View File

@ -17,9 +17,9 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16, 18]
node-version: [16, 18, 20]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
@ -29,8 +29,8 @@ jobs:
- name: Run tests
run: |
npm run test
- name: Publish to coveralls.io
if: ${{ matrix.node-version == 16 }}
uses: coverallsapp/github-action@v1.1.2
with:
github-token: ${{ github.token }}
# - name: Publish to coveralls.io
# if: ${{ matrix.node-version == 16 }}
# uses: coverallsapp/github-action@v1.1.2
# with:
# github-token: ${{ github.token }}

1
.gitignore vendored
View File

@ -27,3 +27,4 @@ docs
.vscode
.nyc_output
sync.ffs_db
package-lock.json

View File

@ -1,4 +1,103 @@
#### 3.1.0-beta.2: Beta Release
#### 3.1.0: Milestone Release
Editor
- Default filter to All Catalogues and show nodes for small lists (#4318) @knolleary
- Better distinguish between ctrl and meta keys on mac (#4310) @knolleary
- Ensure junction appears when filtering quick-add list (#4297) @knolleary
- Update message catalogs for JSONata Expression editor (#4287) @kazuhitoyokoi
- Add tooltip to relevance sort button in user settings UI (#4288) @kazuhitoyokoi
- Capture workspace dirty state when quick-adding junction (#4283) @knolleary
- Add docs for $clone function (#4284) @knolleary
Runtime
- Dependency updates (#4317) @knolleary
- Ensure storage/util.writeFile handles concurrent write attempts (#4316) @knolleary
- Migrate http -> https for nodered.org (#4313) @Rotzbua
- Add Node 20 to GH Action test matrix (#4305) @Rotzbua
- Handle group-scoped nodes inside subflow (#4301) @knolleary
- Handle non-url-safe chars in context api (#4298) @knolleary
- Fix git pull operation in project feature (#4290) @kazuhitoyokoi
- Change linefeed codes in Korean message catalogs (#4286) @kazuhitoyokoi
- Fix file permissions of message catalogs (#4285) @kazuhitoyokoi
- Update tour (#4278) @knolleary
Nodes
- File: Fix handling in file nodes when number is specified as file name (#4267) @kazuhitoyokoi
- Function: Adding function timeout to settings file (#4265) (#4309) @knolleary
- Function: Fix function setup tab layout (#4299) @knolleary
- HTTP Request: Handle 204 in httprequest JSON (#4262) @sammachin
- JSON: Fix test cases of JSON node (#4275) @kazuhitoyokoi
- MQTT: Remove unnecessary check for clientid if autoUnsub set (#4302) @knolleary
##### 3.1.0-beta.4: Beta Release
Editor
- Add Japanese translation for 3.1.0 (#4252) @kazuhitoyokoi
- Improve Catalogue visibility (#4248) @Steve-Mcl
- Add support for wiring and moving junctions on touch device (#4244) @Steve-Mcl
- Show errors and statuses of config nodes in the sidebar when no catch node is available (#4231) @bvmensvoort
- Improve wiring for horizontally aligned nodes (#4232) @knolleary
- French translation of Welcome Tours (#4200) @GogoVega
- French translation of v3.1.0-beta.3 changes (#4199) @GogoVega
- add Japanese message for 3.1.0 beta 3 (#4209) @HiroyasuNishiyama
- Dont clone the group nodes `node` array when saving edits (#4208) @Steve-Mcl
Runtime
- Add NR_SUBFLOW_NAME/ID/PATH env vars (#4250) @knolleary
- Evaluate all env vars as part of async flow start (#4230) @knolleary
- Add support for httpStatic middleware (#4229) @knolleary
Nodes
- Fix JSONata in file nodes (#4246) @kazuhitoyokoi
- Fix timeout icon in function and link call nodes (#4253) @kazuhitoyokoi
- Fix connection keep-alive in http request node (#4228) @knolleary
- adding timeout attribute to function node (#4177) @k1ln
- Fix manual mode join when multiple sequences being handled (#4143) @BitCaesar
- Fix delay node flush issue (#4203) @dceejay
- Update status and catch node labels in group mode (#4207) @Steve-Mcl
##### 3.1.0-beta.3: Beta Release
Editor
- Select the item that is specified in a deep link URL (#4113) @Steve-Mcl
- Update to Monaco 0.38.0 (#4189) @Steve-Mcl
- Place subflow outputs/inputs relative to current view (#4183) @knolleary
- Enable RED.view.select to select group by id (#4184) @knolleary
- Combine existing env vars when merging groups (#4182) @knolleary
- Avoid creating empty global-config node if not needed (#4153) @knolleary
- Fix group selection when using lasso (#4108) @knolleary
- Use editor path in generating localStorage keys (#4151) @mw75
- Ensure no node credentials are included when exporting to clipboard (#4112) @knolleary
- Fix jsonata expression test ui (#4097) @knolleary
- Fix search button in palette popover (#4096) @knolleary
Runtime
- Allow options object on each httpStatic configuration (#4109) @kevinGodell
- Ensure non-zero exit codes for errors (#4181) @knolleary
- Ensure external modules are installed synchronously (#4180) @knolleary
- Update dependecies include got (#4155) @knolleary
- Add Japanese translations for v3.1 beta.2 (#4158) @kazuhitoyokoi
- Ensure express server options are applied consistently (#4178) @knolleary
- Remove version info from theme endpoint (#4179) @knolleary
- Add Japanese translations for welcome tour of 3.1.0 beta.2 (#4145) @kazuhitoyokoi
- Added SHA-256 and SHA-512-256 digest authentication (#4100) @sroebert
- Add "timers" types to known types (#4103) @Steve-Mcl
Nodes
- Allow Catch/Status nodes to be scoped to their group (#4185) @NetHans
- MQTT: Option to disable MQTT topic unsubscribe on disconnect (#4078) @flying7eleven
##### 3.1.0-beta.2: Beta Release
Editor
@ -48,7 +147,7 @@ Nodes
- File Out: Fix extra newline append for multipart file write (#3915) @dceejay
- Add validators for complete and link call nodes (#4056) @kazuhitoyokoi
#### 3.1.0-beta.1: Beta Release
##### 3.1.0-beta.1: Beta Release
Editor

View File

@ -16,6 +16,9 @@ behavior to the project's core team at team@nodered.org.
Please raise any bug reports on the relevant project's issue tracker. Be sure to
search the list to see if your issue has already been raised.
If your issue is more of a question on how to do something with Node-RED, please
consider using the [community forum](https://discourse.nodered.org/).
A good bug report is one that make it easy for us to understand what you were
trying to do and what went wrong.
@ -35,14 +38,18 @@ For feature requests, please raise them on the [forum](https://discourse.nodered
## Pull-Requests
If you want to raise a pull-request with a new feature, or a refactoring
of existing code, it may well get rejected if you haven't discussed it on
the [forum](https://discourse.nodered.org) first.
of existing code, please come and discuss it with us first. We prefer to
do it that way to make sure your time and effort is well spent on something
that fits with our goals.
If you've got a bug-fix or similar for us, then you are most welcome to
get it raised - just make sure you link back to the issue it's fixing and
try to include some tests!
All contributors need to sign the OpenJS Foundation's Contributor License Agreement.
It is an online process and quick to do. If you raise a pull-request without
having signed the CLA, you will be prompted to do so automatically.
### Code Branches
When raising a PR for a fix or a new feature, it is important to target the right branch.

View File

@ -151,7 +151,6 @@ module.exports = function(grunt) {
"packages/node_modules/@node-red/editor-client/src/js/font-awesome.js",
"packages/node_modules/@node-red/editor-client/src/js/history.js",
"packages/node_modules/@node-red/editor-client/src/js/validators.js",
"packages/node_modules/@node-red/editor-client/src/js/ui/mermaid.js",
"packages/node_modules/@node-red/editor-client/src/js/ui/utils.js",
"packages/node_modules/@node-red/editor-client/src/js/ui/common/editableList.js",
"packages/node_modules/@node-red/editor-client/src/js/ui/common/treeList.js",

View File

@ -1,17 +1,16 @@
# Node-RED
http://nodered.org
https://nodered.org
[![Build Status](https://travis-ci.org/node-red/node-red.svg?branch=master)](https://travis-ci.org/node-red/node-red)
[![Coverage Status](https://coveralls.io/repos/node-red/node-red/badge.svg?branch=master)](https://coveralls.io/r/node-red/node-red?branch=master)
[![Build Status](https://github.com/node-red/node-red/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/node-red/node-red/actions?query=branch%3Amaster)
Low-code programming for event-driven applications.
![Node-RED: Low-code programming for event-driven applications](http://nodered.org/images/node-red-screenshot.png)
![Node-RED: Low-code programming for event-driven applications](https://nodered.org/images/node-red-screenshot.png)
## Quick Start
Check out http://nodered.org/docs/getting-started/ for full instructions on getting
Check out https://nodered.org/docs/getting-started/ for full instructions on getting
started.
1. `sudo npm install -g --unsafe-perm node-red`
@ -20,7 +19,7 @@ started.
## Getting Help
More documentation can be found [here](http://nodered.org/docs).
More documentation can be found [here](https://nodered.org/docs).
For further help, or general discussion, please use the [Node-RED Forum](https://discourse.nodered.org) or [slack team](https://nodered.org/slack).

View File

@ -1,8 +1,8 @@
{
"name": "node-red",
"version": "3.1.0-beta.2",
"version": "3.1.0",
"description": "Low-code programming for event-driven applications",
"homepage": "http://nodered.org",
"homepage": "https://nodered.org",
"license": "Apache-2.0",
"repository": {
"type": "git",
@ -44,8 +44,8 @@
"express": "4.18.2",
"express-session": "1.17.3",
"form-data": "4.0.0",
"fs-extra": "10.1.0",
"got": "11.8.6",
"fs-extra": "11.1.1",
"got": "12.6.0",
"hash-sum": "2.0.0",
"hpagent": "1.2.0",
"https-proxy-agent": "5.0.1",
@ -60,12 +60,12 @@
"memorystore": "1.6.7",
"mime": "3.0.0",
"moment": "2.29.4",
"moment-timezone": "0.5.41",
"moment-timezone": "0.5.43",
"mqtt": "4.3.7",
"multer": "1.4.5-lts.1",
"mustache": "4.2.0",
"node-red-admin": "^3.0.0",
"node-watch": "0.7.3",
"node-red-admin": "^3.1.0",
"node-watch": "0.7.4",
"nopt": "5.0.0",
"oauth2orize": "1.11.1",
"on-headers": "1.0.2",
@ -73,16 +73,16 @@
"passport-http-bearer": "1.0.1",
"passport-oauth2-client-password": "0.1.2",
"raw-body": "2.5.2",
"semver": "7.3.8",
"semver": "7.5.4",
"tar": "6.1.13",
"tough-cookie": "4.1.2",
"tough-cookie": "4.1.3",
"uglify-js": "3.17.4",
"uuid": "9.0.0",
"ws": "7.5.6",
"xml2js": "0.4.23"
"xml2js": "0.6.2"
},
"optionalDependencies": {
"bcrypt": "5.1.0"
"bcrypt": "5.1.1"
},
"devDependencies": {
"dompurify": "2.4.1",
@ -108,14 +108,14 @@
"i18next-http-backend": "1.4.1",
"jquery-i18next": "1.2.1",
"jsdoc-nr-template": "github:node-red/jsdoc-nr-template",
"marked": "4.2.12",
"mermaid": "^9.3.0",
"marked": "4.3.0",
"mermaid": "^10.4.0",
"minami": "1.2.3",
"mocha": "9.2.2",
"node-red-node-test-helper": "^0.3.0",
"node-red-node-test-helper": "^0.3.2",
"nodemon": "2.0.20",
"proxy": "^1.0.2",
"sass": "1.58.3",
"sass": "1.62.1",
"should": "13.2.3",
"sinon": "11.1.2",
"stoppable": "^1.1.0",

View File

@ -14,8 +14,6 @@
* limitations under the License.
**/
var express = require("express");
var nodes = require("./nodes");
var flows = require("./flows");
var flow = require("./flow");
@ -37,18 +35,9 @@ module.exports = {
plugins.init(runtimeAPI);
diagnostics.init(settings, runtimeAPI);
var needsPermission = auth.needsPermission;
var adminApp = express();
var defaultServerSettings = {
"x-powered-by": false
}
var serverSettings = Object.assign({},defaultServerSettings,settings.httpServerOptions||{});
for (var eOption in serverSettings) {
adminApp.set(eOption, serverSettings[eOption]);
}
const needsPermission = auth.needsPermission;
const adminApp = apiUtil.createExpressApp(settings)
// Flows
adminApp.get("/flows",needsPermission("flows.read"),flows.get,apiUtil.errorHandler);

View File

@ -46,14 +46,15 @@ module.exports = {
runtimeAPI = _runtimeAPI;
needsPermission = auth.needsPermission;
if (!settings.disableEditor) {
info.init(runtimeAPI);
info.init(settings, runtimeAPI);
comms.init(server,settings,runtimeAPI);
var ui = require("./ui");
ui.init(runtimeAPI);
var editorApp = express();
const editorApp = apiUtil.createExpressApp(settings)
if (settings.requireHttps === true) {
editorApp.enable('trust proxy');
editorApp.use(function (req, res, next) {
@ -86,7 +87,7 @@ module.exports = {
//Projects
var projects = require("./projects");
projects.init(runtimeAPI);
projects.init(settings, runtimeAPI);
editorApp.use("/projects",projects.app());
// Locales

View File

@ -14,9 +14,9 @@
* limitations under the License.
**/
var express = require("express");
var apiUtils = require("../util");
var settings;
var runtimeAPI;
var needsPermission = require("../auth").needsPermission;
@ -77,11 +77,12 @@ function getProjectRemotes(req,res) {
})
}
module.exports = {
init: function(_runtimeAPI) {
init: function(_settings, _runtimeAPI) {
settings = _settings;
runtimeAPI = _runtimeAPI;
},
app: function() {
var app = express();
var app = apiUtils.createExpressApp(settings)
app.use(function(req,res,next) {
runtimeAPI.projects.available().then(function(available) {

View File

@ -18,9 +18,9 @@ var runtimeAPI;
var sshkeys = require("./sshkeys");
module.exports = {
init: function(_runtimeAPI) {
init: function(settings, _runtimeAPI) {
runtimeAPI = _runtimeAPI;
sshkeys.init(runtimeAPI);
sshkeys.init(settings, runtimeAPI);
},
userSettings: function(req, res) {
var opts = {

View File

@ -17,13 +17,15 @@
var apiUtils = require("../util");
var express = require("express");
var runtimeAPI;
var settings;
module.exports = {
init: function(_runtimeAPI) {
init: function(_settings, _runtimeAPI) {
runtimeAPI = _runtimeAPI;
settings = _settings;
},
app: function() {
var app = express();
const app = apiUtils.createExpressApp(settings);
// List all SSH keys
app.get("/", function(req,res) {

View File

@ -19,6 +19,7 @@ var util = require("util");
var path = require("path");
var fs = require("fs");
var clone = require("clone");
const apiUtil = require("../util")
var defaultContext = {
page: {
@ -27,8 +28,7 @@ var defaultContext = {
tabicon: {
icon: "red/images/node-red-icon-black.svg",
colour: "#8f0000"
},
version: require(path.join(__dirname,"../../package.json")).version
}
},
header: {
title: "Node-RED",
@ -40,6 +40,7 @@ var defaultContext = {
vendorMonaco: ""
}
};
var settings;
var theme = null;
var themeContext = clone(defaultContext);
@ -92,7 +93,8 @@ function serveFilesFromTheme(themeValue, themeApp, directory, baseDirectory) {
}
module.exports = {
init: function(settings, _runtimeAPI) {
init: function(_settings, _runtimeAPI) {
settings = _settings;
runtimeAPI = _runtimeAPI;
themeContext = clone(defaultContext);
if (process.env.NODE_ENV == "development") {
@ -113,7 +115,15 @@ module.exports = {
var url;
themeSettings = {};
themeApp = express();
themeApp = apiUtil.createExpressApp(settings);
const defaultServerSettings = {
"x-powered-by": false
}
const serverSettings = Object.assign({},defaultServerSettings,settings.httpServerOptions||{});
for (const eOption in serverSettings) {
themeApp.set(eOption, serverSettings[eOption]);
}
if (theme.page) {

View File

@ -37,7 +37,6 @@ var adminApp;
var server;
var editor;
/**
* Initialise the module.
* @param {Object} settings The runtime settings
@ -49,7 +48,7 @@ var editor;
function init(settings,_server,storage,runtimeAPI) {
server = _server;
if (settings.httpAdminRoot !== false) {
adminApp = express();
adminApp = apiUtil.createExpressApp(settings);
var cors = require('cors');
var corsHandler = cors({
@ -64,14 +63,6 @@ function init(settings,_server,storage,runtimeAPI) {
}
}
var defaultServerSettings = {
"x-powered-by": false
}
var serverSettings = Object.assign({},defaultServerSettings,settings.httpServerOptions||{});
for (var eOption in serverSettings) {
adminApp.set(eOption, serverSettings[eOption]);
}
auth.init(settings,storage);
var maxApiRequestSize = settings.apiMaxLength || '5mb';
@ -136,10 +127,11 @@ async function stop() {
editor.stop();
}
}
module.exports = {
init: init,
start: start,
stop: stop,
init,
start,
stop,
/**
* @memberof @node-red/editor-api

View File

@ -14,10 +14,9 @@
* limitations under the License.
**/
const express = require("express");
var log = require("@node-red/util").log; // TODO: separate module
var i18n = require("@node-red/util").i18n; // TODO: separate module
const { log, i18n } = require("@node-red/util");
module.exports = {
errorHandler: function(err,req,res,next) {
@ -64,5 +63,17 @@ module.exports = {
path: req.path,
ip: (req.headers && req.headers['x-forwarded-for']) || (req.connection && req.connection.remoteAddress) || undefined
}
},
createExpressApp: function(settings) {
const app = express();
const defaultServerSettings = {
"x-powered-by": false
}
const serverSettings = Object.assign({},defaultServerSettings,settings.httpServerOptions||{});
for (let eOption in serverSettings) {
app.set(eOption, serverSettings[eOption]);
}
return app
}
}

View File

@ -1,6 +1,6 @@
{
"name": "@node-red/editor-api",
"version": "3.1.0-beta.2",
"version": "3.1.0",
"license": "Apache-2.0",
"main": "./lib/index.js",
"repository": {
@ -16,8 +16,8 @@
}
],
"dependencies": {
"@node-red/util": "3.1.0-beta.2",
"@node-red/editor-client": "3.1.0-beta.2",
"@node-red/util": "3.1.0",
"@node-red/editor-client": "3.1.0",
"bcryptjs": "2.4.3",
"body-parser": "1.20.2",
"clone": "2.1.2",

View File

@ -205,7 +205,7 @@
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "Wandelt `number` in eine Zeichenfolge um und formatiert sie in eine dezimale Darstellung, wie im `picture`-String-Parameter vorgegeben.\n\nDas Verhalten dieser Funktion ist mit der XPath/XQuery-Funktion fn:formatnummer konsistent, wie sie in der XPath F&O 3.1-Spezifikation definiert ist. Der `picture`-String-Parameter definiert, wie die Zahl formatiert ist und hat die gleiche Syntax wie fn:format-number.\n\nDer optionale dritte Parameter `options` wird verwendet, um die standardmäßigen länderspezifischen Formatierungszeichen, wie z.B. das Dezimaltrennzeichen, zu überschreiben. Wenn dieser Parameter vorgegeben wird, muss es sich um ein Objekt handeln, das Name/Wert-Paare enthält, die im Abschnitt mit dem Dezimalformat der XPath F&O 3.1-Spezifikation vorgegeben sind."
"desc": "Wandelt `number` in eine Zeichenfolge um und formatiert sie in eine dezimale Darstellung, wie im `picture`-String-Parameter vorgegeben.\n\nDas Verhalten dieser Funktion ist mit der XPath/XQuery-Funktion `fn:formatnummer` konsistent, wie sie in der XPath F&O 3.1-Spezifikation definiert ist. Der `picture`-String-Parameter definiert, wie die Zahl formatiert ist und hat die gleiche Syntax wie `fn:format-number`.\n\nDer optionale dritte Parameter `options` wird verwendet, um die standardmäßigen länderspezifischen Formatierungszeichen, wie z.B. das Dezimaltrennzeichen, zu überschreiben. Wenn dieser Parameter vorgegeben wird, muss es sich um ein Objekt handeln, das Name/Wert-Paare enthält, die im Abschnitt mit dem Dezimalformat der XPath F&O 3.1-Spezifikation vorgegeben sind."
},
"$formatBase": {
"args": "number [, radix]",

View File

@ -416,6 +416,7 @@
},
"errors": {
"noNodesSelected": "<strong>Cannot create subflow</strong>: no nodes selected",
"acrossMultipleGroups": "Cannot create subflow across multiple groups",
"multipleInputsToSelection": "<strong>Cannot create subflow</strong>: multiple inputs to selection"
}
},
@ -504,6 +505,7 @@
"unassigned": "Unassigned",
"global": "global",
"workspace": "workspace",
"editor": "edit dialog",
"selectAll": "Select all",
"selectNone": "Select none",
"selectAllConnected": "Select connected",
@ -585,6 +587,7 @@
"editor": {
"title": "Manage palette",
"palette": "Palette",
"allCatalogs": "All Catalogs",
"times": {
"seconds": "seconds ago",
"minutes": "minutes ago",
@ -624,6 +627,7 @@
"tab-nodes": "Nodes",
"tab-install": "Install",
"sort": "sort:",
"sortRelevance": "relevance",
"sortAZ": "a-z",
"sortRecent": "recent",
"more": "+ __count__ more",
@ -1211,11 +1215,9 @@
"validator": {
"errors": {
"invalid-json": "Invalid JSON data: __error__",
"invalid-json-prop": "__prop__: invalid JSON data: __error__",
"invalid-expr": "Invalid JSONata expression: __error__",
"invalid-prop": "Invalid property expression",
"invalid-prop-prop": "__prop__: invalid property expression",
"invalid-num": "Invalid number",
"invalid-num-prop": "__prop__: invalid number",
"invalid-regexp": "Invalid input pattern",
"invalid-regex-prop": "__prop__: invalid input pattern",
"missing-required-prop": "__prop__: property value missing",

View File

@ -1,7 +1,7 @@
{
"$string": {
"args": "arg[, prettify]",
"desc": "Casts the `arg` parameter to a string using the following casting rules:\n\n - Strings are unchanged\n - Functions are converted to an empty string\n - Numeric infinity and NaN throw an error because they cannot be represented as a JSON number\n - All other values are converted to a JSON string using the `JSON.stringify` function. If `prettify` is true, then \"prettified\" JSON is produced. i.e One line per field and lines will be indented based on the field depth."
"desc": "Casts the `arg` parameter to a string using the following casting rules:\n\n - Strings are unchanged\n - Functions are converted to an empty string\n - Numeric infinity and NaN throw an error because they cannot be represented as a JSON number\n - All other values are converted to a JSON string using the `JSON.stringify` function. If `prettify` is true, then \"prettified\" JSON is produced. i.e One line per field and lines will be indented based on the field depth."
},
"$length": {
"args": "str",
@ -53,7 +53,7 @@
},
"$now": {
"args": "$[picture [, timezone]]",
"desc": "Generates a timestamp in ISO 8601 compatible format and returns it as a string. If the optional picture and timezone parameters are supplied, then the current timestamp is formatted as described by the `$fromMillis()` function"
"desc": "Generates a timestamp in ISO 8601 compatible format and returns it as a string. If the optional `picture` and `timezone` parameters are supplied, then the current timestamp is formatted as described by the `$fromMillis()` function"
},
"$base64encode": {
"args": "string",
@ -137,7 +137,7 @@
},
"$sort": {
"args": "array [, function]",
"desc": "Returns an array containing all the values in the `array` parameter, but sorted into order.\n\nIf a comparator `function` is supplied, then it must be a function that takes two parameters:\n\n`function(left, right)`\n\nThis function gets invoked by the sorting algorithm to compare two values left and right. If the value of left should be placed after the value of right in the desired sort order, then the function must return Boolean `true` to indicate a swap. Otherwise it must return `false`."
"desc": "Returns an array containing all the values in the `array` parameter, but sorted into order.\n\nIf a comparator `function` is supplied, then it must be a function that takes two parameters:\n\n`function(left, right)`\n\nThis function gets invoked by the sorting algorithm to compare two values `left` and `right`. If the value of `left` should be placed after the value of `right` in the desired sort order, then the function must return Boolean `true` to indicate a swap. Otherwise it must return `false`."
},
"$reverse": {
"args": "array",
@ -201,11 +201,11 @@
},
"$fromMillis": {
"args": "number, [, picture [, timezone]]",
"desc": "Convert the `number` representing milliseconds since the Unix Epoch (1 January, 1970 UTC) to a formatted string representation of the timestamp as specified by the picture string.\n\nIf the optional `picture` parameter is omitted, then the timestamp is formatted in the ISO 8601 format.\n\nIf the optional `picture` string is supplied, then the timestamp is formatted occording to the representation specified in that string. The behaviour of this function is consistent with the two-argument version of the XPath/XQuery function `format-dateTime` as defined in the XPath F&O 3.1 specification. The picture string parameter defines how the timestamp is formatted and has the same syntax as `format-dateTime`.\n\nIf the optional `timezone` string is supplied, then the formatted timestamp will be in that timezone. The `timezone` string should be in the format '±HHMM', where ± is either the plus or minus sign and HHMM is the offset in hours and minutes from UTC. Positive offset for timezones east of UTC, negative offset for timezones west of UTC."
"desc": "Convert the `number` representing milliseconds since the Unix Epoch (1 January, 1970 UTC) to a formatted string representation of the timestamp as specified by the picture string.\n\nIf the optional `picture` parameter is omitted, then the timestamp is formatted in the ISO 8601 format.\n\nIf the optional `picture` string is supplied, then the timestamp is formatted according to the representation specified in that string. The behaviour of this function is consistent with the two-argument version of the XPath/XQuery function `format-dateTime` as defined in the XPath F&O 3.1 specification. The picture string parameter defines how the timestamp is formatted and has the same syntax as `format-dateTime`.\n\nIf the optional `timezone` string is supplied, then the formatted timestamp will be in that timezone. The `timezone` string should be in the format '±HHMM', where ± is either the plus or minus sign and HHMM is the offset in hours and minutes from UTC. Positive offset for timezones east of UTC, negative offset for timezones west of UTC."
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "Casts the `number` to a string and formats it to a decimal representation as specified by the `picture` string.\n\n The behaviour of this function is consistent with the XPath/XQuery function fn:format-number as defined in the XPath F&O 3.1 specification. The picture string parameter defines how the number is formatted and has the same syntax as fn:format-number.\n\nThe optional third argument `options` is used to override the default locale specific formatting characters such as the decimal separator. If supplied, this argument must be an object containing name/value pairs specified in the decimal format section of the XPath F&O 3.1 specification."
"desc": "Casts the `number` to a string and formats it to a decimal representation as specified by the `picture` string.\n\n The behaviour of this function is consistent with the XPath/XQuery function `fn:format-number` as defined in the XPath F&O 3.1 specification. The `picture` string parameter defines how the number is formatted and has the same syntax as `fn:format-number`.\n\nThe optional third argument `options` is used to override the default locale specific formatting characters such as the decimal separator. If supplied, this argument must be an object containing name/value pairs specified in the decimal format section of the XPath F&O 3.1 specification."
},
"$formatBase": {
"args": "number [, radix]",
@ -233,15 +233,15 @@
},
"$error": {
"args": "[str]",
"desc": "Throws an error with a message. The optional `str` will replace the default message of `$error() function evaluated`"
"desc": "Throws an error with a message. The optional `str` will replace the default message of `$error() function evaluated`"
},
"$assert": {
"args": "arg, str",
"desc": "If `arg` is true the function returns undefined. If `arg` is false an exception is thrown with `str` as the message of the exception."
"desc": "If `arg` is `true` the function returns `undefined`. If `arg` is `false` an exception is thrown with `str` as the message of the exception."
},
"$single": {
"args": "array, function",
"desc": "Returns the one and only value in the `array` parameter that satisfies the `function` predicate (i.e. the `function` returns Boolean `true` when passed the value). Throws an exception if the number of matching values is not exactly one.\n\nThe function should be supplied in the following signature: `function(value [, index [, array]])` where value is each input of the array, index is the position of that value and the whole array is passed as the third argument"
"desc": "Returns the one and only value in the `array` parameter that satisfies the `function` predicate (i.e. the `function` returns Boolean `true` when passed the value). Throws an exception if the number of matching values is not exactly one.\n\nThe function should be supplied in the following signature: `function(value [, index [, array]])` where value is each input of the array, index is the position of that value and the whole array is passed as the third argument"
},
"$encodeUrlComponent": {
"args": "str",
@ -249,15 +249,15 @@
},
"$encodeUrl": {
"args": "str",
"desc": "Encodes a Uniform Resource Locator (URL) by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character. \n\nExample: `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\"`"
"desc": "Encodes a Uniform Resource Locator (URL) by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character.\n\nExample: `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\"`"
},
"$decodeUrlComponent": {
"args": "str",
"desc": "Decodes a Uniform Resource Locator (URL) component previously created by encodeUrlComponent. \n\nExample: `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
"desc": "Decodes a Uniform Resource Locator (URL) component previously created by encodeUrlComponent.\n\nExample: `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
},
"$decodeUrl": {
"args": "str",
"desc": "Decodes a Uniform Resource Locator (URL) previously created by encodeUrl. \n\nExample: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "Decodes a Uniform Resource Locator (URL) previously created by encodeUrl.\n\nExample: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",
@ -270,5 +270,9 @@
"$moment": {
"args": "[str]",
"desc": "Gets a date object using the Moment library."
},
"$clone": {
"args": "value",
"desc": "Safely clone an object."
}
}

View File

@ -119,7 +119,7 @@
"searchInput": "Rechercher vos flux",
"subflows": "Sous-flux",
"createSubflow": "Créer un sous-flux",
"selectionToSubflow": "Selection d'un sous-flux",
"selectionToSubflow": "Convertir en sous-flux",
"flows": "Flux",
"add": "Ajouter",
"rename": "Renommer",
@ -274,23 +274,23 @@
"recoveredNodesInfo": "Les noeuds importés sur ce flux contiennent un mauvais identifiant de flux. Ces noeuds ont été ajoutés à ce flux afin que vous puissiez les restaurer ou les supprimer.",
"recoveredNodesNotification": "<p>Noeuds importés sans identifiant de flux valide</p><p>Ils ont été ajoutés à un nouveau flux appelé '__flowName__'.</p>",
"export": {
"selected": "noeuds sélectionnés",
"current": "flux actuel",
"selected": "les noeuds sélectionnés",
"current": "le flux actuel",
"all": "tous les flux",
"compact": "condensé",
"formatted": "formaté",
"compact": "Condensé",
"formatted": "Formaté",
"copy": "Copier dans le presse-papier",
"export": "Exporter vers la bibliothèque",
"exportAs": "Exporter en tant que",
"exportAs": "Exporter comme",
"overwrite": "Remplacer",
"exists": "<p><b>\"__file__\"</b> existe déjà.</p><p>Voulez-vous le remplacer ?</p>"
},
"import": {
"import": "Importer vers",
"importSelected": "Importation sélectionnée",
"importSelected": "Importer la sélection",
"importCopy": "Importer une copie",
"viewNodes": "Afficher les noeuds...",
"newFlow": "Nouveau flux",
"viewNodes": "Vérifier ces noeuds",
"newFlow": "un nouveau flux",
"replace": "Remplacer",
"errors": {
"notArray": "L'entrée n'est pas un tableau JSON",
@ -299,7 +299,7 @@
"missingType": "L'entrée n'est pas un flux valide - l'élément '__index__' n'a pas de propriété 'type'"
},
"conflictNotification1": "Certains des noeuds que vous avez importés existent déjà dans votre espace de travail.",
"conflictNotification2": "Sélectionner les noeuds à importer et choisir s'il faut remplacer les noeuds existants ou en importer une copie."
"conflictNotification2": "Sélectionnez les noeuds à importer et choisissez s'il faut remplacer les noeuds existants ou en importer une copie."
},
"copyMessagePath": "Chemin copié",
"copyMessageValue": "Valeur copiée",
@ -391,10 +391,10 @@
"subflowInstances": "Il existe __count__ instance de ce modèle de sous-flux",
"subflowInstances_plural": "Il existe __count__ instances de ce modèle de sous-flux",
"editSubflowProperties": "modifier les propriétés",
"input": "entrées:",
"output": "sorties:",
"status": "statut du noeud",
"deleteSubflow": "supprimer le sous-flux",
"input": "Entrées:",
"output": "Sorties:",
"status": "Statut du noeud",
"deleteSubflow": "Supprimer le sous-flux",
"confirmDelete": "Voulez-vous vraiment supprimer ce sous-flux ?",
"info": "Description",
"category": "Catégorie",
@ -416,6 +416,7 @@
},
"errors": {
"noNodesSelected": "<strong>Impossible de créer un sous-flux</strong> : aucun noeud sélectionné",
"acrossMultipleGroups": "Impossible de créer un sous-flux sur plusieurs groupes",
"multipleInputsToSelection": "<strong>Impossible de créer un sous-flux</strong> : plusieurs entrées pour la sélection"
}
},
@ -447,8 +448,8 @@
"default": "Par défaut",
"noDefaultLabel": "Aucune",
"defaultLabel": "Utiliser l'étiquette par défaut",
"searchIcons": "Icônes de recherche",
"useDefault": "Utilisation par défaut",
"searchIcons": "Rechercher une icône",
"useDefault": "Icône par défaut",
"description": "Description",
"show": "Afficher",
"hide": "Masquer",
@ -498,12 +499,13 @@
"keyboard": {
"title": "Raccourcis clavier",
"keyboard": "Clavier",
"filterActions": "Actions de filtrage",
"shortcut": "raccourci",
"scope": "portée",
"filterActions": "Rechercher l'action",
"shortcut": "Raccourci",
"scope": "Portée",
"unassigned": "Non attribué",
"global": "global",
"workspace": "espace de travail",
"global": "Global",
"workspace": "Espace de travail",
"editor": "Boîte de dialogue d'édition",
"selectAll": "Tout sélectionner",
"selectNone": "Ne rien sélectionner",
"selectAllConnected": "Sélectionner tous les éléments connectés",
@ -549,22 +551,22 @@
},
"palette": {
"noInfo": "Pas d'information disponible",
"filter": "Filtrer les noeuds",
"filter": "Rechercher le noeud",
"search": "Rechercher les modules",
"addCategory": "Ajouter un nouveau...",
"label": {
"subflows": "sous-flux",
"network": "réseau",
"common": "commun",
"input": "entrée",
"output": "sortie",
"function": "fonction",
"sequence": "séquence",
"parser": "analyseur",
"social": "social",
"storage": "stockage",
"analysis": "analyse",
"advanced": "avancé"
"subflows": "Sous-flux",
"network": "Réseau",
"common": "Commun",
"input": "Entrée",
"output": "Sortie",
"function": "Fonction",
"sequence": "Séquence",
"parser": "Analyseur",
"social": "Social",
"storage": "Stockage",
"analysis": "Analyse",
"advanced": "Avancé"
},
"actions": {
"collapse-all": "Réduire toutes les catégories",
@ -585,6 +587,7 @@
"editor": {
"title": "Gérer la palette",
"palette": "Palette",
"allCatalogs": "Tous les catalogues",
"times": {
"seconds": "il y a quelques secondes",
"minutes": "il y a quelques minutes",
@ -608,24 +611,25 @@
"nodeCount_plural": "__label__ noeuds",
"moduleCount": "__count__ module disponible",
"moduleCount_plural": "__count__ modules disponibles",
"inuse": "en cours d'utilisation",
"enableall": "activer tout",
"disableall": "désactiver tout",
"enable": "activer",
"disable": "désactiver",
"remove": "supprimer",
"update": "mettre à jour vers __version__",
"updated": "mis à jour",
"install": "installer",
"installed": "installé",
"conflict": "conflit",
"inuse": "En cours d'utilisation",
"enableall": "Activer tout",
"disableall": "Désactiver tout",
"enable": "Activer",
"disable": "Désactiver",
"remove": "Supprimer",
"update": "Mettre à jour vers __version__",
"updated": "Mis à jour",
"install": "Installer",
"installed": "Installé",
"conflict": "Conflit",
"conflictTip": "<p>Ce module ne peut pas être installé car il inclut un<br/>type de noeud qui a déjà été installé</p><p>Conflits avec <code>__module__</code></p>",
"loading": "Chargement des catalogues...",
"tab-nodes": "Noeuds",
"tab-install": "Installer",
"sort": "trier:",
"sortAZ": "a-z",
"sortRecent": "récent",
"sort": "Trier:",
"sortRelevance": "Pertinence",
"sortAZ": "A-Z",
"sortRecent": "Récent",
"more": "+ __count__ en plus",
"upload": "Charger le fichier tgz du module",
"refresh": "Actualiser la liste des modules",
@ -666,7 +670,7 @@
"info": {
"name": "Information",
"tabName": "Nom",
"label": "info",
"label": "Info",
"node": "Noeud",
"type": "Type",
"group": "Groupe",
@ -680,10 +684,10 @@
"properties": "Propriétés",
"info": "Information",
"desc": "Description",
"blank": "vide",
"null": "nul",
"showMore": "afficher en plus",
"showLess": "afficher en moins",
"blank": "Vide",
"null": "Nul",
"showMore": "Afficher en plus",
"showLess": "Afficher en moins",
"flow": "Flux",
"selection": "Sélection",
"nodes": "__count__ noeuds",
@ -694,7 +698,7 @@
"arrayItems": "__count__ éléments",
"showTips": "Vous pouvez ouvrir les astuces à partir du panneau des paramètres",
"outline": "Plan",
"empty": "vide",
"empty": "Vide",
"globalConfig": "Noeuds de configuration globale",
"triggerAction": "Déclencher une action",
"find": "Rechercher dans l'espace de travail",
@ -705,7 +709,7 @@
},
"help": {
"name": "Aide",
"label": "aide",
"label": "Aide",
"search": "Aide à la recherche",
"nodeHelp": "Aide sur les noeuds",
"showHelp": "Afficher l'aide",
@ -716,23 +720,23 @@
},
"config": {
"name": "Noeuds de configuration",
"label": "configuration",
"label": "Configuration",
"global": "Tous les flux",
"none": "aucun",
"subflows": "sous-flux",
"flows": "flux",
"filterAll": "tout",
"none": "Aucun",
"subflows": "Sous-flux",
"flows": "Flux",
"filterAll": "Tout",
"showAllConfigNodes": "Afficher tous les noeuds de configuration",
"filterUnused": "inutilisé",
"filterUnused": "Inutilisé",
"showAllUnusedConfigNodes": "Afficher tous les noeuds de configuration inutilisés",
"filtered": "__count__ caché(s)"
},
"context": {
"name": "Données contextuelles",
"label": "contexte",
"none": "aucune sélection",
"refresh": "actualiser pour charger",
"empty": "vide",
"label": "Contexte",
"none": "Aucune sélection",
"refresh": "Actualiser pour charger",
"empty": "Vide",
"node": "Noeud",
"flow": "Flux",
"global": "Global",
@ -743,10 +747,10 @@
},
"palette": {
"name": "Gestion des palettes",
"label": "palette"
"label": "Palette"
},
"project": {
"label": "projet",
"label": "Projet",
"name": "Projet",
"description": "Description",
"dependencies": "Dépendances",
@ -759,11 +763,11 @@
"showProjectSettings": "Afficher les paramètres du projet",
"projectSettings": {
"title": "Paramètres du projet",
"edit": "modifier",
"edit": "Modifier",
"none": "Vide",
"install": "installer",
"removeFromProject": "supprimer du projet",
"addToProject": "ajouter au projet",
"install": "Installer",
"removeFromProject": "Supprimer du projet",
"addToProject": "Ajouter au projet",
"files": "Fichiers",
"flow": "Flux",
"credentials": "Identifiants",
@ -811,7 +815,7 @@
"workflowAutoTip": "Les modifications sont validées automatiquement à chaque déploiement",
"sshKeys": "Clés SSH",
"sshKeysTip": "Vous permet de créer des connexions sécurisées aux référentiels Git distants.",
"add": "ajouter une clé",
"add": "Ajouter une clé",
"addSshKey": "Ajouter une clé SSH",
"addSshKeyTip": "Générer une nouvelle paire de clés publique/privée",
"name": "Nom",
@ -847,7 +851,7 @@
"none": "Vide",
"conflictResolve": "Tous les conflits ont été résolus. Valider les modifications pour terminer la fusion.",
"localFiles": "Fichiers locaux",
"all": "tout",
"all": "Tout",
"unmergedChanges": "Modifications non fusionnées",
"abortMerge": "Abandonner la fusion",
"commit": "Valider",
@ -1096,9 +1100,9 @@
"desc8": "Le fichier contenant les identifiants ne sera pas crypté et son contenu sera facilement lisible",
"create-project-files": "Créer des fichiers de projet",
"create-project": "Créer un projet",
"already-exists": "existe déjà",
"already-exists": "Existe déjà",
"git-error": "Erreur Git",
"git-auth-error": "erreur d'authentification Git"
"git-auth-error": "Erreur d'authentification Git"
},
"create-success": {
"success": "Vous avez créé avec succès votre premier projet !",
@ -1134,8 +1138,8 @@
"desc2": "Avant de pouvoir cloner un référentiel sur ssh, vous devez ajouter une clé SSH pour y accéder.",
"add-ssh-key": "Ajouter une clé ssh",
"credentials-encryption-key": "Clé de chiffrement des identifiants",
"already-exists-2": "existe déjà",
"git-error": "erreur git",
"already-exists-2": "Existe déjà",
"git-error": "Erreur git",
"con-failed": "La connexion a échoué",
"not-git": "Ce n'est pas un dépôt git",
"no-resource": "Référentiel introuvable",
@ -1147,8 +1151,8 @@
"confirm": "Voulez-vous vraiment supprimer ce projet ?"
},
"create-project-list": {
"search": "rechercher vos projets",
"current": "actuel"
"search": "Rechercher vos projets",
"current": "Actuel"
},
"require-clean": {
"confirm": "<p>Vous avez des modifications non déployées qui seront perdues.</p><p>Voulez-vous continuer ?</p>"
@ -1211,11 +1215,8 @@
"validator": {
"errors": {
"invalid-json": "Données JSON invalides : __error__",
"invalid-json-prop": "__prop__: données JSON invalides : __error__",
"invalid-prop": "Expression de propriété non valide",
"invalid-prop-prop": "__prop__: expression de propriété invalide",
"invalid-num": "Numéro invalide",
"invalid-num-prop": "__prop__: numéro invalide",
"invalid-regexp": "Modèle d'entrée non valide",
"invalid-regex-prop": "__prop__: modèle d'entrée non valide",
"missing-required-prop": "__prop__: valeur de la propriété manquante",

View File

14
packages/node_modules/@node-red/editor-client/locales/fr/jsonata.json vendored Executable file → Normal file
View File

@ -137,7 +137,7 @@
},
"$sort": {
"args": "array [, function]",
"desc": "Renvoie un tableau contenant toutes les valeurs du paramètre `array`, mais triées dans l'ordre.\n\nSi un comparateur `function` est fourni, alors il doit s'agir d'une fonction qui prend deux paramètres :\n\n`function(left , droite)`\n\nCette fonction est invoquée par l'algorithme de tri pour comparer deux valeurs à gauche et à droite. Si la valeur de left doit être placée après la valeur de right dans l'ordre de tri souhaité, la fonction doit renvoyer un booléen `true` pour indiquer un échange. Sinon, il doit renvoyer `false`."
"desc": "Renvoie un tableau contenant toutes les valeurs du paramètre `array`, mais triées dans l'ordre.\n\nSi un comparateur `function` est fourni, alors il doit s'agir d'une fonction qui prend deux paramètres :\n\n`function(left , droite)`\n\nCette fonction est invoquée par l'algorithme de tri pour comparer deux valeurs à gauche et à droite. Si la valeur de `left` doit être placée après la valeur de `right` dans l'ordre de tri souhaité, la fonction doit renvoyer un booléen `true` pour indiquer un échange. Sinon, il doit renvoyer `false`."
},
"$reverse": {
"args": "array",
@ -205,7 +205,7 @@
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "Convertit le `number` en une chaîne et le formate en une représentation décimale comme spécifié par la chaîne `picture`.\n\n Le comportement de cette fonction est cohérent avec la fonction XPath/XQuery fn:format-number telle que définie dans le Spécification XPath F&O 3.1. Le paramètre de chaîne d'image définit la façon dont le nombre est formaté et a la même syntaxe que fn:format-number.\n\nLe troisième argument facultatif `options` est utilisé pour remplacer les caractères de formatage spécifiques aux paramètres régionaux par défaut, tels que le séparateur décimal. S'il est fourni, cet argument doit être un objet contenant des paires nom/valeur spécifiées dans la section de format décimal de la spécification XPath F&O 3.1."
"desc": "Convertit le `number` en une chaîne et le formate en une représentation décimale comme spécifié par la chaîne `picture`.\n\n Le comportement de cette fonction est cohérent avec la fonction XPath/XQuery `fn:format-number` telle que définie dans le Spécification XPath F&O 3.1. Le paramètre de chaîne d'image définit la façon dont le nombre est formaté et a la même syntaxe que `fn:format-number`.\n\nLe troisième argument facultatif `options` est utilisé pour remplacer les caractères de formatage spécifiques aux paramètres régionaux par défaut, tels que le séparateur décimal. S'il est fourni, cet argument doit être un objet contenant des paires nom/valeur spécifiées dans la section de format décimal de la spécification XPath F&O 3.1."
},
"$formatBase": {
"args": "number [, radix]",
@ -249,15 +249,15 @@
},
"$encodeUrl": {
"args": "str",
"desc": "Encode une URL (Uniform Resource Locator) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère. \n\nExemple : `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0% B5%D0%BB%D0%BB%D1%8B\"`"
"desc": "Encode une URL (Uniform Resource Locator) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère.\n\nExemple : `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0% B5%D0%BB%D0%BB%D1%8B\"`"
},
"$decodeUrlComponent": {
"args": "str",
"desc": "Décode un composant URL (Uniform Resource Locator) précédemment créé par encodeUrlComponent. \n\nExemple : `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
"desc": "Décode un composant URL (Uniform Resource Locator) précédemment créé par encodeUrlComponent.\n\nExemple : `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
},
"$decodeUrl": {
"args": "str",
"desc": "Décode une URL (Uniform Resource Locator) précédemment créée par encodeUrl. \n\nExemple : `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "Décode une URL (Uniform Resource Locator) précédemment créée par encodeUrl.\n\nExemple : `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",
@ -270,5 +270,9 @@
"$moment": {
"args": "[str]",
"desc": "Obtient un objet de date à l'aide de la bibliothèque Moment."
},
"$clone": {
"args": "valeur",
"desc": "Cloner un objet en toute sécurité."
}
}

View File

@ -416,6 +416,7 @@
},
"errors": {
"noNodesSelected": "<strong>サブフローを作成できません</strong>: ノードが選択されていません",
"acrossMultipleGroups": "複数のグループをまたがるサブフローは作成できません",
"multipleInputsToSelection": "<strong>サブフローを作成できません</strong>: 複数の入力が選択されています"
}
},
@ -504,6 +505,7 @@
"unassigned": "未割当",
"global": "グローバル",
"workspace": "ワークスペース",
"editor": "編集ダイアログ",
"selectAll": "全てのノードを選択",
"selectNone": "選択を外す",
"selectAllConnected": "接続されたノードを選択",
@ -585,6 +587,7 @@
"editor": {
"title": "パレットの管理",
"palette": "パレット",
"allCatalogs": "全カタログ",
"times": {
"seconds": "数秒前",
"minutes": "数分前",
@ -624,6 +627,7 @@
"tab-nodes": "現在のノード",
"tab-install": "ノードを追加",
"sort": "並べ替え:",
"sortRelevance": "関連順",
"sortAZ": "辞書順",
"sortRecent": "日付順",
"more": "+ さらに __count__ 個",
@ -1203,7 +1207,7 @@
"fr": "フランス語",
"ja": "日本語",
"ko": "韓国語",
"pt-BR":"ポルトガル語",
"pt-BR": "ポルトガル語",
"ru": "ロシア語",
"zh-CN": "中国語(簡体)",
"zh-TW": "中国語(繁体)"
@ -1211,11 +1215,8 @@
"validator": {
"errors": {
"invalid-json": "JSONデータが不正: __error__",
"invalid-json-prop": "__prop__: JSONデータが不正: __error__",
"invalid-prop": "プロパティ式が不正",
"invalid-prop-prop": "__prop__: プロパティ式が不正",
"invalid-num": "数値が不正",
"invalid-num-prop": "__prop__: 数値が不正",
"invalid-regexp": "入力パターンが不正",
"invalid-regex-prop": "__prop__: 入力パターンが不正",
"missing-required-prop": "__prop__: プロパティが未設定",

View File

@ -53,7 +53,7 @@
},
"$now": {
"args": "$[picture [, timezone]]",
"desc": "ISO 8601互換形式の時刻を生成し、文字列として返します。pictureおよびtimezoneパラメータが指定されている場合、現在時刻を`$fromMillis()`関数の説明に従ってフォーマットします。"
"desc": "ISO 8601互換形式の時刻を生成し、文字列として返します。`picture` および `timezone` パラメータが指定されている場合、現在時刻を `$fromMillis()` 関数の説明に従ってフォーマットします。"
},
"$base64encode": {
"args": "string",
@ -117,11 +117,11 @@
},
"$boolean": {
"args": "arg",
"desc": "以下のルールを用いて、ブーリアン型へ型変換します。:\n\n - `Boolean` : 変換しない\n - `string`: 空 : `false`\n - `string`: 空でない : `true`\n - `number`: `0` : `false`\n - `number`: 0でない : `true`\n - `null` : `false`\n - `array`: 空 : `false`\n - `array`: `true` に型変換された要素を持つ: `true`\n - `array`: 全ての要素が `false` に型変換: `false`\n - `object`: 空 : `false`\n - `object`: 空でない : `true`\n - `function` : `false`"
"desc": "以下のルールを用いて、真偽型へ型変換します。:\n\n - `Boolean` : 変換しない\n - `string`: 空 : `false`\n - `string`: 空でない : `true`\n - `number`: `0` : `false`\n - `number`: 0でない : `true`\n - `null` : `false`\n - `array`: 空 : `false`\n - `array`: `true` に型変換された要素を持つ: `true`\n - `array`: 全ての要素が `false` に型変換: `false`\n - `object`: 空 : `false`\n - `object`: 空でない : `true`\n - `function` : `false`"
},
"$not": {
"args": "arg",
"desc": "引数の否定をブーリアン型で返します。 `arg` は最初にブーリアン型に型変換されます。"
"desc": "引数の否定を真偽型で返します。 `arg` は最初に真偽型に型変換されます。"
},
"$exists": {
"args": "arg",
@ -137,7 +137,7 @@
},
"$sort": {
"args": "array [, function]",
"desc": "配列 `array` 内の値を並び変えた配列を返します。\n\n比較関数 `function` を用いる場合、比較関数は以下のとおり2つの引数を持つ必要があります。\n\n`function(left, right)`\n\n比較関数は、leftとrightの2つの値を比較するために、値を並び替える処理で呼び出されます。もし、求められる並び順にてleftの値をrightの値より後ろに置きたい場合は、比較関数は置き換えを表すブーリアン型の `true` を返す必要があります。一方、置き換えが不要の場合は `false` を返す必要があります。"
"desc": "配列 `array` 内の値を並び変えた配列を返します。\n\n比較関数 `function` を用いる場合、比較関数は以下のとおり2つの引数を持つ必要があります。\n\n`function(left, right)`\n\n比較関数は、`left` `right` の2つの値を比較するために、値を並び替える処理で呼び出されます。もし、求められる並び順にて `left` の値を `right` の値より後ろに置きたい場合は、比較関数は置き換えを表す真偽型の `true` を返す必要があります。一方、置き換えが不要の場合は `false` を返す必要があります。"
},
"$reverse": {
"args": "array",
@ -205,7 +205,7 @@
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "`number` を文字列へ変換し、文字列 `picture` に指定した数値表現になるよう書式を変更します。\n\nこの関数の動作は、XPath F&O 3.1の仕様に定義されているXPath/XQuery関数のfn:format-numberの動作と同じです。引数の文字列 picture は、fn:format-numberと同じ構文で数値の書式を定義します。\n\n任意の第三引数 `options` は、小数点記号の様な既定のロケール固有の書式設定文字を上書きするために使用します。この引数を指定する場合、XPath F&O 3.1の仕様の数値形式の項に記述されているname/valueペアを含むオブジェクトでなければなりません。"
"desc": "`number` を文字列へ変換し、文字列 `picture` に指定した数値表現になるよう書式を変更します。\n\nこの関数の動作は、XPath F&O 3.1の仕様に定義されているXPath/XQuery関数の `fn:format-number` の動作と同じです。引数の文字列 `picture` は、 `fn:format-number` と同じ構文で数値の書式を定義します。\n\n任意の第三引数 `options` は、小数点記号の様な既定のロケール固有の書式設定文字を上書きするために使用します。この引数を指定する場合、XPath F&O 3.1の仕様の数値形式の項に記述されているname/valueペアを含むオブジェクトでなければなりません。"
},
"$formatBase": {
"args": "number [, radix]",
@ -237,7 +237,7 @@
},
"$assert": {
"args": "arg, str",
"desc": "`arg`が真の場合、undefinedを返します。偽の場合、`str`をメッセージとする例外を送出します。"
"desc": "`arg`が真の場合、`undefined`を返します。偽の場合、`str`をメッセージとする例外を送出します。"
},
"$single": {
"args": "array, function",
@ -257,7 +257,7 @@
},
"$decodeUrl": {
"args": "str",
"desc": "encodeUrlで置換したUniform Resource Locator (URL)要素をデコードします。 \n\n例: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "encodeUrlで置換したUniform Resource Locator (URL)要素をデコードします。\n\n例: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",
@ -270,5 +270,9 @@
"$moment": {
"args": "[str]",
"desc": "Momentライブラリを使用して日付オブジェクトを取得します。"
},
"$clone": {
"args": "value",
"desc": "オブジェクトを安全に複製します。"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,23 @@
{
"info": {
"tip0": "{{core:delete-selection}}를 사용하여 선택된 노드나 링크를 삭제할 수 있습니다.",
"tip1": "{{core:search}}를 활용하여 노드를 검색할 수 있습니다.",
"tip2": "{{core:toggle-sidebar}}를 사용하여 사이드바를 표시/비표시 전환 할 수 있습니다.",
"tip3": "{{core:manage-palette}}를 사용하여 노드 팔레트를 관리 할 수 있습니다.",
"tip4": "플로우 안의 설정노드가 사이드바에 표시됩니다. 메뉴 혹은 {{core:show-config-tab}}를 사용하여 엑세스 할 수 있습니다.",
"tip5": "설정에서 이 팁을 활성화/비활성화 할 수 있습니다.",
"tip6": "[left] [up] [down] [right] 키를 사용하여 선택된 노드를 움직일 수 있습니다. [shift]키를 누른 채로 움직이면 이동폭이 늘어납니다.",
"tip7": "노드를 와이어 사이로 드래그 하여 연결할 수도 있습니다.",
"tip8": "{{core:show-export-dialog}}를 사용하여 선택한 노드 또는 현재탭을 내보낼 수 있습니다.",
"tip9": "JSON파일을 에디터로 드래그하거나 {{core:show-import-dialog}}를 사용하여 플로우 가져올 수 있습니다.",
"tip10": "[shift] [click] 하고서 드래그하여 선택한 와이어를 이동할 수 있습니다.",
"tip11": "{{core:show-info-tab}}를 사용하여 정보탭을 표시하거나 {{core:show-debug-tab}}를 사용하여 디버그탭을 표시할 수 있습니다.",
"tip12": "작업공간에서 [ctrl] [click]을 사용하여 빠른추가 대회상자를 열 수 있습니다.",
"tip13": "[ctrl]을 누른 상태로 노드의 포트를 클릭하여 빠르게 연결할 수 있습니다.",
"tip14": "[shift]를 누른 상태로 노드를 클릭하여 연결된 모든 노드를 선택할 수 있습니다.",
"tip15": "[ctrl]을 누른 상태로 노드를 클릭하여 현재 선택영역에 노드를 추가/제거 할 수 있습니다.",
"tip16": "{{core:show-previous-tab}}와 {{core:show-next-tab}}를 사용하여 탭을 전환할 수 있습니다.",
"tip17": "노드 편집 창에서 {{core : confirm-edit-tray}}로 변경 사항을 확인하거나 {{core : cancel-edit-tray}}로 취소 할 수 있습니다.",
"tip18": "{{core : edit-selected-node}}를 누르면 현재 선택 영역의 첫 번째 노드가 편집됩니다."
}
}
{
"info": {
"tip0": "{{core:delete-selection}}를 사용하여 선택된 노드나 링크를 삭제할 수 있습니다.",
"tip1": "{{core:search}}를 활용하여 노드를 검색할 수 있습니다.",
"tip2": "{{core:toggle-sidebar}}를 사용하여 사이드바를 표시/비표시 전환 할 수 있습니다.",
"tip3": "{{core:manage-palette}}를 사용하여 노드 팔레트를 관리 할 수 있습니다.",
"tip4": "플로우 안의 설정노드가 사이드바에 표시됩니다. 메뉴 혹은 {{core:show-config-tab}}를 사용하여 엑세스 할 수 있습니다.",
"tip5": "설정에서 이 팁을 활성화/비활성화 할 수 있습니다.",
"tip6": "[left] [up] [down] [right] 키를 사용하여 선택된 노드를 움직일 수 있습니다. [shift]키를 누른 채로 움직이면 이동폭이 늘어납니다.",
"tip7": "노드를 와이어 사이로 드래그 하여 연결할 수도 있습니다.",
"tip8": "{{core:show-export-dialog}}를 사용하여 선택한 노드 또는 현재탭을 내보낼 수 있습니다.",
"tip9": "JSON파일을 에디터로 드래그하거나 {{core:show-import-dialog}}를 사용하여 플로우 가져올 수 있습니다.",
"tip10": "[shift] [click] 하고서 드래그하여 선택한 와이어를 이동할 수 있습니다.",
"tip11": "{{core:show-info-tab}}를 사용하여 정보탭을 표시하거나 {{core:show-debug-tab}}를 사용하여 디버그탭을 표시할 수 있습니다.",
"tip12": "작업공간에서 [ctrl] [click]을 사용하여 빠른추가 대회상자를 열 수 있습니다.",
"tip13": "[ctrl]을 누른 상태로 노드의 포트를 클릭하여 빠르게 연결할 수 있습니다.",
"tip14": "[shift]를 누른 상태로 노드를 클릭하여 연결된 모든 노드를 선택할 수 있습니다.",
"tip15": "[ctrl]을 누른 상태로 노드를 클릭하여 현재 선택영역에 노드를 추가/제거 할 수 있습니다.",
"tip16": "{{core:show-previous-tab}}와 {{core:show-next-tab}}를 사용하여 탭을 전환할 수 있습니다.",
"tip17": "노드 편집 창에서 {{core : confirm-edit-tray}}로 변경 사항을 확인하거나 {{core : cancel-edit-tray}}로 취소 할 수 있습니다.",
"tip18": "{{core : edit-selected-node}}를 누르면 현재 선택 영역의 첫 번째 노드가 편집됩니다."
}
}

View File

@ -1,222 +1,222 @@
{
"$string": {
"args": "arg",
"desc": "다음과 같은 규칙을 사용하여 인수 *arg*를 문자열로 변환합니다. \n\n - 문자열은 변경되지 않습니다. \n - 함수는 빈 문자열로 변환됩니다. \n - 무한대와 NaN은 JSON수치로 표현할 수 없기 때문에 오류처리 됩니다. \n - 다른 모든 값은 `JSON.stringify` 함수를 사용하여 JSON 문자열로 변환됩니다."
},
"$length": {
"args": "str",
"desc": "문자열 `str`의 문자 수를 반환합니다. `str`가 문자열이 아닌 경우 에러를 반환합니다."
},
"$substring": {
"args": "str, start[, length]",
"desc": "(zero-offset)의 `start`에서 시작하는 첫번째 인수 `str`의 문자열을 반환합니다. 만약 `length`가 지정된 경우, 부분 문자열은 최대 `length`의 크기를 갖습니다. 만약 `start` 인수가 음수이면 `str`의 끝에서부터의 문자수를 나타냅니다."
},
"$substringBefore": {
"args": "str, chars",
"desc": "`str`에 `chars`문자가 처음으로 나오기 전까지의 부분문자열을 반환합니다. 만약 `chars`가 없으면 `str`을 반환합니다."
},
"$substringAfter": {
"args": "str, chars",
"desc": "`str`에 `chars`문자가 처음으로 나온 이후의 부분문자열을 반환합니다. 만약 `chars`가 없으면 `str`을 반환합니다."
},
"$uppercase": {
"args": "str",
"desc": "`str`의 문자를 대문자로 반환합니다."
},
"$lowercase": {
"args": "str",
"desc": "`str`의 문자를 소문자로 반환합니다."
},
"$trim": {
"args": "str",
"desc": "다음의 순서대로 `str`의 모든 공백을 자르고 정규화 합니다:\n\n - 모든 탭, 캐리지 리턴 및 줄 바꿈은 공백으로 대체됩니다. \n- 연속된 공백은 하나로 줄입니다.\n- 후행 및 선행 공백은 삭제됩니다.\n\n 만일 `str`이 지정되지 않으면 (예: 이 함수를 인수없이 호출), context값을 `str`의 값으로 사용합니다. `str`이 문자열이 아니면 에러가 발생합니다."
},
"$contains": {
"args": "str, pattern",
"desc": "`str`이 `pattern`과 일치하면 `true`를, 일치하지 않으면 `false`를 반환합니다. 만약 `str`이 지정되지 않으면 (예: 이 함수를 인수없이 호출), context값을 `str`의 값으로 사용합니다. `pattern` 인수는 문자열이나 정규표현으로 할 수 있습니다."
},
"$split": {
"args": "str[, separator][, limit]",
"desc": "`str`인수를 분할하여 부분문자열로 배열합니다. `str`이 문자열이 아니면 에러가 발생합니다. 생략가능한 인수 `separator`는 `str`을 분할하는 문자를 문자열 또는 정규표현으로 지정합니다. `separator`를 지정하지 않은 경우, 공백의 문자열로 간주하여 `str`은 단일 문자의 배열로 분리됩니다. `separator`가 문자열이 아니면 에러가 발생합니다. 생략가능한 인수 'limit`는 결과의 배열이 갖는 부분문자열의 최대수를 지정합니다. 이 수를 넘는 부분문자열은 파기됩니다. `limit`가 지정되지 않으면`str`은 결과 배열의 크기의 제한없이 완전히 분리됩니다. `limit`이 음수인 경우 에러가 발생합니다."
},
"$join": {
"args": "array[, separator]",
"desc": "문자열의 배열을 생략가능한 인수 `separator`로 구분한 하나의 문자열로 연결합니다. 배열 `array`가 문자열이 아닌 요소를 포함하는 경우, 에러가 발생합니다. `separator`를 지정하지 않은 경우, 공백의 문자열로 간주합니다(예: 문자열간의 `separator`없음). `separator`가 문자열이 아닌 경우, 에러가 발생합니다."
},
"$match": {
"args": "str, pattern [, limit]",
"desc": "`str`문자열에 `pattern`를 적용하여, 오브젝트 배열을 반환합니다. 배열요소의 오브젝트는 `str`중 일치하는 부분의 정보를 보유합니다."
},
"$replace": {
"args": "str, pattern, replacement [, limit]",
"desc": "`str`문자열에서 `pattern` 패턴을 검색하여, `replacement`로 대체합니다.\n\n임의이ㅡ 인수 `limit`는 대체 횟수의 상한값을 지정합니다."
},
"$now": {
"args": "",
"desc": "ISO 8601 호환 형식으로 타임 스탬프를 생성하고 이를 문자열로 반환합니다."
},
"$base64encode": {
"args": "string",
"desc": "ASCII 문자열을 base 64 표현으로 변환합니다. 문자열의 각 문자는 이진 데이터의 바이트로 처리됩니다. 이렇게 하려면 문자열의 모든 문자가 URI로 인코딩 된 문자열을 포함하고, 0x00에서 0xFF 범위에 있어야합니다. 해당 범위를 벗어난 유니 코드 문자는 지원되지 않습니다"
},
"$base64decode": {
"args": "string",
"desc": "UTF-8코드페이지를 이용하여, Base 64형식의 바이트값을 문자열로 변환합니다."
},
"$number": {
"args": "arg",
"desc": "`arg`를 다음과 같은 규칙을 사요하여 숫자로 변환합니다. :\n\n - 숫자는 변경되지 않습니다.\n 올바른 JSON의 숫자는 숫자 그대로 변환됩니다.\n 그 외의 형식은 에러를 발생합니다."
},
"$abs": {
"args": "number",
"desc": "`number`의 절대값을 반환합니다."
},
"$floor": {
"args": "number",
"desc": "`number`를 `number`보다 같거나 작은 정수로 내림하여 반환합니다."
},
"$ceil": {
"args": "number",
"desc": "`number`를 `number`와 같거나 큰 정수로 올림하여 반환합니다."
},
"$round": {
"args": "number [, precision]",
"desc": "인수 `number`를 반올림한 값을 반환합니다. 임의의 인수 `precision`에는 반올립에서 사용할 소수점이하의 자릿수를 지정합니다."
},
"$power": {
"args": "base, exponent",
"desc": "기수 `base`의 값을 지수 `exponent`만큼의 거듭 제곱으로 반환합니다."
},
"$sqrt": {
"args": "number",
"desc": "인수 `number`의 제곱근을 반환합니다."
},
"$random": {
"args": "",
"desc": "0이상 1미만의 의사난수를 반환합니다."
},
"$millis": {
"args": "",
"desc": "Unix Epoch (1970 년 1 월 1 일 UTC)부터 경과된 밀리 초 수를 숫자로 반환합니다. 평가대상식에 포함되는 $millis()의 모든 호출은 모두 같은 값을 반환합니다."
},
"$sum": {
"args": "array",
"desc": "숫자 배열 `array`의 합계를 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$max": {
"args": "array",
"desc": "숫자 배열 `array`에서 최대값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$min": {
"args": "array",
"desc": "숫자 배열 `array`에서 최소값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$average": {
"args": "array",
"desc": "숫자 배열 `array`에서 평균값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$boolean": {
"args": "arg",
"desc": "`arg` 값을 다음의 규칙에 의해 Boolean으로 변환합니다::\n\n - `Boolean` : 변환하지 않음\n - `string`: 비어있음 : `false`\n - `string`: 비어있지 않음 : `true`\n - `number`: `0` : `false`\n - `number`: 0이 아님 : `true`\n - `null` : `false`\n - `array`: 비어있음 : `false`\n - `array`: `true`로 변환된 요소를 가짐 : `true`\n - `array`: 모든 요소가 `false`로 변환 : `false`\n - `object`: 비어있음 : `false`\n - `object`: 비어있지 않음 : `true`\n - `function` : `false`"
},
"$not": {
"args": "arg",
"desc": "인수의 부정을 Boolean으로 변환합니다. `arg`는 가장먼저boolean으로 변환됩니다."
},
"$exists": {
"args": "arg",
"desc": "`arg` 식의 평가값이 존재하는 경우 `true`, 식의 평가결과가 미정의인 경우 (예: 존재하지 않는 참조필드로의 경로)는 `false`를 반환합니다."
},
"$count": {
"args": "array",
"desc": "`array`의 요소 갯수를 반환합니다."
},
"$append": {
"args": "array, array",
"desc": "두개의 `array`를 병합합니다."
},
"$sort": {
"args": "array [, function]",
"desc": "배열 `array`의 모든 값을 순서대로 정렬하여 반환합니다. \n\n 비교함수 `function`을 이용하는 경우, 비교함수는 아래와 같은 두개의 인수를 가져야 합니다. \n\n `function(left,right)` \n\n 비교함수는 left와 right의 두개의 값을 비교하기에, 값을 정렬하는 처리에서 호출됩니다. 만약 요구되는 정렬에서 left값을 right값보다 뒤로 두고싶은 경우에는, 비교함수는 치환을 나타내는 Boolean형의 ``true`를, 그렇지 않은 경우에는 `false`를 반환해야 합니다."
},
"$reverse": {
"args": "array",
"desc": "`array`에 포함된 모든 값의 순서를 역순으로 변환하여 반환합니다."
},
"$shuffle": {
"args": "array",
"desc": "`array`에 포함된 모든 값의 순서를 랜덤으로 반환합니다."
},
"$zip": {
"args": "array, ...",
"desc": "배열 `array1` ... arrayN`의 위치 0, 1, 2…. 의 값으로 구성된 convolved (zipped) 배열을 반환합니다."
},
"$keys": {
"args": "object",
"desc": "`object` 키를 포함하는 배열을 반환합니다. 인수가 오브젝트의 배열이면 반환되는 배열은 모든 오브젝트에있는 모든 키의 중복되지 않은 목록이 됩니다."
},
"$lookup": {
"args": "object, key",
"desc": "`object` 내의 `key`가 갖는 값을 반환합니다. 최초의 인수가 객체의 배열 인 경우, 배열 내의 모든 오브젝트를 검색하여, 존재하는 모든 키가 갖는 값을 반환합니다."
},
"$spread": {
"args": "object",
"desc": "`object`의 키/값 쌍별로 각 요소가 하나인 오브젝트 배열로 분할합니다. 만일 오브젝트 배열인 경우, 배열의 결과는 각 오브젝트에서 얻은 키/값 쌍의 오브젝트를 갖습니다."
},
"$merge": {
"args": "array&lt;object&gt;",
"desc": "`object`배열을 하나의 `object`로 병합합니다. 병합결과의 오브젝트는 입력배열내의 각 오브젝트의 키/값 쌍을 포함합니다. 입력 오브젝트가 같은 키를 가질경우, 반환 된 `object`에는 배열 마지막의 오브젝트의 키/값이 격납됩니다. 입력 배열이 오브젝트가 아닌 요소를 포함하는 경우, 에러가 발생합니다."
},
"$sift": {
"args": "object, function",
"desc": "함수 `function`을 충족시키는 `object` 인수 키/값 쌍만 포함하는 오브젝트를 반환합니다. \n\n 함수 `function` 다음과 같은 인수를 가져야 합니다 : \n\n `function(value [, key [, object]])`"
},
"$each": {
"args": "object, function",
"desc": "`object`의 각 키/값 쌍에, 함수`function`을 적용한 값의 배열을 반환합니다."
},
"$map": {
"args": "array, function",
"desc": "`array`의 각 값에 `function`을 적용한 결과로 이루어진 배열을 반환합니다. \n\n 함수 `function`은 다음과 같은 인수를 가져야 합니다. \n\n `function(value[, index[, array]])`"
},
"$filter": {
"args": "array, function",
"desc": "`array`의 값중, 함수 `function`의 조건을 만족하는 값으로 이루어진 배열을 반환합니다. \n\n 함수 `function`은 다음과 같은 형식을 가져야 합니다. \n\n `function(value[, index[, array]])`"
},
"$reduce": {
"args": "array, function [, init]",
"desc": "배열의 각 요소값에 함수 `function`을 연속적으로 적용하여 얻어지는 집계값을 반환합니다. `function`의 적용에는 직전의 `function`의 적용결과와 요소값이 인수로 주어집니다. \n\n 함수 `function`은 인수를 두개 뽑아, 배열의 각 요소 사이에 배치하는 중치연산자처럼 작용해야 합니다. \n\n 임의의 인수 `init`에는 집약시의 초기값을 설정합니다."
},
"$flowContext": {
"args": "string[, string]",
"desc": "플로우 컨텍스트 속성을 취득합니다."
},
"$globalContext": {
"args": "string[, string]",
"desc": "플로우의 글로벌 컨텍스트 속성을 취득합니다."
},
"$pad": {
"args": "string, width [, char]",
"desc": "문자수가 인수 `width`의 절대값이상이 되도록, 필요한 경우 여분의 패딩을 사용하여 `string`의 복사본을 반환합니다. \n\n `width`가 양수인 경우, 오른쪽으로 채워지고, 음수이면 왼쪽으로 채워집니다. \n\n 임의의 `char`인수에는 이 함수에서 사용할 패딩을 지정합니다. 지정하지 않는 경우에는, 기본값으로 공백을 사용합니다."
},
"$fromMillis": {
"args": "number",
"desc": "Unix Epoch (1970 년 1 월 1 일 UTC) 이후의 밀리 초를 나타내는 숫자를 ISO 8601 형식의 타임 스탬프 문자열로 변환합니다."
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "`number`를 문자열로 변환하고 `picture` 문자열에 지정된 표현으로 서식을 변경합니다. \n\n 이 함수의 동작은 XPath F&O 3.1사양에 정의된 XPath/XQuery함수의 fn:format-number의 동작과 같습니다. 인수의 문자열 picture은 fn:format-number 과 같은 구문으로 수치의 서식을 정의합니다. \n\n 임의의 제3 인수 `option`은 소수점기호와 같은 기본 로케일 고유의 서식설정문자를 덮어쓰는데에 사용됩니다. 이 인수를 지정할 경우, XPath F&O 3.1사양의 수치형식에 기술되어있는 name/value 쌍을 포함하는 오브젝트여야 합니다."
},
"$formatBase": {
"args": "number [, radix]",
"desc": "`number`를 인수 `radix`에 지정한 값을 기수로하는 문자열로 변환합니다. `radix`가 지정되지 않은 경우, 기수 10이 기본값으로 설정됩니다. `radix`에는 2~36의 값을 설정할 수 있고, 그 외의 값의 경우에는 에러가 발생합니다."
},
"$toMillis": {
"args": "timestamp",
"desc": "ISO 8601 형식의 `timestamp`를 Unix Epoch (1970 년 1 월 1 일 UTC) 이후의 밀리 초 수로 변환합니다. 문자열이 올바른 형식이 아닌 경우 에러가 발생합니다."
},
"$env": {
"args": "arg",
"desc": "환경변수를 값으로 반환합니다.\n\n 이 함수는 Node-RED 정의 함수입니다."
}
}
{
"$string": {
"args": "arg",
"desc": "다음과 같은 규칙을 사용하여 인수 *arg*를 문자열로 변환합니다.\n\n - 문자열은 변경되지 않습니다.\n - 함수는 빈 문자열로 변환됩니다.\n - 무한대와 NaN은 JSON수치로 표현할 수 없기 때문에 오류처리 됩니다.\n - 다른 모든 값은 `JSON.stringify` 함수를 사용하여 JSON 문자열로 변환됩니다."
},
"$length": {
"args": "str",
"desc": "문자열 `str`의 문자 수를 반환합니다. `str`가 문자열이 아닌 경우 에러를 반환합니다."
},
"$substring": {
"args": "str, start[, length]",
"desc": "(zero-offset)의 `start`에서 시작하는 첫번째 인수 `str`의 문자열을 반환합니다. 만약 `length`가 지정된 경우, 부분 문자열은 최대 `length`의 크기를 갖습니다. 만약 `start` 인수가 음수이면 `str`의 끝에서부터의 문자수를 나타냅니다."
},
"$substringBefore": {
"args": "str, chars",
"desc": "`str`에 `chars`문자가 처음으로 나오기 전까지의 부분문자열을 반환합니다. 만약 `chars`가 없으면 `str`을 반환합니다."
},
"$substringAfter": {
"args": "str, chars",
"desc": "`str`에 `chars`문자가 처음으로 나온 이후의 부분문자열을 반환합니다. 만약 `chars`가 없으면 `str`을 반환합니다."
},
"$uppercase": {
"args": "str",
"desc": "`str`의 문자를 대문자로 반환합니다."
},
"$lowercase": {
"args": "str",
"desc": "`str`의 문자를 소문자로 반환합니다."
},
"$trim": {
"args": "str",
"desc": "다음의 순서대로 `str`의 모든 공백을 자르고 정규화 합니다:\n\n - 모든 탭, 캐리지 리턴 및 줄 바꿈은 공백으로 대체됩니다.\n- 연속된 공백은 하나로 줄입니다.\n- 후행 및 선행 공백은 삭제됩니다.\n\n 만일 `str`이 지정되지 않으면 (예: 이 함수를 인수없이 호출), context값을 `str`의 값으로 사용합니다. `str`이 문자열이 아니면 에러가 발생합니다."
},
"$contains": {
"args": "str, pattern",
"desc": "`str`이 `pattern`과 일치하면 `true`를, 일치하지 않으면 `false`를 반환합니다. 만약 `str`이 지정되지 않으면 (예: 이 함수를 인수없이 호출), context값을 `str`의 값으로 사용합니다. `pattern` 인수는 문자열이나 정규표현으로 할 수 있습니다."
},
"$split": {
"args": "str[, separator][, limit]",
"desc": "`str`인수를 분할하여 부분문자열로 배열합니다. `str`이 문자열이 아니면 에러가 발생합니다. 생략가능한 인수 `separator`는 `str`을 분할하는 문자를 문자열 또는 정규표현으로 지정합니다. `separator`를 지정하지 않은 경우, 공백의 문자열로 간주하여 `str`은 단일 문자의 배열로 분리됩니다. `separator`가 문자열이 아니면 에러가 발생합니다. 생략가능한 인수 'limit`는 결과의 배열이 갖는 부분문자열의 최대수를 지정합니다. 이 수를 넘는 부분문자열은 파기됩니다. `limit`가 지정되지 않으면`str`은 결과 배열의 크기의 제한없이 완전히 분리됩니다. `limit`이 음수인 경우 에러가 발생합니다."
},
"$join": {
"args": "array[, separator]",
"desc": "문자열의 배열을 생략가능한 인수 `separator`로 구분한 하나의 문자열로 연결합니다. 배열 `array`가 문자열이 아닌 요소를 포함하는 경우, 에러가 발생합니다. `separator`를 지정하지 않은 경우, 공백의 문자열로 간주합니다(예: 문자열간의 `separator`없음). `separator`가 문자열이 아닌 경우, 에러가 발생합니다."
},
"$match": {
"args": "str, pattern [, limit]",
"desc": "`str`문자열에 `pattern`를 적용하여, 오브젝트 배열을 반환합니다. 배열요소의 오브젝트는 `str`중 일치하는 부분의 정보를 보유합니다."
},
"$replace": {
"args": "str, pattern, replacement [, limit]",
"desc": "`str`문자열에서 `pattern` 패턴을 검색하여, `replacement`로 대체합니다.\n\n임의이ㅡ 인수 `limit`는 대체 횟수의 상한값을 지정합니다."
},
"$now": {
"args": "",
"desc": "ISO 8601 호환 형식으로 타임 스탬프를 생성하고 이를 문자열로 반환합니다."
},
"$base64encode": {
"args": "string",
"desc": "ASCII 문자열을 base 64 표현으로 변환합니다. 문자열의 각 문자는 이진 데이터의 바이트로 처리됩니다. 이렇게 하려면 문자열의 모든 문자가 URI로 인코딩 된 문자열을 포함하고, 0x00에서 0xFF 범위에 있어야합니다. 해당 범위를 벗어난 유니 코드 문자는 지원되지 않습니다"
},
"$base64decode": {
"args": "string",
"desc": "UTF-8코드페이지를 이용하여, Base 64형식의 바이트값을 문자열로 변환합니다."
},
"$number": {
"args": "arg",
"desc": "`arg`를 다음과 같은 규칙을 사요하여 숫자로 변환합니다. :\n\n - 숫자는 변경되지 않습니다.\n 올바른 JSON의 숫자는 숫자 그대로 변환됩니다.\n 그 외의 형식은 에러를 발생합니다."
},
"$abs": {
"args": "number",
"desc": "`number`의 절대값을 반환합니다."
},
"$floor": {
"args": "number",
"desc": "`number`를 `number`보다 같거나 작은 정수로 내림하여 반환합니다."
},
"$ceil": {
"args": "number",
"desc": "`number`를 `number`와 같거나 큰 정수로 올림하여 반환합니다."
},
"$round": {
"args": "number [, precision]",
"desc": "인수 `number`를 반올림한 값을 반환합니다. 임의의 인수 `precision`에는 반올립에서 사용할 소수점이하의 자릿수를 지정합니다."
},
"$power": {
"args": "base, exponent",
"desc": "기수 `base`의 값을 지수 `exponent`만큼의 거듭 제곱으로 반환합니다."
},
"$sqrt": {
"args": "number",
"desc": "인수 `number`의 제곱근을 반환합니다."
},
"$random": {
"args": "",
"desc": "0이상 1미만의 의사난수를 반환합니다."
},
"$millis": {
"args": "",
"desc": "Unix Epoch (1970 년 1 월 1 일 UTC)부터 경과된 밀리 초 수를 숫자로 반환합니다. 평가대상식에 포함되는 $millis()의 모든 호출은 모두 같은 값을 반환합니다."
},
"$sum": {
"args": "array",
"desc": "숫자 배열 `array`의 합계를 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$max": {
"args": "array",
"desc": "숫자 배열 `array`에서 최대값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$min": {
"args": "array",
"desc": "숫자 배열 `array`에서 최소값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$average": {
"args": "array",
"desc": "숫자 배열 `array`에서 평균값을 반환합니다. `array`에 숫자가 아닌 요소가 있는 경우, 에러가 발생합니다."
},
"$boolean": {
"args": "arg",
"desc": "`arg` 값을 다음의 규칙에 의해 Boolean으로 변환합니다::\n\n - `Boolean` : 변환하지 않음\n - `string`: 비어있음 : `false`\n - `string`: 비어있지 않음 : `true`\n - `number`: `0` : `false`\n - `number`: 0이 아님 : `true`\n - `null` : `false`\n - `array`: 비어있음 : `false`\n - `array`: `true`로 변환된 요소를 가짐 : `true`\n - `array`: 모든 요소가 `false`로 변환 : `false`\n - `object`: 비어있음 : `false`\n - `object`: 비어있지 않음 : `true`\n - `function` : `false`"
},
"$not": {
"args": "arg",
"desc": "인수의 부정을 Boolean으로 변환합니다. `arg`는 가장먼저boolean으로 변환됩니다."
},
"$exists": {
"args": "arg",
"desc": "`arg` 식의 평가값이 존재하는 경우 `true`, 식의 평가결과가 미정의인 경우 (예: 존재하지 않는 참조필드로의 경로)는 `false`를 반환합니다."
},
"$count": {
"args": "array",
"desc": "`array`의 요소 갯수를 반환합니다."
},
"$append": {
"args": "array, array",
"desc": "두개의 `array`를 병합합니다."
},
"$sort": {
"args": "array [, function]",
"desc": "배열 `array`의 모든 값을 순서대로 정렬하여 반환합니다.\n\n 비교함수 `function`을 이용하는 경우, 비교함수는 아래와 같은 두개의 인수를 가져야 합니다.\n\n `function(left,right)`\n\n 비교함수는 `left``right`의 두개의 값을 비교하기에, 값을 정렬하는 처리에서 호출됩니다. 만약 요구되는 정렬에서 left값을 `right`값보다 뒤로 두고싶은 경우에는, 비교함수는 치환을 나타내는 Boolean형의 `true`를, 그렇지 않은 경우에는 `false`를 반환해야 합니다."
},
"$reverse": {
"args": "array",
"desc": "`array`에 포함된 모든 값의 순서를 역순으로 변환하여 반환합니다."
},
"$shuffle": {
"args": "array",
"desc": "`array`에 포함된 모든 값의 순서를 랜덤으로 반환합니다."
},
"$zip": {
"args": "array, ...",
"desc": "배열 `array1` ... arrayN`의 위치 0, 1, 2…. 의 값으로 구성된 convolved (zipped) 배열을 반환합니다."
},
"$keys": {
"args": "object",
"desc": "`object` 키를 포함하는 배열을 반환합니다. 인수가 오브젝트의 배열이면 반환되는 배열은 모든 오브젝트에있는 모든 키의 중복되지 않은 목록이 됩니다."
},
"$lookup": {
"args": "object, key",
"desc": "`object` 내의 `key`가 갖는 값을 반환합니다. 최초의 인수가 객체의 배열 인 경우, 배열 내의 모든 오브젝트를 검색하여, 존재하는 모든 키가 갖는 값을 반환합니다."
},
"$spread": {
"args": "object",
"desc": "`object`의 키/값 쌍별로 각 요소가 하나인 오브젝트 배열로 분할합니다. 만일 오브젝트 배열인 경우, 배열의 결과는 각 오브젝트에서 얻은 키/값 쌍의 오브젝트를 갖습니다."
},
"$merge": {
"args": "array&lt;object&gt;",
"desc": "`object`배열을 하나의 `object`로 병합합니다. 병합결과의 오브젝트는 입력배열내의 각 오브젝트의 키/값 쌍을 포함합니다. 입력 오브젝트가 같은 키를 가질경우, 반환 된 `object`에는 배열 마지막의 오브젝트의 키/값이 격납됩니다. 입력 배열이 오브젝트가 아닌 요소를 포함하는 경우, 에러가 발생합니다."
},
"$sift": {
"args": "object, function",
"desc": "함수 `function`을 충족시키는 `object` 인수 키/값 쌍만 포함하는 오브젝트를 반환합니다.\n\n 함수 `function` 다음과 같은 인수를 가져야 합니다 :\n\n `function(value [, key [, object]])`"
},
"$each": {
"args": "object, function",
"desc": "`object`의 각 키/값 쌍에, 함수`function`을 적용한 값의 배열을 반환합니다."
},
"$map": {
"args": "array, function",
"desc": "`array`의 각 값에 `function`을 적용한 결과로 이루어진 배열을 반환합니다.\n\n 함수 `function`은 다음과 같은 인수를 가져야 합니다.\n\n `function(value[, index[, array]])`"
},
"$filter": {
"args": "array, function",
"desc": "`array`의 값중, 함수 `function`의 조건을 만족하는 값으로 이루어진 배열을 반환합니다.\n\n 함수 `function`은 다음과 같은 형식을 가져야 합니다.\n\n `function(value[, index[, array]])`"
},
"$reduce": {
"args": "array, function [, init]",
"desc": "배열의 각 요소값에 함수 `function`을 연속적으로 적용하여 얻어지는 집계값을 반환합니다. `function`의 적용에는 직전의 `function`의 적용결과와 요소값이 인수로 주어집니다.\n\n 함수 `function`은 인수를 두개 뽑아, 배열의 각 요소 사이에 배치하는 중치연산자처럼 작용해야 합니다.\n\n 임의의 인수 `init`에는 집약시의 초기값을 설정합니다."
},
"$flowContext": {
"args": "string[, string]",
"desc": "플로우 컨텍스트 속성을 취득합니다."
},
"$globalContext": {
"args": "string[, string]",
"desc": "플로우의 글로벌 컨텍스트 속성을 취득합니다."
},
"$pad": {
"args": "string, width [, char]",
"desc": "문자수가 인수 `width`의 절대값이상이 되도록, 필요한 경우 여분의 패딩을 사용하여 `string`의 복사본을 반환합니다.\n\n `width`가 양수인 경우, 오른쪽으로 채워지고, 음수이면 왼쪽으로 채워집니다.\n\n 임의의 `char`인수에는 이 함수에서 사용할 패딩을 지정합니다. 지정하지 않는 경우에는, 기본값으로 공백을 사용합니다."
},
"$fromMillis": {
"args": "number",
"desc": "Unix Epoch (1970 년 1 월 1 일 UTC) 이후의 밀리 초를 나타내는 숫자를 ISO 8601 형식의 타임 스탬프 문자열로 변환합니다."
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "`number`를 문자열로 변환하고 `picture` 문자열에 지정된 표현으로 서식을 변경합니다.\n\n 이 함수의 동작은 XPath F&O 3.1사양에 정의된 XPath/XQuery함수의 `fn:format-number`의 동작과 같습니다. 인수의 문자열 `picture``fn:format-number` 과 같은 구문으로 수치의 서식을 정의합니다.\n\n 임의의 제3 인수 `option`은 소수점기호와 같은 기본 로케일 고유의 서식설정문자를 덮어쓰는데에 사용됩니다. 이 인수를 지정할 경우, XPath F&O 3.1사양의 수치형식에 기술되어있는 name/value 쌍을 포함하는 오브젝트여야 합니다."
},
"$formatBase": {
"args": "number [, radix]",
"desc": "`number`를 인수 `radix`에 지정한 값을 기수로하는 문자열로 변환합니다. `radix`가 지정되지 않은 경우, 기수 10이 기본값으로 설정됩니다. `radix`에는 2~36의 값을 설정할 수 있고, 그 외의 값의 경우에는 에러가 발생합니다."
},
"$toMillis": {
"args": "timestamp",
"desc": "ISO 8601 형식의 `timestamp`를 Unix Epoch (1970 년 1 월 1 일 UTC) 이후의 밀리 초 수로 변환합니다. 문자열이 올바른 형식이 아닌 경우 에러가 발생합니다."
},
"$env": {
"args": "arg",
"desc": "환경변수를 값으로 반환합니다.\n\n 이 함수는 Node-RED 정의 함수입니다."
}
}

View File

@ -1186,11 +1186,8 @@
"validator": {
"errors": {
"invalid-json": "Dados JSON inválidos: __error__",
"invalid-json-prop": "__prop__: dados JSON inválidos: __error__",
"invalid-prop": "Expressão de propriedade inválida",
"invalid-prop-prop": "__prop__: expressão de propriedade inválida",
"invalid-num": "Número inválido",
"invalid-num-prop": "__prop__: número inválido",
"invalid-regexp": "Padrão de entrada inválido",
"invalid-regex-prop": "__prop__: Padrão de entrada inválido",
"missing-required-prop": "__prop__: valor de propriedade ausente",

View File

View File

@ -1,7 +1,7 @@
{
"$string": {
"args": "arg[, prettify]",
"desc": "Converte o tipo do parâmetro `arg` em uma cadeia de caracteres usando as seguintes regras de conversão de tipo:\n\n - Cadeia de caracteres não são alteradas\n - As funções são convertidas para uma cadeia de caracteres vazia\n - os tipos numérico infinito e NaN geram um erro porque não podem ser representados como um número JSON\n - Todos os outros valores são convertidos para uma cadeia de caracteres JSON usando a função `JSON.stringify`. Se `prettify` for verdadeira, então o JSON \"prettified\" é produzido. Isto é, uma linha por campo e as linhas serão indentadas com base na profundidade do campo."
"desc": "Converte o tipo do parâmetro `arg` em uma cadeia de caracteres usando as seguintes regras de conversão de tipo:\n\n - Cadeia de caracteres não são alteradas\n - As funções são convertidas para uma cadeia de caracteres vazia\n - os tipos numérico infinito e NaN geram um erro porque não podem ser representados como um número JSON\n - Todos os outros valores são convertidos para uma cadeia de caracteres JSON usando a função `JSON.stringify`. Se `prettify` for verdadeira, então o JSON \"prettified\" é produzido. Isto é, uma linha por campo e as linhas serão indentadas com base na profundidade do campo."
},
"$length": {
"args": "str",
@ -13,19 +13,19 @@
},
"$substringBefore": {
"args": "str, chars",
"desc": "Retorna a sub cadeia de caracteres antes da primeira ocorrência da sequência de caracteres `chars` em `string`. Se` string` não contiver `chars`, então retorna `str`. "
"desc": "Retorna a sub cadeia de caracteres antes da primeira ocorrência da sequência de caracteres `chars` em `string`. Se` string` não contiver `chars`, então retorna `str`."
},
"$substringAfter": {
"args": "str, chars",
"desc": "Retorna a sub cadeia de caracteres após a primeira ocorrência da sequência de caracteres `chars` em `string`. Se `string` não contiver `chars`, então retorna `str`. "
"desc": "Retorna a sub cadeia de caracteres após a primeira ocorrência da sequência de caracteres `chars` em `string`. Se `string` não contiver `chars`, então retorna `str`."
},
"$uppercase": {
"args": "str",
"desc": "Retorna uma cadeia de caracteres com todos os caracteres de `string` convertidos em maiúsculas. "
"desc": "Retorna uma cadeia de caracteres com todos os caracteres de `string` convertidos em maiúsculas."
},
"$lowercase": {
"args": "str",
"desc": "Retorna uma cadeia de caracteres com todos os caracteres de `string` convertidos em minúsculas. "
"desc": "Retorna uma cadeia de caracteres com todos os caracteres de `string` convertidos em minúsculas."
},
"$trim": {
"args": "str",
@ -33,71 +33,71 @@
},
"$contains": {
"args": "str, pattern",
"desc": "Retorna `true` se `str` tiver correspondente em `pattern`, caso contrário, retorna `false`. Se `str` não for especificado (isto é, esta função é chamada com um argumento), então o valor do contexto é usado como o valor de `str`. O parâmetro `pattern` pode ser uma cadeia de caracteres ou uma expressão regular. "
"desc": "Retorna `true` se `str` tiver correspondente em `pattern`, caso contrário, retorna `false`. Se `str` não for especificado (isto é, esta função é chamada com um argumento), então o valor do contexto é usado como o valor de `str`. O parâmetro `pattern` pode ser uma cadeia de caracteres ou uma expressão regular."
},
"$split": {
"args": "str[, separator][, limit]",
"desc": "Divide o parâmetro `str` em uma matriz de sub cadeia de caracteres. É um erro se `str` não for uma cadeia de caracteres. O parâmetro opcional `separator` especifica os caracteres dentro de `str` sobre os quais devem ser divididos como uma cadeia de caracteres ou expressão regular. Se `separator` não for especificado, a cadeia de caracteres vazia será assumida e `str` será dividido em uma matriz de caracteres únicos. É um erro se `separador` não for uma cadeia de caracteres. O parâmetro opcional `limit` é um número que especifica o número máximo de sub cadeia de caracteres a serem incluídas na matriz resultante. Quaisquer sub cadeia de caracteres adicionais são descartadas. Se `limit` não for especificado, então `str` será totalmente dividido sem limite para o tamanho da matriz resultante . É um erro se `limit` não for um número não negativo."
"desc": "Divide o parâmetro `str` em uma matriz de sub cadeia de caracteres. É um erro se `str` não for uma cadeia de caracteres. O parâmetro opcional `separator` especifica os caracteres dentro de `str` sobre os quais devem ser divididos como uma cadeia de caracteres ou expressão regular. Se `separator` não for especificado, a cadeia de caracteres vazia será assumida e `str` será dividido em uma matriz de caracteres únicos. É um erro se `separador` não for uma cadeia de caracteres. O parâmetro opcional `limit` é um número que especifica o número máximo de sub cadeia de caracteres a serem incluídas na matriz resultante. Quaisquer sub cadeia de caracteres adicionais são descartadas. Se `limit` não for especificado, então `str` será totalmente dividido sem limite para o tamanho da matriz resultante . É um erro se `limit` não for um número não negativo."
},
"$join": {
"args": "array[, separator]",
"desc": "Une uma matriz de cadeias de caracteres de componentes em uma única cadeia de caracteres concatenada com cada cadeia de caracteres de componente separada pelo parâmetro opcional `separator`. É um erro se a `matriz` de entrada contiver um item que não seja uma cadeia de caracteres. Se `separator` for não especificado, assume-se que é uma cadeia de caracteres vazia, ou seja, nenhum `separator` entre as cadeias de caracteres do componente. É um erro se `separator` não for uma cadeia de caracteres. "
"desc": "Une uma matriz de cadeias de caracteres de componentes em uma única cadeia de caracteres concatenada com cada cadeia de caracteres de componente separada pelo parâmetro opcional `separator`. É um erro se a `matriz` de entrada contiver um item que não seja uma cadeia de caracteres. Se `separator` for não especificado, assume-se que é uma cadeia de caracteres vazia, ou seja, nenhum `separator` entre as cadeias de caracteres do componente. É um erro se `separator` não for uma cadeia de caracteres."
},
"$match": {
"args": "str, pattern [, limit]",
"desc": "Aplica a cadeia de caracteres `str` à expressão regular `pattern` e retorna uma matriz de objetos, com cada objeto contendo informações sobre cada ocorrência de uma correspondência dentro de `str`. "
"desc": "Aplica a cadeia de caracteres `str` à expressão regular `pattern` e retorna uma matriz de objetos, com cada objeto contendo informações sobre cada ocorrência de uma correspondência dentro de `str`."
},
"$replace": {
"args": "str, pattern, replacement [, limit]",
"desc": "Encontra ocorrências de `pattern` dentro de `str` e as substitui por `replacement`.\n\nO parâmetro opcional `limit` é o número máximo de substituições."
},
"$now": {
"args":"$[picture [, timezone]]",
"desc":"Gera um carimbo de data/hora em formato compatível com ISO 8601 e o retorna como uma cadeia de caracteres. Se os parâmetros opcionais de imagem e fuso horário forem fornecidos, o carimbo de data/hora atual é formatado conforme descrito pela função `$ fromMillis ()`"
"args": "$[picture [, timezone]]",
"desc": "Gera um carimbo de data/hora em formato compatível com ISO 8601 e o retorna como uma cadeia de caracteres. Se os parâmetros opcionais de imagem e fuso horário forem fornecidos, o carimbo de data/hora atual é formatado conforme descrito pela função `$fromMillis()`"
},
"$base64encode": {
"args":"string",
"desc":"Converte uma cadeia de caracteres ASCII em uma representação de base 64. Cada caractere na cadeia de caracteres é tratado como um byte de dados binários. Isso requer que todos os caracteres na cadeia de caracteres estejam no intervalo de 0x00 a 0xFF, o que inclui todos os caracteres em cadeias de caracteres codificadas em URI. Caracteres Unicode fora desse intervalo não são suportados."
"args": "string",
"desc": "Converte uma cadeia de caracteres ASCII em uma representação de base 64. Cada caractere na cadeia de caracteres é tratado como um byte de dados binários. Isso requer que todos os caracteres na cadeia de caracteres estejam no intervalo de 0x00 a 0xFF, o que inclui todos os caracteres em cadeias de caracteres codificadas em URI. Caracteres Unicode fora desse intervalo não são suportados."
},
"$base64decode": {
"args":"string",
"desc":"Converte bytes codificados de base 64 em uma cadeia de caracteres, usando uma página de código UTF-8 Unicode."
"args": "string",
"desc": "Converte bytes codificados de base 64 em uma cadeia de caracteres, usando uma página de código UTF-8 Unicode."
},
"$number": {
"args": "arg",
"desc": "Converte o parâmetro `arg` em um número usando as seguintes regras de conversão:\n\n - Os números permanecem inalterados\n - Cadeias de caracteres que contêm uma sequência de caracteres que representam um número JSON válido são convertidos para esse número\n - Todos os outros valores causam a geração de um erro."
},
"$abs": {
"args":"number",
"desc":"Retorna o valor absoluto do parâmetro `number`."
"args": "number",
"desc": "Retorna o valor absoluto do parâmetro `number`."
},
"$floor": {
"args":"number",
"desc":"Retorna o valor de `number` arredondado para baixo para o inteiro mais próximo que seja menor ou igual a `number`."
"args": "number",
"desc": "Retorna o valor de `number` arredondado para baixo para o inteiro mais próximo que seja menor ou igual a `number`."
},
"$ceil": {
"args":"number",
"desc":"Retorna o valor de `number` arredondado para o número inteiro mais próximo que é maior ou igual a `number`."
"args": "number",
"desc": "Retorna o valor de `number` arredondado para o número inteiro mais próximo que é maior ou igual a `number`."
},
"$round": {
"args":"number [, precision]",
"desc":"Retorna o valor do parâmetro `number` arredondado para o número de casas decimais especificado pelo parâmetro opcional `precision`."
"args": "number [, precision]",
"desc": "Retorna o valor do parâmetro `number` arredondado para o número de casas decimais especificado pelo parâmetro opcional `precision`."
},
"$power": {
"args":"base, exponent",
"desc":"Retorna o valor de `base` elevado à potência de `exponent`."
"args": "base, exponent",
"desc": "Retorna o valor de `base` elevado à potência de `exponent`."
},
"$sqrt": {
"args":"number",
"desc":"Retorna a raiz quadrada do valor do parâmetro `number`."
"args": "number",
"desc": "Retorna a raiz quadrada do valor do parâmetro `number`."
},
"$random": {
"args":"",
"desc":"Retorna um número pseudoaleatório maior ou igual a zero e menor que um."
"args": "",
"desc": "Retorna um número pseudoaleatório maior ou igual a zero e menor que um."
},
"$millis": {
"args":"",
"desc":"Retorna o número de milissegundos desde o Unix Epoch (1º de janeiro de 1970 UTC) como um número. Todas as invocações de `$ millis ()` dentro de uma avaliação de uma expressão retornarão todas o mesmo valor."
"args": "",
"desc": "Retorna o número de milissegundos desde o Unix Epoch (1º de janeiro de 1970 UTC) como um número. Todas as invocações de `$millis()` dentro de uma avaliação de uma expressão retornarão todas o mesmo valor."
},
"$sum": {
"args": "array",
@ -121,7 +121,7 @@
},
"$not": {
"args": "arg",
"desc": "Retorna booliano NOT no argumento. `Arg` é convertido de tipo primeiro para um booliano "
"desc": "Retorna booliano NOT no argumento. `Arg` é convertido de tipo primeiro para um booliano"
},
"$exists": {
"args": "arg",
@ -136,20 +136,20 @@
"desc": "Anexa duas matrizes"
},
"$sort": {
"args":"array [, function]",
"desc":"Retorna uma matriz contendo todos os valores no parâmetro `array`, mas classificados em ordem.\n\nSe um comparador `function` for fornecido, então deve ser uma função que leva dois parâmetros:\n\n`function(left, right)`\n\nEsta função é invocada pelo algoritmo de classificação para comparar dois valores à esquerda e à direita. Se o valor de esquerda deve ser colocado após o valor de direita na ordem de classificação desejada, a função deve retornar o booliano `true` para indicar uma troca. Caso contrário, deve retornar `false`."
"args": "array [, function]",
"desc": "Retorna uma matriz contendo todos os valores no parâmetro `array`, mas classificados em ordem.\n\nSe um comparador `function` for fornecido, então deve ser uma função que leva dois parâmetros:\n\n`function(left, right)`\n\nEsta função é invocada pelo algoritmo de classificação para comparar dois valores à esquerda e à direita. Se o valor de esquerda deve ser colocado após o valor de direita na ordem de classificação desejada, a função deve retornar o booliano `true` para indicar uma troca. Caso contrário, deve retornar `false`."
},
"$reverse": {
"args":"array",
"desc":"Retorna uma matriz contendo todos os valores do parâmetro `array`, mas na ordem reversa. "
"args": "array",
"desc": "Retorna uma matriz contendo todos os valores do parâmetro `array`, mas na ordem reversa."
},
"$shuffle": {
"args":"array",
"desc":"Retorna uma matriz contendo todos os valores do parâmetro `array`, mas misturados em ordem aleatória. "
"args": "array",
"desc": "Retorna uma matriz contendo todos os valores do parâmetro `array`, mas misturados em ordem aleatória."
},
"$zip": {
"args":"array, ...",
"desc":"Retorna uma matriz convolucional (compactada) contendo matrizes agrupadas de valores dos argumentos `array1`… `arrayN` do índice 0, 1, 2 ...."
"args": "array, ...",
"desc": "Retorna uma matriz convolucional (compactada) contendo matrizes agrupadas de valores dos argumentos `array1`… `arrayN` do índice 0, 1, 2 ...."
},
"$keys": {
"args": "object",
@ -161,59 +161,59 @@
},
"$spread": {
"args": "object",
"desc": "Divide um objeto que contém pares de chave/valor em uma matriz de objetos, cada um com um único par de chave/valor do objeto de entrada. Se o parâmetro for uma matriz de objetos, a matriz resultante conterá um objeto para cada par de chave/valor em todo objeto na matriz fornecida. "
"desc": "Divide um objeto que contém pares de chave/valor em uma matriz de objetos, cada um com um único par de chave/valor do objeto de entrada. Se o parâmetro for uma matriz de objetos, a matriz resultante conterá um objeto para cada par de chave/valor em todo objeto na matriz fornecida."
},
"$merge": {
"args": "array&lt;object&gt;",
"desc": "Mescla uma matriz de `objects` em um único `object` contendo todos os pares de chave/valor de cada um dos objetos na matriz de entrada. Se qualquer um dos objetos de entrada contiver a mesma chave, então o `object` retornado conterá o valor do último na matriz. É um erro se a matriz de entrada contiver um item que não seja um objeto."
},
"$sift": {
"args":"object, function",
"args": "object, function",
"desc": "Retorna um objeto que contém apenas os pares de chave/valor do parâmetro `object` que satisfazem o predicado `function` passado como o segundo parâmetro.\n\nA `function` que é fornecida como o segundo parâmetro deve ter o seguinte assinatura:\n\n`function(value [, key [, object]])`"
},
"$each": {
"args":"object, function",
"desc":"Retorna uma matriz contendo os valores retornados por `function` quando aplicado a cada par chave/valor no `object`."
"args": "object, function",
"desc": "Retorna uma matriz contendo os valores retornados por `function` quando aplicado a cada par chave/valor no `object`."
},
"$map": {
"args":"array, function",
"desc":"Retorna uma matriz contendo os resultados da aplicação do parâmetro `function` a cada valor no parâmetro `array`.\n\nA `function` que é fornecido como o segundo parâmetro deve ter a seguinte assinatura:\n\n`function(value [, index [, array]])`"
"args": "array, function",
"desc": "Retorna uma matriz contendo os resultados da aplicação do parâmetro `function` a cada valor no parâmetro `array`.\n\nA `function` que é fornecido como o segundo parâmetro deve ter a seguinte assinatura:\n\n`function(value [, index [, array]])`"
},
"$filter": {
"args":"array, function",
"desc":"Retorna uma matriz contendo apenas os valores no parâmetro `array` que satisfazem o predicado `function`.\n\nThe `function` que é fornecido como o segundo parâmetro deve ter a seguinte assinatura:\n\n`function(value [, index [, array]])`"
"args": "array, function",
"desc": "Retorna uma matriz contendo apenas os valores no parâmetro `array` que satisfazem o predicado `function`.\n\nThe `function` que é fornecido como o segundo parâmetro deve ter a seguinte assinatura:\n\n`function(value [, index [, array]])`"
},
"$reduce": {
"args":"array, function [, init]",
"desc":"Retorna um valor agregado derivado da aplicação do parâmetro `function` sucessivamente a cada valor em `array` em combinação com o resultado da aplicação anterior da função.\n\nA função deve aceitar dois argumentos e se comportar como um operador inserido entre cada valor dentro de `array`. A assinatura da `function` deve estar no formato: `myfunc($accumulator, $value[, $index[, $array]])`\n\nO parâmetro opcional `init` é usado como o valor inicial na agregação."
"args": "array, function [, init]",
"desc": "Retorna um valor agregado derivado da aplicação do parâmetro `function` sucessivamente a cada valor em `array` em combinação com o resultado da aplicação anterior da função.\n\nA função deve aceitar dois argumentos e se comportar como um operador inserido entre cada valor dentro de `array`. A assinatura da `function` deve estar no formato: `myfunc($accumulator, $value[, $index[, $array]])`\n\nO parâmetro opcional `init` é usado como o valor inicial na agregação."
},
"$flowContext": {
"args": "string[, string]",
"desc": "Recupera uma propriedade de contexto de fluxo.\n\nEsta é uma função definida pelo Node-RED. "
"desc": "Recupera uma propriedade de contexto de fluxo.\n\nEsta é uma função definida pelo Node-RED."
},
"$globalContext": {
"args": "string[, string]",
"desc": "Recupera uma propriedade de contexto global.\n\nEsta é uma função definida pelo Node-RED. "
"desc": "Recupera uma propriedade de contexto global.\n\nEsta é uma função definida pelo Node-RED."
},
"$pad": {
"args": "string, width [, char]",
"desc": "Retorna uma cópia da `string` com preenchimento extra, se necessário, de forma que seu número total de caracteres seja pelo menos o valor absoluto do parâmetro `width`.\n\nSe `width` for um número positivo, a cadeia de caracteres será preenchida à direita; se negativo, é preenchida à esquerda.\n\nO argumento opcional `char` especifica os caracteres de preenchimento a serem usados. Se não for especificado, o padrão é o caractere de espaço. "
"desc": "Retorna uma cópia da `string` com preenchimento extra, se necessário, de forma que seu número total de caracteres seja pelo menos o valor absoluto do parâmetro `width`.\n\nSe `width` for um número positivo, a cadeia de caracteres será preenchida à direita; se negativo, é preenchida à esquerda.\n\nO argumento opcional `char` especifica os caracteres de preenchimento a serem usados. Se não for especificado, o padrão é o caractere de espaço."
},
"$fromMillis": {
"args": "number, [, picture [, timezone]]",
"desc": "Converta o `number` que representa os milissegundos desde a época do Unix (1 January, 1970 UTC) em uma representação de cadeia de caracteres formatada do carimbo de data/hora conforme especificado pela cadeia de caracteres de imagem.\n\nSe o parâmetro opcional `image` for omitido, o carimbo de data/hora será formatado no formato ISO 8601.\n\nSe a cadeia de caracteresopcional `picture` for fornecida, o carimbo de data/hora é formatado de acordo com a representação especificada nessa cadeia de caracteres. O comportamento desta função é consistente com a versão de dois argumentos da função XPath/XQuery `format-dateTime` conforme definido na especificação XPath F&O 3.1. O parâmetro de cadeia de caracteres de imagem define como o carimbo de data/hora é formatado e tem a mesma sintaxe de `format-dateTime`.\n\nSe a cadeia de caracteres opcional `timezone` for fornecida, o carimbo de data/hora formatado estará nesse fuso horário. A cadeia de caracteres `timezone` deve estar no formato '± HHMM', onde ± é o sinal de mais ou menos e HHMM é o deslocamento em horas e minutos do UTC. Deslocamento positivo para fusos horários a leste do UTC, deslocamento negativo para fusos horários a oeste do UTC. "
"desc": "Converta o `number` que representa os milissegundos desde a época do Unix (1 January, 1970 UTC) em uma representação de cadeia de caracteres formatada do carimbo de data/hora conforme especificado pela cadeia de caracteres de imagem.\n\nSe o parâmetro opcional `image` for omitido, o carimbo de data/hora será formatado no formato ISO 8601.\n\nSe a cadeia de caracteresopcional `picture` for fornecida, o carimbo de data/hora é formatado de acordo com a representação especificada nessa cadeia de caracteres. O comportamento desta função é consistente com a versão de dois argumentos da função XPath/XQuery `format-dateTime` conforme definido na especificação XPath F&O 3.1. O parâmetro de cadeia de caracteres de imagem define como o carimbo de data/hora é formatado e tem a mesma sintaxe de `format-dateTime`.\n\nSe a cadeia de caracteres opcional `timezone` for fornecida, o carimbo de data/hora formatado estará nesse fuso horário. A cadeia de caracteres `timezone` deve estar no formato '± HHMM', onde ± é o sinal de mais ou menos e HHMM é o deslocamento em horas e minutos do UTC. Deslocamento positivo para fusos horários a leste do UTC, deslocamento negativo para fusos horários a oeste do UTC."
},
"$formatNumber": {
"args": "number, picture [, options]",
"desc": "Converte o tipo de `number` em uma cadeia de caracteres e o formata em uma representação decimal conforme especificado pela cadeia de caracteres `picture`.\n\n O comportamento desta função é consistente com a função XPath/XQuery fn: format-number conforme definido na especificação XPath F&O 3.1. O parâmetro de cadeia de caracteres de imagem define como o número é formatado e tem a mesma sintaxe de fn: format-number.\n\nO terceiro argumento opcional `options` é usado para substituir os caracteres de formatação específicos da localidade padrão, como o separador decimal. Se fornecido, este argumento deve ser um objeto contendo pares de nome/valor especificados na seção de formato decimal da especificação XPath F&O 3.1."
"desc": "Converte o tipo de `number` em uma cadeia de caracteres e o formata em uma representação decimal conforme especificado pela cadeia de caracteres `picture`.\n\n O comportamento desta função é consistente com a função XPath/XQuery `fn:format-number` conforme definido na especificação XPath F&O 3.1. O parâmetro de cadeia de caracteres de imagem define como o número é formatado e tem a mesma sintaxe de `fn:format-number`.\n\nO terceiro argumento opcional `options` é usado para substituir os caracteres de formatação específicos da localidade padrão, como o separador decimal. Se fornecido, este argumento deve ser um objeto contendo pares de nome/valor especificados na seção de formato decimal da especificação XPath F&O 3.1."
},
"$formatBase": {
"args": "number [, radix]",
"desc": "Converte o `number` em uma cadeia de caracteres e o formata em um inteiro representado na base do número especificada pelo argumento `radix`. Se `radix` não for especificado, o padrão é a base 10. `radix` pode estar entre 2 e 36, caso contrário, um erro será gerado. "
"desc": "Converte o `number` em uma cadeia de caracteres e o formata em um inteiro representado na base do número especificada pelo argumento `radix`. Se `radix` não for especificado, o padrão é a base 10. `radix` pode estar entre 2 e 36, caso contrário, um erro será gerado."
},
"$toMillis": {
"args": "timestamp",
"desc": "Converta o tipo de uma cadeia de caracteres `timestamp` no formato ISO 8601 para o número de milissegundos desde a época do Unix (1 January, 1970 UTC) como um número. Um erro é gerado se a cadeia de caracteres não estiver no formato correto. "
"desc": "Converta o tipo de uma cadeia de caracteres `timestamp` no formato ISO 8601 para o número de milissegundos desde a época do Unix (1 January, 1970 UTC) como um número. Um erro é gerado se a cadeia de caracteres não estiver no formato correto."
},
"$env": {
"args": "arg",
@ -221,15 +221,15 @@
},
"$eval": {
"args": "expr [, context]",
"desc": "Analisa e avalia a cadeia de caracteres `expr` que contém um JSON literal ou uma expressão JSONata usando o contexto atual como o contexto para avaliação. "
"desc": "Analisa e avalia a cadeia de caracteres `expr` que contém um JSON literal ou uma expressão JSONata usando o contexto atual como o contexto para avaliação."
},
"$formatInteger": {
"args": "number, picture",
"desc": "Converte o tipo de `number` em uma cadeia de caracteres e o formata em uma representação inteira conforme especificado pela cadeia de caracteres `picture`. O parâmetro da cadeia de caracteres de imagem define como o número é formatado e tem a mesma sintaxe de `fn: format-integer` do Especificação XPath F&O 3.1. "
"desc": "Converte o tipo de `number` em uma cadeia de caracteres e o formata em uma representação inteira conforme especificado pela cadeia de caracteres `picture`. O parâmetro da cadeia de caracteres de imagem define como o número é formatado e tem a mesma sintaxe de `fn:format-integer` do Especificação XPath F&O 3.1."
},
"$parseInteger": {
"args": "string, picture",
"desc": "Examina e troca o conteúdo do parâmetro `string` para um inteiro (como um número JSON) usando o formato especificado pela cadeia de caracteres `picture`. O parâmetro da cadeia de caracteres `picture` tem o mesmo formato que `$ formatInteger`."
"desc": "Examina e troca o conteúdo do parâmetro `string` para um inteiro (como um número JSON) usando o formato especificado pela cadeia de caracteres `picture`. O parâmetro da cadeia de caracteres `picture` tem o mesmo formato que `$formatInteger`."
},
"$error": {
"args": "[str]",
@ -237,7 +237,7 @@
},
"$assert": {
"args": "arg, str",
"desc": "Se `arg` for verdadeiro, a função retorna indefinido. Se `arg` for falso, uma exceção é gerada com `str` como a mensagem da exceção. "
"desc": "Se `arg` for verdadeiro, a função retorna indefinido. Se `arg` for falso, uma exceção é gerada com `str` como a mensagem da exceção."
},
"$single": {
"args": "array, function",
@ -249,23 +249,23 @@
},
"$encodeUrl": {
"args": "str",
"desc": "Codifica um Localizador Uniforme de Recursos (URL) substituindo cada instância de certos caracteres por uma, duas, três ou quatro sequências de escape que representam a codificação UTF-8 do caractere. \n\nExemplo: `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\"`"
"desc": "Codifica um Localizador Uniforme de Recursos (URL) substituindo cada instância de certos caracteres por uma, duas, três ou quatro sequências de escape que representam a codificação UTF-8 do caractere.\n\nExemplo: `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\"`"
},
"$decodeUrlComponent": {
"args": "str",
"desc": "Decodifica um componente Localizador Uniforme de Recursos (URL) criado anteriormente por encodeUrlComponent. \n\nExemplo: `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
"desc": "Decodifica um componente Localizador Uniforme de Recursos (URL) criado anteriormente por encodeUrlComponent.\n\nExemplo: `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
},
"$decodeUrl": {
"args": "str",
"desc": "Decodifica um Localizador Uniforme de Recursos (URL) criado anteriormente por encodeUrl. \n\nExemplo: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "Decodifica um Localizador Uniforme de Recursos (URL) criado anteriormente por encodeUrl.\n\nExemplo: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",
"desc": "Retorna uma matriz com valores duplicados removidos da `array` "
"desc": "Retorna uma matriz com valores duplicados removidos da `array`"
},
"$type": {
"args": "value",
"desc": "Retorna o tipo de `value` como uma cadeia de caracteres. Se `value` for indefinido, retornará `undefined` "
"desc": "Retorna o tipo de `value` como uma cadeia de caracteres. Se `value` for indefinido, retornará `undefined`"
},
"$moment": {
"args": "[str]",

View File

@ -52,52 +52,52 @@
"desc": "Находит вхождения шаблона `pattern` в строке `str` и заменяет их на строку `replacement`.\n\nНеобязательный параметр `limit` - это максимальное количество замен."
},
"$now": {
"args":"",
"desc":"Создает отметку времени в формате, совместимом с ISO 8601, и возвращает ее как строку."
"args": "",
"desc": "Создает отметку времени в формате, совместимом с ISO 8601, и возвращает ее как строку."
},
"$base64encode": {
"args":"string",
"desc":"Преобразует ASCII-строку в base-64 кодировку. Каждый символ в строке обрабатывается как байт двоичных данных. Для этого необходимо, чтобы все символы в строке находились в диапазоне от 0x00 до 0xFF, который включает все символы строк в URI-кодировке. Символы Юникода за пределами этого диапазона не поддерживаются."
"args": "string",
"desc": "Преобразует ASCII-строку в base-64 кодировку. Каждый символ в строке обрабатывается как байт двоичных данных. Для этого необходимо, чтобы все символы в строке находились в диапазоне от 0x00 до 0xFF, который включает все символы строк в URI-кодировке. Символы Юникода за пределами этого диапазона не поддерживаются."
},
"$base64decode": {
"args":"string",
"desc":"Преобразует байты в кодировке base-64 в строку, используя кодовую страницу Юникод UTF-8."
"args": "string",
"desc": "Преобразует байты в кодировке base-64 в строку, используя кодовую страницу Юникод UTF-8."
},
"$number": {
"args": "arg",
"desc": "Преобразует параметр `arg` в число с использованием следующих правил приведения:\n\n - Числа возвращаются как есть\n - Строки, которые содержат последовательность символов, представляющих допустимое в JSON число, преобразуются в это число\n - Все остальные значения вызывают ошибку."
},
"$abs": {
"args":"number",
"desc":"Возвращает абсолютное значение числа `number`."
"args": "number",
"desc": "Возвращает абсолютное значение числа `number`."
},
"$floor": {
"args":"number",
"desc":"Возвращает значение числа `number`, округленное до ближайшего целого числа, которое меньше или равно `number`."
"args": "number",
"desc": "Возвращает значение числа `number`, округленное до ближайшего целого числа, которое меньше или равно `number`."
},
"$ceil": {
"args":"number",
"desc":"Возвращает значение числа `number`, округленное до ближайшего целого числа, которое больше или равно `number`."
"args": "number",
"desc": "Возвращает значение числа `number`, округленное до ближайшего целого числа, которое больше или равно `number`."
},
"$round": {
"args":"number [, precision]",
"desc":"Возвращает значение числа `number`, округленное до количества десятичных знаков, указанных необязательным параметром `precision`."
"args": "number [, precision]",
"desc": "Возвращает значение числа `number`, округленное до количества десятичных знаков, указанных необязательным параметром `precision`."
},
"$power": {
"args":"base, exponent",
"desc":"Возвращает значение числа `base`, возведенное в степень `exponent`."
"args": "base, exponent",
"desc": "Возвращает значение числа `base`, возведенное в степень `exponent`."
},
"$sqrt": {
"args":"number",
"desc":"Возвращает квадратный корень из значения числа `number`."
"args": "number",
"desc": "Возвращает квадратный корень из значения числа `number`."
},
"$random": {
"args":"",
"desc":"Возвращает псевдослучайное число, которе больше или равно нулю и меньше единицы."
"args": "",
"desc": "Возвращает псевдослучайное число, которе больше или равно нулю и меньше единицы."
},
"$millis": {
"args":"",
"desc":"Возвращает число миллисекунд с начала Unix-эпохи (1 января 1970 года по Гринвичу) в виде числа. Все вызовы `$millis()` в пределах выполнения выражения будут возвращать одно и то же значение."
"args": "",
"desc": "Возвращает число миллисекунд с начала Unix-эпохи (1 января 1970 года по Гринвичу) в виде числа. Все вызовы `$millis()` в пределах выполнения выражения будут возвращать одно и то же значение."
},
"$sum": {
"args": "array",
@ -117,7 +117,7 @@
},
"$boolean": {
"args": "arg",
"desc": "Приводит аргумент к логическому значению, используя следующие правила: \n\n - Логические значения возвращаются как есть\n - пустая строка: `false`\n - непустая строка: `true`\n - число равное `0`: `false`\n - ненулевое число: `true`\n - `null` : `false`\n - пустой массив: `false`\n - массив, который содержит хотя бы один элемент, приводимый к `true`: `true`\n - массив, все элементы которого приводятся к `false`: `false`\n - пустой объект: `false`\n - непустой объект: `true`\n - функция: `false`"
"desc": "Приводит аргумент к логическому значению, используя следующие правила:\n\n - Логические значения возвращаются как есть\n - пустая строка: `false`\n - непустая строка: `true`\n - число равное `0`: `false`\n - ненулевое число: `true`\n - `null` : `false`\n - пустой массив: `false`\n - массив, который содержит хотя бы один элемент, приводимый к `true`: `true`\n - массив, все элементы которого приводятся к `false`: `false`\n - пустой объект: `false`\n - непустой объект: `true`\n - функция: `false`"
},
"$not": {
"args": "arg",
@ -136,20 +136,20 @@
"desc": "Присоединяет один массив к другому"
},
"$sort": {
"args":"array [, function]",
"desc":"Возвращает массив, содержащий все значения параметра `array`, но отсортированные по порядку.\n\nЕсли указан компаратор `function`, то это должна быть функция, которая принимает два параметра:\n\n`function(val1, val2)`\n\nЭту функцию вызывает алгоритм сортировки для сравнения двух значений: val1 и val2. Если значение val1 следует поместить после значения val2 в желаемом порядке сортировки, то функция должна возвращать логическое значение `true`, чтобы обозначить замену. В противном случае она должна вернуть `false`."
"args": "array [, function]",
"desc": "Возвращает массив, содержащий все значения параметра `array`, но отсортированные по порядку.\n\nЕсли указан компаратор `function`, то это должна быть функция, которая принимает два параметра:\n\n`function(val1, val2)`\n\nЭту функцию вызывает алгоритм сортировки для сравнения двух значений: val1 и val2. Если значение val1 следует поместить после значения val2 в желаемом порядке сортировки, то функция должна возвращать логическое значение `true`, чтобы обозначить замену. В противном случае она должна вернуть `false`."
},
"$reverse": {
"args":"array",
"desc":"Возвращает массив, содержащий все значения из параметра `array`, но в обратном порядке."
"args": "array",
"desc": "Возвращает массив, содержащий все значения из параметра `array`, но в обратном порядке."
},
"$shuffle": {
"args":"array",
"desc":"Возвращает массив, содержащий все значения из параметра `array`, но перемешанный в случайном порядке."
"args": "array",
"desc": "Возвращает массив, содержащий все значения из параметра `array`, но перемешанный в случайном порядке."
},
"$zip": {
"args":"array, ...",
"desc":"Возвращает свернутый (сжатый) массив, содержащий сгруппированные массивы значений из аргументов `array1` … `arrayN` по индексам 0, 1, 2...."
"args": "array, ...",
"desc": "Возвращает свернутый (сжатый) массив, содержащий сгруппированные массивы значений из аргументов `array1` … `arrayN` по индексам 0, 1, 2...."
},
"$keys": {
"args": "object",
@ -168,24 +168,24 @@
"desc": "Объединяет массив объектов в один объект, содержащий все пары ключ / значение каждого из объектов входного массива. Если какой-либо из входных объектов содержит один и тот же ключ, возвращаемый объект будет содержать значение последнего в массиве. Вызывает ошибку, если входной массив содержит элемент, который не является объектом."
},
"$sift": {
"args":"object, function",
"desc":"Возвращает объект, который содержит только пары ключ / значение из параметра `object`, которые удовлетворяют предикату `function`, переданному в качестве второго параметра.\n\n`function`, которая передается в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, key [, object]])`"
"args": "object, function",
"desc": "Возвращает объект, который содержит только пары ключ / значение из параметра `object`, которые удовлетворяют предикату `function`, переданному в качестве второго параметра.\n\n`function`, которая передается в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, key [, object]])`"
},
"$each": {
"args":"object, function",
"desc":"Возвращает массив, который содержит значения, возвращаемые функцией `function` при применении к каждой паре ключ/значение из объекта `object`."
"args": "object, function",
"desc": "Возвращает массив, который содержит значения, возвращаемые функцией `function` при применении к каждой паре ключ/значение из объекта `object`."
},
"$map": {
"args":"array, function",
"desc":"Возвращает массив, содержащий результаты применения функции `function` к каждому значению массива `array`.\n\nФункция `function`, указанная в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, index [, array]])`"
"args": "array, function",
"desc": "Возвращает массив, содержащий результаты применения функции `function` к каждому значению массива `array`.\n\nФункция `function`, указанная в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, index [, array]])`"
},
"$filter": {
"args":"array, function",
"desc":"Возвращает массив, содержащий только те значения из массива `array`, которые удовлетворяют предикату `function`.\n\nФункция `function`, указанная в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, index [, array]])`"
"args": "array, function",
"desc": "Возвращает массив, содержащий только те значения из массива `array`, которые удовлетворяют предикату `function`.\n\nФункция `function`, указанная в качестве второго параметра, должна иметь следующую сигнатуру:\n\n`function(value [, index [, array]])`"
},
"$reduce": {
"args":"array, function [, init]",
"desc":"Возвращает агрегированное значение, полученное в результате последовательного применения функции `function` к каждому значению в массиве в сочетании с результатом от предыдущего применения функции.\n\nФункция должна принимать два аргумента и вести себя как инфиксный оператор между каждым значением в массиве `array`. Сигнатура `function` должна иметь форму: `myfunc($accumulator, $value[, $index[, $array]])`\n\nНеобязательный параметр `init` используется в качестве начального значения в агрегации."
"args": "array, function [, init]",
"desc": "Возвращает агрегированное значение, полученное в результате последовательного применения функции `function` к каждому значению в массиве в сочетании с результатом от предыдущего применения функции.\n\nФункция должна принимать два аргумента и вести себя как инфиксный оператор между каждым значением в массиве `array`. Сигнатура `function` должна иметь форму: `myfunc($accumulator, $value[, $index[, $array]])`\n\nНеобязательный параметр `init` используется в качестве начального значения в агрегации."
},
"$flowContext": {
"args": "string[, string]",
@ -237,7 +237,7 @@
},
"$assert": {
"args": "arg, str",
"desc": "Если значение `arg` равно true, функция возвращает значение undefined. Если значение `arg` равно false, генерируется исключение с `str` в качестве сообщения об исключении."
"desc": "Если значение `arg` равно `true`, функция возвращает значение undefined. Если значение `arg` равно `false`, генерируется исключение с `str` в качестве сообщения об исключении."
},
"$single": {
"args": "array, function",
@ -257,7 +257,7 @@
},
"$decodeUrl": {
"args": "str",
"desc": "Декодирует компонент Uniform Resource Locator (URL), ранее созданный с помощью encodeUrl. \n\nПример: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "Декодирует компонент Uniform Resource Locator (URL), ранее созданный с помощью encodeUrl.\n\nПример: `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",

View File

@ -1199,11 +1199,8 @@
"validator": {
"errors": {
"invalid-json": "无效的 JSON 数据: __error__",
"invalid-json-prop": "__prop__: 无效的 JSON 数据: __error__",
"invalid-prop": "无效的属性表达式",
"invalid-prop-prop": "__prop__: 无效的属性表达式",
"invalid-num": "无效的数字",
"invalid-num-prop": "__prop__: 无效的数字",
"invalid-regexp": "输入格式无效",
"invalid-regex-prop": "__prop__: 输入格式无效",
"missing-required-prop": "__prop__: 缺少属性值",

View File

@ -117,7 +117,7 @@
},
"$boolean": {
"args": "arg",
"desc": "用下述规则将数据转换成布尔值。:\n\n - 不转换布尔值 `Boolean` 。\n 将空的字符串 `string` 转换为 `false` \n 将不为空的字符串 `string` 转换为 `true` \n 将为0的数字 `number` 转换成 `false` \n 将不为0的数字 `number` 转换成 `true` \n –将 `null` 转换成 `false` \n –将空的数组 `array` 转换成 `false` \n –如果数组 `array` 中含有可以转换成 `true` 的要素则转换成 `true` \n –如果 `array` 中没有可转换成 `true` 的要素则转换成 `false` \n 空的对象 `object` 转换成 `false` \n 非空的对象 `object` 转换成 `true` \n –将函数 `function` 转换成 `false` "
"desc": "用下述规则将数据转换成布尔值。:\n\n - 不转换布尔值 `Boolean` 。\n 将空的字符串 `string` 转换为 `false`\n 将不为空的字符串 `string` 转换为 `true`\n 将为0的数字 `number` 转换成 `false`\n 将不为0的数字 `number` 转换成 `true`\n –将 `null` 转换成 `false`\n –将空的数组 `array` 转换成 `false`\n –如果数组 `array` 中含有可以转换成 `true` 的要素则转换成 `true`\n –如果 `array` 中没有可转换成 `true` 的要素则转换成 `false`\n 空的对象 `object` 转换成 `false`\n 非空的对象 `object` 转换成 `true`\n –将函数 `function` 转换成 `false`"
},
"$not": {
"args": "arg",
@ -137,7 +137,7 @@
},
"$sort": {
"args": "array [, function]",
"desc": "输出排序后的数组 `array` 。\n\n如果使用了比较函数 `function` ,则下述两个参数需要被指定。\n\n `function(left, right)` \n\n该比较函数是为了比较left和right两个值而被排序算法调用的。如果用户希望left的值被置于right的值之后那么该函数必须输出布尔值 `true` 来表示位置交换。而在不需要位置交换时函数必须输出 `false` 。"
"desc": "输出排序后的数组 `array` 。\n\n如果使用了比较函数 `function` ,则下述两个参数需要被指定。\n\n `function(left, right)`\n\n该比较函数是为了比较`left``right`两个值而被排序算法调用的。如果用户希望`left`的值被置于`right`的值之后,那么该函数必须输出布尔值 `true` 来表示位置交换。而在不需要位置交换时函数必须输出 `false` 。"
},
"$reverse": {
"args": "array",
@ -169,7 +169,7 @@
},
"$sift": {
"args": "object, function",
"desc": "输出参数 `object` 中符合 `function` 的键值对。\n\n `function` 必须含有下述参数。\n\n `function(value [, key [, object]])` "
"desc": "输出参数 `object` 中符合 `function` 的键值对。\n\n `function` 必须含有下述参数。\n\n `function(value [, key [, object]])`"
},
"$each": {
"args": "object, function",
@ -177,7 +177,7 @@
},
"$map": {
"args": "array, function",
"desc": "将函数 `function` 应用于数组 `array` 中所有的值并输出由返回值组成的数组。\n\n `function` 中必须含有下述参数。\n\n`function(value [, index [, array]])` "
"desc": "将函数 `function` 应用于数组 `array` 中所有的值并输出由返回值组成的数组。\n\n `function` 中必须含有下述参数。\n\n`function(value [, index [, array]])`"
},
"$filter": {
"args": "array, function",
@ -237,7 +237,7 @@
},
"$assert": {
"args": "arg, str",
"desc": "如果 `arg` 为真,则该函数返回。 如果arg为假则抛出带有str的异常作为异常消息。"
"desc": "如果 `arg` 为真,则该函数返回。 如果`arg`为假,则抛出带有`str`的异常作为异常消息。"
},
"$single": {
"args": "array, function",
@ -253,11 +253,11 @@
},
"$decodeUrlComponent": {
"args": "str",
"desc": "解码以前由encodeUrlComponent创建的统一资源定位器URL组件。 \n\n示例 `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
"desc": "解码以前由encodeUrlComponent创建的统一资源定位器URL组件。\n\n示例 `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
},
"$decodeUrl": {
"args": "str",
"desc": "解码先前由encodeUrl创建的统一资源定位符URL \n\n示例 `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "解码先前由encodeUrl创建的统一资源定位符URL\n\n示例 `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",
@ -265,7 +265,7 @@
},
"$type": {
"args": "value",
"desc": "以字符串形式返回 `值` 的类型。 如果该 `值` 未定义,则将返回 `未定义` "
"desc": "以字符串形式返回 `值` 的类型。 如果该 `值` 未定义,则将返回 `未定义`"
},
"$moment": {
"args": "[str]",

View File

@ -137,7 +137,7 @@
},
"$sort": {
"args": "array [, function]",
"desc": "輸出排序後的陣列`array`。\n\n如果使用了比較函數`function`,則下述兩個參數需要被指定。\n\n`function(left, right)`\n\n該比較函數是為了比較left和right兩個值而被排序演算法調用的。如果使用者希望left的值被置於right的值之後那麼該函數必須輸出布林值`true`來表示位置交換。而在不需要位置交換時函數必須輸出`false`。"
"desc": "輸出排序後的陣列`array`。\n\n如果使用了比較函數`function`,則下述兩個參數需要被指定。\n\n`function(left, right)`\n\n該比較函數是為了比較`left``right`兩個值而被排序演算法調用的。如果使用者希望left的值被置於`right`的值之後,那麼該函數必須輸出布林值`true`來表示位置交換。而在不需要位置交換時函數必須輸出`false`。"
},
"$reverse": {
"args": "array",
@ -237,7 +237,7 @@
},
"$assert": {
"args": "arg, str",
"desc": "如果`arg`為真,則該函數返回。 如果arg為假則拋出帶有str的異常作為異常消息。"
"desc": "如果`arg`為真,則該函數返回。 如果`arg`為假,則拋出帶有`str`的異常作為異常消息。"
},
"$single": {
"args": "array, function",
@ -253,11 +253,11 @@
},
"$decodeUrlComponent": {
"args": "str",
"desc": "解碼以前由encodeUrlComponent創建的統一資源定位器URL組件。 \n\n示例 `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
"desc": "解碼以前由encodeUrlComponent創建的統一資源定位器URL組件。\n\n示例 `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
},
"$decodeUrl": {
"args": "str",
"desc": "解碼先前由encodeUrl創建的統一資源定位符URL \n\n示例 `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
"desc": "解碼先前由encodeUrl創建的統一資源定位符URL\n\n示例 `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
},
"$distinct": {
"args": "array",

View File

@ -1,6 +1,6 @@
{
"name": "@node-red/editor-client",
"version": "3.1.0-beta.2",
"version": "3.1.0",
"license": "Apache-2.0",
"repository": {
"type": "git",

View File

@ -797,8 +797,8 @@ RED.nodes = (function() {
if (node && node._def.onremove) {
// Deprecated: never documented but used by some early nodes
console.log("Deprecated API warning: node type ",node.type," has an onremove function - should be oneditremove - please report");
node._def.onremove.call(n);
console.log("Deprecated API warning: node type ",node.type," has an onremove function - should be oneditdelete - please report");
node._def.onremove.call(node);
}
return {links:removedLinks,nodes:removedNodes};
}
@ -1468,7 +1468,7 @@ RED.nodes = (function() {
}
}
if (node.type !== "subflow") {
var convertedNode = RED.nodes.convertNode(node);
var convertedNode = RED.nodes.convertNode(node, { credentials: false });
for (var d in node._def.defaults) {
if (node._def.defaults[d].type) {
var nodeList = node[d];
@ -1501,7 +1501,7 @@ RED.nodes = (function() {
nns = nns.concat(createExportableNodeSet(node.nodes, exportedIds, exportedSubflows, exportedConfigNodes));
}
} else {
var convertedSubflow = convertSubflow(node);
var convertedSubflow = convertSubflow(node, { credentials: false });
nns.push(convertedSubflow);
}
}
@ -2201,16 +2201,27 @@ RED.nodes = (function() {
} else if (n.type.substring(0,7) === "subflow") {
var parentId = n.type.split(":")[1];
var subflow = subflow_denylist[parentId]||subflow_map[parentId]||getSubflow(parentId);
if (createNewIds || options.importMap[n.id] === "copy") {
parentId = subflow.id;
node.type = "subflow:"+parentId;
node._def = registry.getNodeType(node.type);
delete node.i;
if (!subflow){
node._def = {
color:"#fee",
defaults: {},
label: "unknown: "+n.type,
labelStyle: "red-ui-flow-node-label-italic",
outputs: n.outputs|| (n.wires && n.wires.length) || 0,
set: registry.getNodeSet("node-red/unknown")
}
} else {
if (createNewIds || options.importMap[n.id] === "copy") {
parentId = subflow.id;
node.type = "subflow:"+parentId;
node._def = registry.getNodeType(node.type);
delete node.i;
}
node.name = n.name;
node.outputs = subflow.out.length;
node.inputs = subflow.in.length;
node.env = n.env;
}
node.name = n.name;
node.outputs = subflow.out.length;
node.inputs = subflow.in.length;
node.env = n.env;
} else if (n.type === 'junction') {
node._def = {defaults:{}}
node._config.x = node.x

View File

@ -263,6 +263,7 @@ var RED = (function() {
setTimeout(() => {
RED.view.reveal(nodeToShow.id)
window.location.hash = currentHash
RED.view.select(nodeToShow.id)
if (showEditDialog) {
RED.editor.edit(nodeToShow)
}
@ -273,6 +274,7 @@ var RED = (function() {
if (nodeToShow) {
RED.view.reveal(nodeToShow.id)
window.location.hash = currentHash
RED.view.select(nodeToShow.id)
if (showEditDialog) {
RED.editor.editGroup(nodeToShow)
}
@ -729,7 +731,7 @@ var RED = (function() {
}
menuOptions.push({id:"menu-item-help",
label: RED.settings.theme("menu.menu-item-help.label",RED._("menu.label.help")),
href: RED.settings.theme("menu.menu-item-help.url","http://nodered.org/docs")
href: RED.settings.theme("menu.menu-item-help.url","https://nodered.org/docs")
});
menuOptions.push({id:"menu-item-node-red-version", label:"v"+RED.settings.version, onselect: "core:show-about" });

View File

@ -33,8 +33,8 @@ RED.settings = (function () {
if (!hasLocalStorage()) {
return;
}
if (key === "auth-tokens") {
localStorage.setItem(key, JSON.stringify(value));
if (key.startsWith("auth-tokens")) {
localStorage.setItem(key+this.authTokensSuffix, JSON.stringify(value));
} else {
RED.utils.setMessageProperty(userSettings,key,value);
saveUserSettings();
@ -52,8 +52,8 @@ RED.settings = (function () {
if (!hasLocalStorage()) {
return undefined;
}
if (key === "auth-tokens") {
return JSON.parse(localStorage.getItem(key));
if (key.startsWith("auth-tokens")) {
return JSON.parse(localStorage.getItem(key+this.authTokensSuffix));
} else {
var v;
try { v = RED.utils.getMessageProperty(userSettings,key); } catch(err) {}
@ -71,8 +71,8 @@ RED.settings = (function () {
if (!hasLocalStorage()) {
return;
}
if (key === "auth-tokens") {
localStorage.removeItem(key);
if (key.startsWith("auth-tokens")) {
localStorage.removeItem(key+this.authTokensSuffix);
} else {
delete userSettings[key];
saveUserSettings();
@ -99,6 +99,8 @@ RED.settings = (function () {
var init = function (options, done) {
var accessTokenMatch = /[?&]access_token=(.*?)(?:$|&)/.exec(window.location.search);
var path=window.location.pathname.slice(0,-1);
RED.settings.authTokensSuffix=path.replace(/\//g, '-');
if (accessTokenMatch) {
var accessToken = accessTokenMatch[1];
RED.settings.set("auth-tokens",{access_token: accessToken});

View File

@ -47,7 +47,7 @@ RED.actionList = (function() {
var searchDiv = $("<div>",{class:"red-ui-search-container"}).appendTo(dialog);
searchInput = $('<input type="text" data-i18n="[placeholder]keyboard.filterActions">').appendTo(searchDiv).searchBox({
change: function() {
filterTerm = $(this).val().trim();
filterTerm = $(this).val().trim().toLowerCase();
filterTerms = filterTerm.split(" ");
searchResults.editableList('filter');
searchResults.find("li.selected").removeClass("selected");

View File

@ -37,13 +37,13 @@ RED.clipboard = (function() {
// IE11 workaround
// IE does not support data uri scheme for downloading data
var blob = new Blob([data], {
type: "data:text/plain;charset=utf-8"
type: "data:application/json;charset=utf-8"
});
navigator.msSaveBlob(blob, file);
}
else {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(data));
element.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(data));
element.setAttribute('download', file);
element.style.display = 'none';
document.body.appendChild(element);
@ -731,7 +731,7 @@ RED.clipboard = (function() {
nodes.unshift(parentNode);
nodes = RED.nodes.createExportableNodeSet(nodes);
} else if (type === 'full') {
nodes = RED.nodes.createCompleteNodeSet(false);
nodes = RED.nodes.createCompleteNodeSet({ credentials: false });
}
if (nodes !== null) {
if (format === "red-ui-clipboard-dialog-export-fmt-full") {

View File

@ -168,8 +168,8 @@ RED.contextMenu = (function () {
menuItems.push(
null,
{ onselect: 'core:undo', disabled: RED.history.list().length === 0 },
{ onselect: 'core:redo', disabled: RED.history.listRedo().length === 0 },
{ onselect: 'core:undo', label: RED._("keyboard.undoChange"), disabled: RED.history.list().length === 0 },
{ onselect: 'core:redo', label: RED._("keyboard.redoChange"), disabled: RED.history.listRedo().length === 0 },
null,
{ onselect: 'core:cut-selection-to-internal-clipboard', label: RED._("keyboard.cutNode"), disabled: !canEdit || !hasSelection },
{ onselect: 'core:copy-selection-to-internal-clipboard', label: RED._("keyboard.copyNode"), disabled: !hasSelection },
@ -177,7 +177,7 @@ RED.contextMenu = (function () {
{ onselect: 'core:delete-selection', disabled: !canEdit || !canDelete },
{ onselect: 'core:delete-selection-and-reconnect', label: RED._('keyboard.deleteReconnect'), disabled: !canEdit || !canDelete },
{ onselect: 'core:show-export-dialog', label: RED._("menu.label.export") },
{ onselect: 'core:select-all-nodes' },
{ onselect: 'core:select-all-nodes', label: RED._("keyboard.selectAll") },
)
}

View File

@ -989,9 +989,10 @@ RED.diff = (function() {
}
if (localNode && remoteNode && typeof localNode[d] === "string") {
if (/\n/.test(localNode[d]) || /\n/.test(remoteNode[d])) {
$('<button class="red-ui-button red-ui-button-small red-ui-diff-text-diff-button"><i class="fa fa-file-o"> <i class="fa fa-caret-left"></i> <i class="fa fa-caret-right"></i> <i class="fa fa-file-o"></i></button>').on("click", function() {
var textDiff = $('<button class="red-ui-button red-ui-button-small red-ui-diff-text-diff-button"><i class="fa fa-file-o"> <i class="fa fa-caret-left"></i> <i class="fa fa-caret-right"></i> <i class="fa fa-file-o"></i></button>').on("click", function() {
showTextDiff(localNode[d],remoteNode[d]);
}).appendTo(propertyNameCell);
RED.popover.tooltip(textDiff, RED._("diff.compareChanges"));
}
}

View File

@ -45,11 +45,13 @@ RED.editor = (function() {
var hasChanged;
if (node.type.indexOf("subflow:")===0) {
subflow = RED.nodes.subflow(node.type.substring(8));
isValid = subflow.valid;
hasChanged = subflow.changed;
if (isValid === undefined) {
isValid = validateNode(subflow);
if (subflow){
isValid = subflow.valid;
hasChanged = subflow.changed;
if (isValid === undefined) {
isValid = validateNode(subflow);
hasChanged = subflow.changed;
}
}
validationErrors = validateNodeProperties(node, node._def.defaults, node);
node.valid = isValid && validationErrors.length === 0;
@ -113,8 +115,9 @@ RED.editor = (function() {
var valid = validateNodeProperty(node, definition, prop, properties[prop]);
if ((typeof valid) === "string") {
result.push(valid);
}
else if(!valid) {
} else if (Array.isArray(valid)) {
result = result.concat(valid)
} else if(!valid) {
result.push(prop);
}
}
@ -163,7 +166,7 @@ RED.editor = (function() {
// If the validator takes two arguments, it is a 3.x validator that
// can return a String to mean 'invalid' and provide a reason
if ((definition[property].validate.length === 2) &&
((typeof valid) === "string")) {
((typeof valid) === "string") || Array.isArray(valid)) {
return valid;
} else {
// Otherwise, a 2.x returns a truth-like/false-like value that
@ -718,7 +721,10 @@ RED.editor = (function() {
if (typeof editing_node[d] === "string" || typeof editing_node[d] === "number") {
oldValues[d] = editing_node[d];
} else {
oldValues[d] = $.extend(true,{},{v:editing_node[d]}).v;
// Dont clone the group node `nodes` array
if (editing_node.type !== 'group' || d !== "nodes") {
oldValues[d] = $.extend(true,{},{v:editing_node[d]}).v;
}
}
}
}

View File

@ -108,7 +108,7 @@ RED.editor.codeEditor.monaco = (function() {
"node-red-util": {package: "node-red", module: "util", path: "node-red/util.d.ts" },
"node-red-func": {package: "node-red", module: "func", path: "node-red/func.d.ts" },
}
const defaultServerSideTypes = [ knownModules["node-red-util"], knownModules["node-red-func"], knownModules["globals"], knownModules["console"], knownModules["buffer"] , knownModules["util"] ];
const defaultServerSideTypes = [ knownModules["node-red-util"], knownModules["node-red-func"], knownModules["globals"], knownModules["console"], knownModules["buffer"], knownModules["timers"] , knownModules["util"] ];
const modulesCache = {};
@ -1168,19 +1168,19 @@ RED.editor.codeEditor.monaco = (function() {
// Warning: 4
// Error: 8
ed.getAnnotations = function getAnnotations() {
var aceCompatibleMarkers = [];
let aceCompatibleMarkers;
try {
var _model = ed.getModel();
const _model = ed.getModel();
if (_model !== null) {
var id = _model._languageId; // e.g. javascript
var ra = _model._associatedResource.authority; //e.g. model
var rp = _model._associatedResource.path; //e.g. /18
var rs = _model._associatedResource.scheme; //e.g. inmemory
var modelMarkers = monaco.editor.getModelMarkers(_model) || [];
var thisEditorsMarkers = modelMarkers.filter(function (marker) {
var _ra = marker.resource.authority; //e.g. model
var _rp = marker.resource.path; //e.g. /18
var _rs = marker.resource.scheme; //e.g. inmemory
const id = _model.getLanguageId(); // e.g. javascript
const ra = _model.uri.authority; // e.g. model
const rp = _model.uri.path; // e.g. /18
const rs = _model.uri.scheme; // e.g. inmemory
const modelMarkers = monaco.editor.getModelMarkers(_model) || [];
const thisEditorsMarkers = modelMarkers.filter(function (marker) {
const _ra = marker.resource.authority; // e.g. model
const _rp = marker.resource.path; // e.g. /18
const _rs = marker.resource.scheme; // e.g. inmemory
return marker.owner == id && _ra === ra && _rp === rp && _rs === rs;
})
aceCompatibleMarkers = thisEditorsMarkers.map(function (marker) {

View File

@ -294,7 +294,7 @@
}
try {
expr.evaluate(legacyMode?{msg:parsedData}:parsedData, (err, result) => {
expr.evaluate(legacyMode?{msg:parsedData}:parsedData, null, (err, result) => {
if (err) {
testResultEditor.setValue(RED._("expressionEditor.errors.eval",{message:err.message}),-1);
} else {

View File

@ -169,7 +169,7 @@
var currentScrollTop = $(".red-ui-editor-type-markdown-panel-preview").scrollTop();
$(".red-ui-editor-type-markdown-panel-preview").html(RED.utils.renderMarkdown(expressionEditor.getValue()));
$(".red-ui-editor-type-markdown-panel-preview").scrollTop(currentScrollTop);
mermaid.init();
RED.editor.mermaid.render()
},200);
})
if (options.header) {
@ -178,7 +178,7 @@
if (value) {
$(".red-ui-editor-type-markdown-panel-preview").html(RED.utils.renderMarkdown(expressionEditor.getValue()));
mermaid.init();
RED.editor.mermaid.render()
}
panels = RED.panels.create({
id:"red-ui-editor-type-markdown-panels",

View File

@ -0,0 +1,53 @@
RED.editor.mermaid = (function () {
let initializing = false
let loaded = false
let pendingEvals = []
let diagramIds = 0
function render(selector = '.mermaid') {
// $(selector).hide()
if (!loaded) {
pendingEvals.push(selector)
if (!initializing) {
initializing = true
$.getScript(
'vendor/mermaid/mermaid.min.js',
function (data, stat, jqxhr) {
mermaid.initialize({
startOnLoad: false
})
loaded = true
while(pendingEvals.length > 0) {
const pending = pendingEvals.shift()
render(pending)
}
}
)
}
} else {
const nodes = document.querySelectorAll(selector)
nodes.forEach(async node => {
if (!node.getAttribute('mermaid-processed')) {
const mermaidContent = node.innerText
node.setAttribute('mermaid-processed', true)
try {
const { svg } = await mermaid.render('mermaid-render-'+Date.now()+'-'+(diagramIds++), mermaidContent);
node.innerHTML = svg
} catch (err) {
$('<div>').css({
fontSize: '0.8em',
border: '1px solid var(--red-ui-border-color-error)',
padding: '5px',
marginBottom: '10px',
}).text(err.toString()).prependTo(node)
}
}
})
}
}
return {
render: render,
};
})();

View File

@ -196,7 +196,7 @@
}
$('<div class="form-row">'+
'<label for="node-input-show-label-btn" data-i18n="editor.label"></label>'+
'<label for="node-input-show-label" data-i18n="editor.label"></label>'+
'<span style="margin-right: 2px;"/>'+
'<input type="checkbox" id="node-input-show-label"/>'+
'</div>').appendTo(dialogForm);

View File

@ -50,7 +50,11 @@ RED.envVar = (function() {
var new_env = [];
var items = list.editableList('items');
var credentials = gconf ? gconf.credentials : null;
if (!gconf && list.editableList('length') === 0) {
// No existing global-config node and nothing in the list,
// so no need to do anything more
return
}
if (!credentials) {
credentials = {
_ : {},
@ -78,6 +82,12 @@ RED.envVar = (function() {
if (gconf === null) {
gconf = getGlobalConf(true);
}
if (!gconf.credentials) {
gconf.credentials = {
_ : {},
map: {}
};
}
if ((JSON.stringify(new_env) !== JSON.stringify(gconf.env)) ||
(JSON.stringify(credentials) !== JSON.stringify(gconf.credentials))) {
gconf.env = new_env;

View File

@ -401,7 +401,7 @@ RED.group = (function() {
}
}
var existingGroup;
var mergedEnv = {}
// Second pass, ungroup any groups in the selection and add their contents
// to the selection
for (var i=0; i<selection.nodes.length; i++) {
@ -410,6 +410,11 @@ RED.group = (function() {
if (!existingGroup) {
existingGroup = n;
}
if (n.env && n.env.length > 0) {
n.env.forEach(env => {
mergedEnv[env.name] = env
})
}
ungroupHistoryEvent.groups.push(n);
nodes = nodes.concat(ungroup(n));
} else {
@ -427,6 +432,7 @@ RED.group = (function() {
group.style = existingGroup.style;
group.name = existingGroup.name;
}
group.env = Object.values(mergedEnv)
RED.view.select({nodes:[group]})
}
historyEvent.events.push({

View File

@ -249,7 +249,10 @@ RED.keyboard = (function() {
// One exception is shortcuts that include both Cmd and Ctrl. We don't
// support them - but we need to make sure we don't block browser-specific
// shortcuts (such as Cmd-Ctrl-F for fullscreen).
if ((evt.ctrlKey || evt.metaKey) && (evt.ctrlKey !== evt.metaKey)) {
if (evt.ctrlKey && evt.metaKey) {
return null; // dont handle both cmd+ctrl - let browser handle this
}
if (evt.ctrlKey || evt.metaKey) {
slot = slot.ctrl;
}
if (slot && evt.shiftKey) {
@ -491,7 +494,11 @@ RED.keyboard = (function() {
okButton.attr("disabled",!valid);
});
var scopeSelect = $('<select><option value="*" data-i18n="keyboard.global"></option><option value="red-ui-workspace" data-i18n="keyboard.workspace"></option></select>').appendTo(scope);
var scopeSelect = $('<select>'+
'<option value="*" data-i18n="keyboard.global"></option>'+
'<option value="red-ui-workspace" data-i18n="keyboard.workspace"></option>'+
'<option value="red-ui-editor-stack" data-i18n="keyboard.editor"></option>'+
'</select>').appendTo(scope);
scopeSelect.i18n();
if (object.scope === "workspace") {
object.scope = "red-ui-workspace";

View File

@ -1,46 +0,0 @@
// Mermaid diagram stub library for on-demand dynamic loading
// Will be overwritten after script loading by $.getScript
var mermaid = (function () {
var enabled /* = undefined */;
var initializing = false;
var initCalled = false;
function initialize(opt) {
if (enabled === undefined) {
if (RED.settings.markdownEditor &&
RED.settings.markdownEditor.mermaid) {
enabled = RED.settings.markdownEditor.mermaid.enabled;
}
else {
enabled = true;
}
}
if (enabled) {
initializing = true;
$.getScript("vendor/mermaid/mermaid.min.js",
function (data, stat, jqxhr) {
$(".mermaid").show();
// invoke loaded mermaid API
initializing = false;
mermaid.initialize(opt);
if (initCalled) {
mermaid.init();
initCalled = false;
}
});
}
}
function init() {
if (initializing) {
$(".mermaid").hide();
initCalled = true;
}
}
return {
initialize: initialize,
init: init,
};
})();

View File

@ -16,15 +16,17 @@
RED.palette.editor = (function() {
var disabled = false;
let catalogues = []
const loadedCatalogs = []
var editorTabs;
var filterInput;
var searchInput;
var nodeList;
var packageList;
var loadedList = [];
var filteredList = [];
var loadedIndex = {};
let filterInput;
let searchInput;
let nodeList;
let packageList;
let fullList = []
let loadedList = [];
let filteredList = [];
let loadedIndex = {};
var typesInUse = {};
var nodeEntries = {};
@ -162,7 +164,6 @@ RED.palette.editor = (function() {
}
}
function getContrastingBorder(rgbColor){
var parts = /^rgba?\(\s*(\d+),\s*(\d+),\s*(\d+)[,)]/.exec(rgbColor);
if (parts) {
@ -369,10 +370,10 @@ RED.palette.editor = (function() {
var activeSort = sortModulesRelevance;
function handleCatalogResponse(err,catalog,index,v) {
const url = catalog.url
catalogueLoadStatus.push(err||v);
if (!err) {
if (v.modules) {
var a = false;
v.modules = v.modules.filter(function(m) {
if (RED.utils.checkModuleAllowed(m.id,m.version,installAllowList,installDenyList)) {
loadedIndex[m.id] = m;
@ -389,13 +390,14 @@ RED.palette.editor = (function() {
m.timestamp = 0;
}
m.index = m.index.join(",").toLowerCase();
m.catalog = catalog;
m.catalogIndex = index;
return true;
}
return false;
})
loadedList = loadedList.concat(v.modules);
}
searchInput.searchBox('count',loadedList.length);
} else {
catalogueLoadErrors = true;
}
@ -404,7 +406,7 @@ RED.palette.editor = (function() {
}
if (catalogueLoadStatus.length === catalogueCount) {
if (catalogueLoadErrors) {
RED.notify(RED._('palette.editor.errors.catalogLoadFailed',{url: catalog}),"error",false,8000);
RED.notify(RED._('palette.editor.errors.catalogLoadFailed',{url: url}),"error",false,8000);
}
var delta = 250-(Date.now() - catalogueLoadStart);
setTimeout(function() {
@ -416,12 +418,13 @@ RED.palette.editor = (function() {
function initInstallTab() {
if (loadedList.length === 0) {
fullList = [];
loadedList = [];
loadedIndex = {};
packageList.editableList('empty');
$(".red-ui-palette-module-shade-status").text(RED._('palette.editor.loading'));
var catalogues = RED.settings.theme('palette.catalogues')||['https://catalogue.nodered.org/catalogue.json'];
catalogueLoadStatus = [];
catalogueLoadErrors = false;
catalogueCount = catalogues.length;
@ -431,27 +434,97 @@ RED.palette.editor = (function() {
$("#red-ui-palette-module-install-shade").show();
catalogueLoadStart = Date.now();
var handled = 0;
catalogues.forEach(function(catalog,index) {
$.getJSON(catalog, {_: new Date().getTime()},function(v) {
handleCatalogResponse(null,catalog,index,v);
loadedCatalogs.length = 0; // clear the loadedCatalogs array
for (let index = 0; index < catalogues.length; index++) {
const url = catalogues[index];
$.getJSON(url, {_: new Date().getTime()},function(v) {
loadedCatalogs.push({ index: index, url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length })
handleCatalogResponse(null,{ url: url, name: v.name},index,v);
refreshNodeModuleList();
}).fail(function(jqxhr, textStatus, error) {
console.warn("Error loading catalog",catalog,":",error);
handleCatalogResponse(jqxhr,catalog,index);
console.warn("Error loading catalog",url,":",error);
handleCatalogResponse(jqxhr,url,index);
}).always(function() {
handled++;
if (handled === catalogueCount) {
searchInput.searchBox('change');
//sort loadedCatalogs by e.index ascending
loadedCatalogs.sort((a, b) => a.index - b.index)
updateCatalogFilter(loadedCatalogs)
}
})
});
}
}
}
/**
* Refreshes the catalog filter dropdown and updates local variables
* @param {[{url:String, name:String, updated_at:String, modules_count:Number}]} catalogEntries
*/
function updateCatalogFilter(catalogEntries, maxRetry = 3) {
// clean up existing filters
const catalogSelection = $('#red-catalogue-filter-select')
if (catalogSelection.length === 0) {
// sidebar not yet loaded (red-catalogue-filter-select is not in dom)
if (maxRetry > 0) {
// console.log("updateCatalogFilter: sidebar not yet loaded, retrying in 100ms")
// try again in 100ms
setTimeout(() => {
updateCatalogFilter(catalogEntries, maxRetry - 1)
}, 100);
return;
}
return; // give up
}
catalogSelection.off("change") // remove any existing event handlers
catalogSelection.attr('disabled', 'disabled')
catalogSelection.empty()
catalogSelection.append($('<option>', { value: "loading", text: RED._('palette.editor.loading'), disabled: true, selected: true }));
fullList = loadedList.slice()
catalogSelection.empty() // clear the select list
// loop through catalogTypes, and an option entry per catalog
for (let index = 0; index < catalogEntries.length; index++) {
const catalog = catalogEntries[index];
catalogSelection.append(`<option value="${catalog.name}">${catalog.name}</option>`)
}
// select the 1st option in the select list
catalogSelection.val(catalogSelection.find('option:first').val())
// if there is only 1 catalog, hide the select
if (catalogEntries.length > 1) {
catalogSelection.prepend(`<option value="all">${RED._('palette.editor.allCatalogs')}</option>`)
catalogSelection.val('all')
catalogSelection.removeAttr('disabled') // permit the user to select a catalog
}
// refresh the searchInput counter and trigger a change
filterByCatalog(catalogSelection.val())
searchInput.searchBox('change');
// hook up the change event handler
catalogSelection.on("change", function() {
const selectedCatalog = $(this).val();
filterByCatalog(selectedCatalog);
searchInput.searchBox('change');
})
}
function filterByCatalog(selectedCatalog) {
if (loadedCatalogs.length <= 1 || selectedCatalog === "all") {
loadedList = fullList.slice();
} else {
loadedList = fullList.filter(function(m) {
return (m.catalog.name === selectedCatalog);
})
}
refreshFilteredItems();
searchInput.searchBox('count',filteredList.length+" / "+loadedList.length);
}
function refreshFilteredItems() {
packageList.editableList('empty');
var currentFilter = searchInput.searchBox('value').trim();
if (currentFilter === ""){
if (currentFilter === "" && loadedList.length > 20){
packageList.editableList('addItem',{count:loadedList.length})
return;
}
@ -462,7 +535,6 @@ RED.palette.editor = (function() {
if (filteredList.length === 0) {
packageList.editableList('addItem',{});
}
if (filteredList.length > 10) {
packageList.editableList('addItem',{start:10,more:filteredList.length-10})
}
@ -492,6 +564,7 @@ RED.palette.editor = (function() {
var updateDenyList = [];
function init() {
catalogues = RED.settings.theme('palette.catalogues')||['https://catalogue.nodered.org/catalogue.json']
if (RED.settings.get('externalModules.palette.allowInstall', true) === false) {
return;
}
@ -669,7 +742,8 @@ RED.palette.editor = (function() {
});
nodeList = $('<ol>',{id:"red-ui-palette-module-list", style:"position: absolute;top: 35px;bottom: 0;left: 0;right: 0px;"}).appendTo(modulesTab).editableList({
nodeList = $('<ol>',{id:"red-ui-palette-module-list"}).appendTo(modulesTab).editableList({
class: "scrollable",
addButton: false,
scrollOnAdd: false,
sort: function(A,B) {
@ -800,28 +874,27 @@ RED.palette.editor = (function() {
$('<div>',{class:"red-ui-search-empty"}).text(RED._('search.empty')).appendTo(container);
}
}
});
})
}
function createInstallTab(content) {
var installTab = $('<div>',{class:"red-ui-palette-editor-tab hide"}).appendTo(content);
const installTab = $('<div>',{class:"red-ui-palette-editor-tab", style: "display: none;"}).appendTo(content);
editorTabs.addTab({
id: 'install',
label: RED._('palette.editor.tab-install'),
content: installTab
})
var toolBar = $('<div>',{class:"red-ui-palette-editor-toolbar"}).appendTo(installTab);
var searchDiv = $('<div>',{class:"red-ui-palette-search"}).appendTo(installTab);
const toolBar = $('<div>',{class:"red-ui-palette-editor-toolbar"}).appendTo(installTab);
const searchDiv = $('<div>',{class:"red-ui-palette-search"}).appendTo(installTab);
searchInput = $('<input type="text" data-i18n="[placeholder]palette.search"></input>')
.appendTo(searchDiv)
.searchBox({
delay: 300,
change: function() {
var searchTerm = $(this).val().trim().toLowerCase();
if (searchTerm.length > 0) {
if (searchTerm.length > 0 || loadedList.length < 20) {
filteredList = loadedList.filter(function(m) {
return (m.index.indexOf(searchTerm) > -1);
}).map(function(f) { return {info:f}});
@ -831,19 +904,26 @@ RED.palette.editor = (function() {
searchInput.searchBox('count',loadedList.length);
packageList.editableList('empty');
packageList.editableList('addItem',{count:loadedList.length});
}
}
});
$('<span>').text(RED._("palette.editor.sort")+' ').appendTo(toolBar);
var sortGroup = $('<span class="button-group"></span>').appendTo(toolBar);
var sortRelevance = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle selected"><i class="fa fa-sort-amount-desc"></i></a>').appendTo(sortGroup);
var sortAZ = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle" data-i18n="palette.editor.sortAZ"></a>').appendTo(sortGroup);
var sortRecent = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle" data-i18n="palette.editor.sortRecent"></a>').appendTo(sortGroup);
const catalogSelection = $('<select id="red-catalogue-filter-select">').appendTo(toolBar);
catalogSelection.addClass('red-ui-palette-editor-catalogue-filter');
const toolBarActions = $('<div>',{class:"red-ui-palette-editor-toolbar-actions"}).appendTo(toolBar);
$('<span>').text(RED._("palette.editor.sort")+' ').appendTo(toolBarActions);
const sortGroup = $('<span class="button-group"></span>').appendTo(toolBarActions);
const sortRelevance = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle selected"><i class="fa fa-sort-amount-desc"></i></a>').appendTo(sortGroup);
const sortAZ = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle"><i class="fa fa-sort-alpha-asc"></i></a>').appendTo(sortGroup);
const sortRecent = $('<a href="#" class="red-ui-palette-editor-install-sort-option red-ui-sidebar-header-button-toggle"><i class="fa fa-calendar"></i></a>').appendTo(sortGroup);
RED.popover.tooltip(sortRelevance,RED._("palette.editor.sortRelevance"));
RED.popover.tooltip(sortAZ,RED._("palette.editor.sortAZ"));
RED.popover.tooltip(sortRecent,RED._("palette.editor.sortRecent"));
var sortOpts = [
const sortOpts = [
{button: sortRelevance, func: sortModulesRelevance},
{button: sortAZ, func: sortModulesAZ},
{button: sortRecent, func: sortModulesRecent}
@ -861,7 +941,7 @@ RED.palette.editor = (function() {
});
});
var refreshSpan = $('<span>').appendTo(toolBar);
var refreshSpan = $('<span>').appendTo(toolBarActions);
var refreshButton = $('<a href="#" class="red-ui-sidebar-header-button"><i class="fa fa-refresh"></i></a>').appendTo(refreshSpan);
refreshButton.on("click", function(e) {
e.preventDefault();
@ -871,7 +951,8 @@ RED.palette.editor = (function() {
})
RED.popover.tooltip(refreshButton,RED._("palette.editor.refresh"));
packageList = $('<ol>',{style:"position: absolute;top: 79px;bottom: 0;left: 0;right: 0px;"}).appendTo(installTab).editableList({
packageList = $('<ol>').appendTo(installTab).editableList({
class: "scrollable",
addButton: false,
scrollOnAdd: false,
addItem: function(container,i,object) {
@ -906,6 +987,9 @@ RED.palette.editor = (function() {
var metaRow = $('<div class="red-ui-palette-module-meta"></div>').appendTo(headerRow);
$('<span class="red-ui-palette-module-version"><i class="fa fa-tag"></i> '+entry.version+'</span>').appendTo(metaRow);
$('<span class="red-ui-palette-module-updated"><i class="fa fa-calendar"></i> '+formatUpdatedAt(entry.updated_at)+'</span>').appendTo(metaRow);
if (loadedCatalogs.length > 1) {
$('<span class="red-ui-palette-module-updated"><i class="fa fa-cubes"></i>' + (entry.catalog.name || entry.catalog.url) + '</span>').appendTo(metaRow);
}
var duplicateType = false;
if (entry.types && entry.types.length > 0) {
@ -952,9 +1036,10 @@ RED.palette.editor = (function() {
}
}
});
if (RED.settings.get('externalModules.palette.allowUpload', true) !== false) {
var uploadSpan = $('<span class="button-group">').prependTo(toolBar);
var uploadSpan = $('<span class="button-group">').prependTo(toolBarActions);
var uploadButton = $('<button type="button" class="red-ui-sidebar-header-button red-ui-palette-editor-upload-button"><label><i class="fa fa-upload"></i><form id="red-ui-palette-editor-upload-form" enctype="multipart/form-data"><input name="tarball" type="file" accept=".tgz"></label></button>').appendTo(uploadSpan);
var uploadInput = uploadButton.find('input[type="file"]');

View File

@ -171,23 +171,15 @@ RED.palette = (function() {
}
metaData += type;
const safeType = type.replace(/'/g,"\\'");
const searchType = type.indexOf(' ') > -1 ? '&quot;' + type + '&quot;' : type
if (/^subflow:/.test(type)) {
$('<button type="button" onclick="RED.workspaces.show(\''+type.substring(8).replace(/'/g,"\\'")+'\'); return false;" class="red-ui-button red-ui-button-small" style="float: right; margin-left: 5px;"><i class="fa fa-pencil"></i></button>').appendTo(popOverContent)
}
const safeType = type.replace(/'/g,"\\'");
const wrapStr = function (str) {
if(str.indexOf(' ') >= 0) {
return '"' + str + '"'
}
return str
}
$('<button type="button" onclick="RED.search.show(\'type:'+searchType+'\'); return false;" class="red-ui-button red-ui-button-small" style="float: right; margin-left: 5px;"><i class="fa fa-search"></i></button>').appendTo(popOverContent)
$('<button type="button"; return false;" class="red-ui-button red-ui-button-small" style="float: right; margin-left: 5px;"><i class="fa fa-search"></i></button>')
.appendTo(popOverContent)
.on('click', function() {
RED.search.show('type:' + wrapStr(safeType))
})
$('<button type="button" onclick="RED.sidebar.help.show(\''+safeType+'\'); return false;" class="red-ui-button red-ui-button-small" style="float: right; margin-left: 5px;"><i class="fa fa-book"></i></button>').appendTo(popOverContent)
$('<p>',{style:"font-size: 0.8em"}).text(metaData).appendTo(popOverContent);

View File

@ -166,7 +166,7 @@ RED.projects.settings = (function() {
var description = addTargetToExternalLinks($('<span class="red-ui-text-bidi-aware" dir=\"'+RED.text.bidi.resolveBaseTextDir(desc)+'">'+desc+'</span>')).appendTo(container);
description.find(".red-ui-text-bidi-aware").contents().filter(function() { return this.nodeType === 3 && this.textContent.trim() !== "" }).wrap( "<span></span>" );
setTimeout(function () {
mermaid.init();
RED.editor.mermaid.render()
}, 200);
}

View File

@ -46,7 +46,9 @@ RED.subflow = (function() {
'</script>';
function findAvailableSubflowIOPosition(subflow,isInput) {
var pos = {x:50,y:30};
const scrollPos = RED.view.scroll()
const scaleFactor = RED.view.scale()
var pos = { x: (scrollPos[0]/scaleFactor)+50, y: (scrollPos[1]/scaleFactor)+30 };
if (!isInput) {
pos.x += 110;
}
@ -665,7 +667,7 @@ RED.subflow = (function() {
for (i=0; i<nodeList.length;i++) {
if (nodeList[i].g && !includedGroups.has(nodeList[i].g)) {
if (containingGroup !== nodeList[i].g) {
RED.notify("Cannot create subflow across multiple groups","error");
RED.notify(RED._("subflow.errors.acrossMultipleGroups"), "error");
return;
}
}
@ -681,24 +683,23 @@ RED.subflow = (function() {
var candidateOutputs = [];
var candidateInputNodes = {};
var boundingBox = [nodeList[0].x,
nodeList[0].y,
nodeList[0].x,
nodeList[0].y];
var boundingBox = [nodeList[0].x-(nodeList[0].w/2),
nodeList[0].y-(nodeList[0].h/2),
nodeList[0].x+(nodeList[0].w/2),
nodeList[0].y+(nodeList[0].h/2)];
for (i=0;i<nodeList.length;i++) {
n = nodeList[i];
nodes[n.id] = {n:n,outputs:{}};
boundingBox = [
Math.min(boundingBox[0],n.x),
Math.min(boundingBox[1],n.y),
Math.max(boundingBox[2],n.x),
Math.max(boundingBox[3],n.y)
Math.min(boundingBox[0],n.x-(n.w/2)),
Math.min(boundingBox[1],n.y-(n.h/2)),
Math.max(boundingBox[2],n.x+(n.w/2)),
Math.max(boundingBox[3],n.y+(n.h/2))
]
}
var offsetX = snapToGrid(boundingBox[0] - 200);
var offsetY = snapToGrid(boundingBox[1] - 80);
var offsetX = snapToGrid(boundingBox[0] - 140);
var offsetY = snapToGrid(boundingBox[1] - 60);
var center = [
snapToGrid((boundingBox[2]+boundingBox[0]) / 2),

View File

@ -218,11 +218,11 @@ RED.sidebar.context = (function() {
var obj = $(propRow.children()[0]);
obj.text(k);
var tools = $('<span class="button-group"></span>');
const urlSafeK = encodeURIComponent(k)
var refreshItem = $('<button class="red-ui-button red-ui-button-small"><i class="fa fa-refresh"></i></button>').appendTo(tools).on("click", function(e) {
e.preventDefault();
e.stopPropagation();
$.getJSON(baseUrl+"/"+k+"?store="+v.store, function(data) {
$.getJSON(baseUrl+"/"+urlSafeK+"?store="+v.store, function(data) {
if (data.msg !== payload || data.format !== format) {
payload = data.msg;
format = data.format;
@ -258,11 +258,12 @@ RED.sidebar.context = (function() {
$('<button class="red-ui-button primary" data-i18n="common.label.delete"></button>').appendTo(bg).on("click", function(e) {
e.preventDefault();
popover.close();
const urlSafeK = encodeURIComponent(k)
$.ajax({
url: baseUrl+"/"+k+"?store="+v.store,
url: baseUrl+"/"+urlSafeK+"?store="+v.store,
type: "DELETE"
}).done(function(data,textStatus,xhr) {
$.getJSON(baseUrl+"/"+k+"?store="+v.store, function(data) {
$.getJSON(baseUrl+"/"+urlSafeK+"?store="+v.store, function(data) {
if (data.format === 'undefined') {
propRow.remove();
if (container.children().length === 0) {

View File

@ -383,6 +383,7 @@ RED.sidebar.help = (function() {
$(this).toggleClass('expanded',!isExpanded);
})
helpSection.parent().scrollTop(0);
RED.editor.mermaid.render()
}
function set(html,title) {

View File

@ -464,7 +464,7 @@ RED.sidebar.info = (function() {
}
$(this).toggleClass('expanded',!isExpanded);
});
mermaid.init();
RED.editor.mermaid.render()
}
var tips = (function() {

View File

@ -362,6 +362,7 @@ RED.typeSearch = (function() {
items.push({type:t,def: def, label:getTypeLabel(t,def)});
}
});
items.push({ type: 'junction', def: { inputs:1, outputs: 1, label: 'junction', type: 'junction'}, label: 'junction' })
items.sort(sortTypeLabels);
var commonCount = 0;

View File

@ -101,28 +101,8 @@ RED.utils = (function() {
renderer.code = function (code, lang) {
if(lang === "mermaid") {
// mermaid diagram rendering
if (mermaidIsEnabled === undefined) {
if (RED.settings.markdownEditor &&
RED.settings.markdownEditor.mermaid) {
mermaidIsEnabled = RED.settings.markdownEditor.mermaid.enabled;
}
else {
mermaidIsEnabled = true;
}
}
if (mermaidIsEnabled) {
if (!mermaidIsInitialized) {
mermaidIsInitialized = true;
mermaid.initialize({startOnLoad:false});
}
return `<pre class='mermaid'>${code}</pre>`;
}
else {
return `<details><summary>${RED._("markdownEditor.mermaid.summary")}</summary><pre><code>${code}</code></pre></details>`;
}
}
else {
return `<pre class='mermaid'>${code}</pre>`;
} else {
return "<pre><code>" +code +"</code></pre>";
}
};
@ -917,6 +897,51 @@ RED.utils = (function() {
}
}
/**
* Checks a typed property is valid according to the type.
* Returns true if valid.
* Return String error message if invalid
* @param {*} propertyType
* @param {*} propertyValue
* @returns true if valid, String if invalid
*/
function validateTypedProperty(propertyValue, propertyType, opt) {
let error
if (propertyType === 'json') {
try {
JSON.parse(propertyValue);
} catch(err) {
error = RED._("validator.errors.invalid-json", {
error: err.message
})
}
} else if (propertyType === 'msg' || propertyType === 'flow' || propertyType === 'global' ) {
if (!RED.utils.validatePropertyExpression(propertyValue)) {
error = RED._("validator.errors.invalid-prop")
}
} else if (propertyType === 'num') {
if (!/^[+-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/.test(propertyValue)) {
error = RED._("validator.errors.invalid-num")
}
} else if (propertyType === 'jsonata') {
try {
jsonata(propertyValue)
} catch(err) {
error = RED._("validator.errors.invalid-expr", {
error: err.message
})
}
}
if (error) {
if (opt && opt.label) {
return opt.label+': '+error
}
return error
}
return true
}
function getMessageProperty(msg,expr) {
var result = null;
var msgPropParts;
@ -1451,6 +1476,7 @@ RED.utils = (function() {
getDarkerColor: getDarkerColor,
parseModuleList: parseModuleList,
checkModuleAllowed: checkModuleAllowed,
getBrowserInfo: getBrowserInfo
getBrowserInfo: getBrowserInfo,
validateTypedProperty: validateTypedProperty
}
})();

View File

@ -1305,6 +1305,39 @@ RED.view.tools = (function() {
}
}
/**
* Determine if a point is within a node
* @param {*} node - A Node or Junction node
* @param {[Number,Number]} mouse_position The x,y position of the mouse
* @param {Number} [marginX=0] - A margin to add or deduct from the x position (to increase the hit area)
* @param {Number} [marginY=0] - A margin to add or deduct from the y position (to increase the hit area)
* @returns
*/
function isPointInNode (node, [x, y], marginX, marginY) {
marginX = marginX || 0
marginY = marginY || 0
let w = node.w || 10 // junctions dont have any w or h value
let h = node.h || 10
let x1, x2, y1, y2
if (node.type === "junction" || node.type === "group") {
// x/y is the top left of the node
x1 = node.x
y1 = node.y
x2 = node.x + w
y2 = node.y + h
} else {
// x/y is the center of the node
const [xMid, yMid] = [w/2, h/2]
x1 = node.x - xMid
y1 = node.y - yMid
x2 = node.x + xMid
y2 = node.y + yMid
}
return (x >= (x1 - marginX) && x <= (x2 + marginX) && y >= (y1 - marginY) && y <= (y2 + marginY))
}
return {
init: function() {
RED.actions.add("core:show-selected-node-labels", function() { setSelectedNodeLabelState(true); })
@ -1387,7 +1420,8 @@ RED.view.tools = (function() {
* @param {Number} dy
*/
moveSelection: moveSelection,
calculateGridSnapOffsets: calculateGridSnapOffsets
calculateGridSnapOffsets: calculateGridSnapOffsets,
isPointInNode: isPointInNode
}
})();

View File

@ -101,7 +101,7 @@ RED.view = (function() {
// Note: these are the permitted status colour aliases. The actual RGB values
// are set in the CSS - flow.scss/colors.scss
var status_colours = {
const status_colours = {
"red": "#c00",
"green": "#5a8",
"yellow": "#F9DF31",
@ -110,19 +110,32 @@ RED.view = (function() {
"gray": "#d3d3d3"
}
var PORT_TYPE_INPUT = 1;
var PORT_TYPE_OUTPUT = 0;
const PORT_TYPE_INPUT = 1;
const PORT_TYPE_OUTPUT = 0;
var chart;
var outer;
/**
* The jQuery object for the workspace chart `#red-ui-workspace-chart` div element
* @type {JQuery<HTMLElement>} #red-ui-workspace-chart HTML Element
*/
let chart;
/**
* The d3 object `#red-ui-workspace-chart` svg element
* @type {d3.Selection<HTMLElement, Any, Any, Any>}
*/
let outer;
/**
* The d3 object `#red-ui-workspace-chart` svg element (specifically for events)
* @type {d3.Selection<d3.BaseType, any, any, any>}
*/
var eventLayer;
var gridLayer;
var linkLayer;
var junctionLayer;
var dragGroupLayer;
var groupSelectLayer;
var nodeLayer;
var groupLayer;
/** @type {SVGGElement} */ let gridLayer;
/** @type {SVGGElement} */ let linkLayer;
/** @type {SVGGElement} */ let junctionLayer;
/** @type {SVGGElement} */ let dragGroupLayer;
/** @type {SVGGElement} */ let groupSelectLayer;
/** @type {SVGGElement} */ let nodeLayer;
/** @type {SVGGElement} */ let groupLayer;
var drag_lines;
const movingSet = (function() {
@ -189,7 +202,13 @@ RED.view = (function() {
set.unshift(...removed)
}
},
find: function(func) { return set.find(func) }
find: function(func) { return set.find(func) },
dump: function () {
console.log('MovingSet Contents')
api.forEach((n, i) => {
console.log(`${i+1}\t${n.n.id}\t${n.n.type}`)
})
}
}
return api;
})();
@ -226,11 +245,78 @@ RED.view = (function() {
return api
})();
const selectedGroups = (function() {
let groups = new Set()
const api = {
add: function(g, includeNodes, addToMovingSet) {
groups.add(g)
if (!g.selected) {
g.selected = true;
g.dirty = true;
}
if (addToMovingSet !== false) {
movingSet.add(g);
}
if (includeNodes) {
var currentSet = new Set(movingSet.nodes());
var allNodes = RED.group.getNodes(g,true);
allNodes.forEach(function(n) {
if (!currentSet.has(n)) {
movingSet.add(n)
}
n.dirty = true;
})
}
selectedLinks.clearUnselected()
},
remove: function(g) {
groups.delete(g)
if (g.selected) {
g.selected = false;
g.dirty = true;
}
const allNodes = RED.group.getNodes(g,true);
const nodeSet = new Set(allNodes);
nodeSet.add(g);
for (let i = movingSet.length()-1; i >= 0; i -= 1) {
const msn = movingSet.get(i);
if (nodeSet.has(msn.n) || msn.n === g) {
msn.n.selected = false;
msn.n.dirty = true;
movingSet.remove(msn.n,i)
}
}
selectedLinks.clearUnselected()
},
length: () => groups.length,
forEach: (func) => { groups.forEach(func) },
toArray: () => [...groups],
clear: function () {
groups.forEach(g => {
g.selected = false
g.dirty = true
})
groups.clear()
}
}
return api
})()
const isMac = RED.utils.getBrowserInfo().os === 'mac'
// 'Control' is the main modifier key for mouse actions. On Windows,
// that is the standard Ctrl key. On Mac that is the Cmd key.
function isControlPressed (event) {
return (isMac && event.metaKey) || (!isMac && event.ctrlKey)
}
function init() {
chart = $("#red-ui-workspace-chart");
chart.on('contextmenu', function(evt) {
if (RED.view.DEBUG) {
console.warn("contextmenu", { mouse_mode, event: d3.event });
}
mouse_mode = RED.state.DEFAULT
evt.preventDefault()
evt.stopPropagation()
RED.contextMenu.show({
@ -328,16 +414,6 @@ RED.view = (function() {
touchStartTime = setTimeout(function() {
touchStartTime = null;
showTouchMenu(obj,pos);
//lasso = eventLayer.append("rect")
// .attr("ox",point[0])
// .attr("oy",point[1])
// .attr("rx",2)
// .attr("ry",2)
// .attr("x",point[0])
// .attr("y",point[1])
// .attr("width",0)
// .attr("height",0)
// .attr("class","nr-ui-view-lasso");
},touchLongPressTimeout);
}
d3.event.preventDefault();
@ -970,7 +1046,7 @@ RED.view = (function() {
})
}
function generateLinkPath(origX,origY, destX, destY, sc) {
function generateLinkPath(origX,origY, destX, destY, sc, hasStatus = false) {
var dy = destY-origY;
var dx = destX-origX;
var delta = Math.sqrt(dy*dy+dx*dx);
@ -987,62 +1063,110 @@ RED.view = (function() {
} else {
scale = 0.4-0.2*(Math.max(0,(node_width-Math.min(Math.abs(dx),Math.abs(dy)))/node_width));
}
function genCP(cp) {
return ` M ${cp[0]-5} ${cp[1]} h 10 M ${cp[0]} ${cp[1]-5} v 10 `
}
if (dx*sc > 0) {
return "M "+origX+" "+origY+
" C "+(origX+sc*(node_width*scale))+" "+(origY+scaleY*node_height)+" "+
(destX-sc*(scale)*node_width)+" "+(destY-scaleY*node_height)+" "+
destX+" "+destY
let cp = [
[(origX+sc*(node_width*scale)), (origY+scaleY*node_height)],
[(destX-sc*(scale)*node_width), (destY-scaleY*node_height)]
]
return `M ${origX} ${origY} C ${cp[0][0]} ${cp[0][1]} ${cp[1][0]} ${cp[1][1]} ${destX} ${destY}`
// + ` ${genCP(cp[0])} ${genCP(cp[1])}`
} else {
let topX, topY, bottomX, bottomY
let cp
let midX = Math.floor(destX-dx/2);
let midY = Math.floor(destY-dy/2);
if (Math.abs(dy) < 10) {
bottomY = Math.max(origY, destY) + (hasStatus?35:25)
let startCurveHeight = bottomY - origY
let endCurveHeight = bottomY - destY
cp = [
[ origX + sc*15 , origY ],
[ origX + sc*25 , origY + 5 ],
[ origX + sc*25 , origY + startCurveHeight/2 ],
var midX = Math.floor(destX-dx/2);
var midY = Math.floor(destY-dy/2);
//
if (dy === 0) {
midY = destY + node_height;
}
var cp_height = node_height/2;
var y1 = (destY + midY)/2
var topX =origX + sc*node_width*scale;
var topY = dy>0?Math.min(y1 - dy/2 , origY+cp_height):Math.max(y1 - dy/2 , origY-cp_height);
var bottomX = destX - sc*node_width*scale;
var bottomY = dy>0?Math.max(y1, destY-cp_height):Math.min(y1, destY+cp_height);
var x1 = (origX+topX)/2;
var scy = dy>0?1:-1;
var cp = [
// Orig -> Top
[x1,origY],
[topX,dy>0?Math.max(origY, topY-cp_height):Math.min(origY, topY+cp_height)],
// Top -> Mid
// [Mirror previous cp]
[x1,dy>0?Math.min(midY, topY+cp_height):Math.max(midY, topY-cp_height)],
// Mid -> Bottom
// [Mirror previous cp]
[bottomX,dy>0?Math.max(midY, bottomY-cp_height):Math.min(midY, bottomY+cp_height)],
// Bottom -> Dest
// [Mirror previous cp]
[(destX+bottomX)/2,destY]
];
if (cp[2][1] === topY+scy*cp_height) {
if (Math.abs(dy) < cp_height*10) {
cp[1][1] = topY-scy*cp_height/2;
cp[3][1] = bottomY-scy*cp_height/2;
}
cp[2][0] = topX;
}
return "M "+origX+" "+origY+
" C "+
cp[0][0]+" "+cp[0][1]+" "+
cp[1][0]+" "+cp[1][1]+" "+
topX+" "+topY+
" S "+
cp[2][0]+" "+cp[2][1]+" "+
midX+" "+midY+
" S "+
cp[3][0]+" "+cp[3][1]+" "+
bottomX+" "+bottomY+
" S "+
[ origX + sc*25 , origY + startCurveHeight - 5 ],
[ origX + sc*15 , origY + startCurveHeight ],
[ origX , origY + startCurveHeight ],
[ destX - sc*15, origY + startCurveHeight ],
[ destX - sc*25, origY + startCurveHeight - 5 ],
[ destX - sc*25, destY + endCurveHeight/2 ],
[ destX - sc*25, destY + 5 ],
[ destX - sc*15, destY ],
[ destX, destY ],
]
return "M "+origX+" "+origY+
" C "+
cp[0][0]+" "+cp[0][1]+" "+
cp[1][0]+" "+cp[1][1]+" "+
cp[2][0]+" "+cp[2][1]+" "+
" C " +
cp[3][0]+" "+cp[3][1]+" "+
cp[4][0]+" "+cp[4][1]+" "+
destX+" "+destY
cp[5][0]+" "+cp[5][1]+" "+
" h "+dx+
" C "+
cp[6][0]+" "+cp[6][1]+" "+
cp[7][0]+" "+cp[7][1]+" "+
cp[8][0]+" "+cp[8][1]+" "+
" C " +
cp[9][0]+" "+cp[9][1]+" "+
cp[10][0]+" "+cp[10][1]+" "+
cp[11][0]+" "+cp[11][1]+" "
// +genCP(cp[0])+genCP(cp[1])+genCP(cp[2])+genCP(cp[3])+genCP(cp[4])
// +genCP(cp[5])+genCP(cp[6])+genCP(cp[7])+genCP(cp[8])+genCP(cp[9])+genCP(cp[10])
} else {
var cp_height = node_height/2;
var y1 = (destY + midY)/2
topX = origX + sc*node_width*scale;
topY = dy>0?Math.min(y1 - dy/2 , origY+cp_height):Math.max(y1 - dy/2 , origY-cp_height);
bottomX = destX - sc*node_width*scale;
bottomY = dy>0?Math.max(y1, destY-cp_height):Math.min(y1, destY+cp_height);
var x1 = (origX+topX)/2;
var scy = dy>0?1:-1;
cp = [
// Orig -> Top
[x1,origY],
[topX,dy>0?Math.max(origY, topY-cp_height):Math.min(origY, topY+cp_height)],
// Top -> Mid
// [Mirror previous cp]
[x1,dy>0?Math.min(midY, topY+cp_height):Math.max(midY, topY-cp_height)],
// Mid -> Bottom
// [Mirror previous cp]
[bottomX,dy>0?Math.max(midY, bottomY-cp_height):Math.min(midY, bottomY+cp_height)],
// Bottom -> Dest
// [Mirror previous cp]
[(destX+bottomX)/2,destY]
];
if (cp[2][1] === topY+scy*cp_height) {
if (Math.abs(dy) < cp_height*10) {
cp[1][1] = topY-scy*cp_height/2;
cp[3][1] = bottomY-scy*cp_height/2;
}
cp[2][0] = topX;
}
return "M "+origX+" "+origY+
" C "+
cp[0][0]+" "+cp[0][1]+" "+
cp[1][0]+" "+cp[1][1]+" "+
topX+" "+topY+
" S "+
cp[2][0]+" "+cp[2][1]+" "+
midX+" "+midY+
" S "+
cp[3][0]+" "+cp[3][1]+" "+
bottomX+" "+bottomY+
" S "+
cp[4][0]+" "+cp[4][1]+" "+
destX+" "+destY
// +genCP(cp[0])+genCP(cp[1])+genCP(cp[2])+genCP(cp[3])+genCP(cp[4])
}
}
}
@ -1076,7 +1200,7 @@ RED.view = (function() {
lasso = null;
}
if (d3.event.touches || d3.event.button === 0) {
if ((mouse_mode === 0 || mouse_mode === RED.state.QUICK_JOINING) && (d3.event.metaKey || d3.event.ctrlKey) && !(d3.event.altKey || d3.event.shiftKey)) {
if ((mouse_mode === 0 || mouse_mode === RED.state.QUICK_JOINING) && isControlPressed(d3.event) && !(d3.event.altKey || d3.event.shiftKey)) {
// Trigger quick add dialog
d3.event.stopPropagation();
clearSelection();
@ -1086,7 +1210,7 @@ RED.view = (function() {
clickedGroup = clickedGroup || RED.nodes.group(drag_lines[0].node.g)
}
showQuickAddDialog({ position: point, group: clickedGroup });
} else if (mouse_mode === 0 && !(d3.event.metaKey || d3.event.ctrlKey)) {
} else if (mouse_mode === 0 && !isControlPressed(d3.event)) {
// CTRL not being held
if (!d3.event.altKey) {
// ALT not held (shift is allowed) Trigger lasso
@ -1130,7 +1254,7 @@ RED.view = (function() {
var touchTrigger = options.touchTrigger;
if (targetGroup) {
selectGroup(targetGroup,false);
selectedGroups.add(targetGroup,false);
RED.view.redraw();
}
@ -1284,6 +1408,7 @@ RED.view = (function() {
}
historyEvent = {
t:'add',
dirty: RED.nodes.dirty(),
junctions:[nn]
}
} else {
@ -1456,7 +1581,7 @@ RED.view = (function() {
clearSelection();
nn.selected = true;
if (targetGroup) {
selectGroup(targetGroup,false);
selectedGroups.add(targetGroup,false);
}
movingSet.add(nn);
updateActiveNodes();
@ -1659,7 +1784,7 @@ RED.view = (function() {
var portY = -((numOutputs-1)/2)*13 +13*sourcePort;
var sc = (drag_line.portType === PORT_TYPE_OUTPUT)?1:-1;
drag_line.el.attr("d",generateLinkPath(drag_line.node.x+sc*drag_line.node.w/2,drag_line.node.y+portY,mousePos[0],mousePos[1],sc));
drag_line.el.attr("d",generateLinkPath(drag_line.node.x+sc*drag_line.node.w/2,drag_line.node.y+portY,mousePos[0],mousePos[1],sc, !!drag_line.node.status));
}
d3.event.preventDefault();
} else if (mouse_mode == RED.state.MOVING) {
@ -1920,10 +2045,7 @@ RED.view = (function() {
if (!movingSet.has(n) && !n.selected) {
// group entirely within lasso
if (n.x > x && n.y > y && n.x + n.w < x2 && n.y + n.h < y2) {
n.selected = true
n.dirty = true
var groupNodes = RED.group.getNodes(n,true);
groupNodes.forEach(gn => movingSet.add(gn))
selectedGroups.add(n, true)
}
}
})
@ -2273,7 +2395,7 @@ RED.view = (function() {
clearSelection();
activeGroups.forEach(function(g) {
if (!g.g) {
selectGroup(g, true);
selectedGroups.add(g, true);
if (!g.selected) {
g.selected = true;
g.dirty = true;
@ -2343,10 +2465,7 @@ RED.view = (function() {
}
movingSet.clear();
selectedLinks.clear();
activeGroups.forEach(function(g) {
g.selected = false;
g.dirty = true;
})
selectedGroups.clear();
}
var lastSelection = null;
@ -2603,6 +2722,16 @@ RED.view = (function() {
var result = RED.nodes.removeJunction(node)
removedJunctions.push(node);
removedLinks = removedLinks.concat(result.links);
if (node.g) {
var group = RED.nodes.group(node.g);
if (selectedGroups.indexOf(group) === -1) {
// Don't use RED.group.removeFromGroup as that emits
// a change event on the node - but we're deleting it
var index = group.nodes.indexOf(node);
group.nodes.splice(index,1);
RED.group.markDirty(group);
}
}
} else {
if (node.direction === "out") {
removedSubflowOutputs.push(node);
@ -2979,22 +3108,38 @@ RED.view = (function() {
}
}
document.body.style.cursor = "";
if (mouse_mode == RED.state.JOINING || mouse_mode == RED.state.QUICK_JOINING) {
if (typeof TouchEvent != "undefined" && evt instanceof TouchEvent) {
var found = false;
RED.nodes.eachNode(function(n) {
if (n.z == RED.workspaces.active()) {
var hw = n.w/2;
var hh = n.h/2;
if (n.x-hw<mouse_position[0] && n.x+hw> mouse_position[0] &&
n.y-hh<mouse_position[1] && n.y+hh>mouse_position[1]) {
found = true;
mouseup_node = n;
portType = mouseup_node.inputs>0?PORT_TYPE_INPUT:PORT_TYPE_OUTPUT;
portIndex = 0;
if (RED.view.DEBUG) { console.warn("portMouseUp: TouchEvent", mouse_mode,d,portType,portIndex); }
const direction = drag_lines[0].portType === PORT_TYPE_INPUT ? PORT_TYPE_OUTPUT : PORT_TYPE_INPUT
let found = false;
for (let nodeIdx = 0; nodeIdx < activeNodes.length; nodeIdx++) {
const n = activeNodes[nodeIdx];
if (RED.view.tools.isPointInNode(n, mouse_position)) {
found = true;
mouseup_node = n;
// portType = mouseup_node.inputs > 0 ? PORT_TYPE_INPUT : PORT_TYPE_OUTPUT;
portType = direction;
portIndex = 0;
break
}
}
if (!found && drag_lines.length > 0 && !drag_lines[0].virtualLink) {
for (let juncIdx = 0; juncIdx < activeJunctions.length; juncIdx++) {
// NOTE: a junction is 10px x 10px but the target area is expanded to 30wx20h by adding padding to the bounding box
const jNode = activeJunctions[juncIdx];
if (RED.view.tools.isPointInNode(jNode, mouse_position, 20, 10)) {
found = true;
mouseup_node = jNode;
portType = direction;
portIndex = 0;
break
}
}
});
}
if (!found && activeSubflow) {
var subflowPorts = [];
if (activeSubflow.status) {
@ -3006,16 +3151,13 @@ RED.view = (function() {
if (activeSubflow.out) {
subflowPorts = subflowPorts.concat(activeSubflow.out)
}
for (var i=0;i<subflowPorts.length;i++) {
var n = subflowPorts[i];
var hw = n.w/2;
var hh = n.h/2;
if (n.x-hw<mouse_position[0] && n.x+hw> mouse_position[0] &&
n.y-hh<mouse_position[1] && n.y+hh>mouse_position[1]) {
found = true;
mouseup_node = n;
portType = mouseup_node.direction === "in"?PORT_TYPE_OUTPUT:PORT_TYPE_INPUT;
portIndex = 0;
for (var i = 0; i < subflowPorts.length; i++) {
const sf = subflowPorts[i];
if (RED.view.tools.isPointInNode(sf, mouse_position)) {
found = true;
mouseup_node = sf;
portType = mouseup_node.direction === "in" ? PORT_TYPE_OUTPUT : PORT_TYPE_INPUT;
portIndex = 0;
break;
}
}
@ -3408,7 +3550,7 @@ RED.view = (function() {
d3.event.preventDefault()
document.getSelection().removeAllRanges()
if (d.type != "subflow") {
if (/^subflow:/.test(d.type) && (d3.event.ctrlKey || d3.event.metaKey)) {
if (/^subflow:/.test(d.type) && isControlPressed(d3.event)) {
RED.workspaces.show(d.type.substring(8));
} else {
RED.editor.edit(d);
@ -3425,7 +3567,7 @@ RED.view = (function() {
if (!groupNodeSelectPrimed && !d.selected && d.g && RED.nodes.group(d.g).selected) {
clearSelection();
selectGroup(RED.nodes.group(d.g), false);
selectedGroups.add(RED.nodes.group(d.g), false);
mousedown_node.selected = true;
movingSet.add(mousedown_node);
@ -3572,12 +3714,12 @@ RED.view = (function() {
d.type !== 'junction'
lastClickNode = mousedown_node;
if (d.selected && (d3.event.ctrlKey||d3.event.metaKey)) {
if (d.selected && isControlPressed(d3.event)) {
mousedown_node.selected = false;
movingSet.remove(mousedown_node);
} else {
if (d3.event.shiftKey) {
if (!(d3.event.ctrlKey||d3.event.metaKey)) {
if (!isControlPressed(d3.event)) {
clearSelection();
}
var clickPosition = (d3.event.offsetX/scaleFactor - mousedown_node.x)
@ -3746,10 +3888,10 @@ RED.view = (function() {
}
mousedown_link = d;
if (!(d3.event.metaKey || d3.event.ctrlKey)) {
if (!isControlPressed(d3.event)) {
clearSelection();
}
if (d3.event.metaKey || d3.event.ctrlKey) {
if (isControlPressed(d3.event)) {
if (!selectedLinks.has(mousedown_link)) {
selectedLinks.add(mousedown_link);
} else {
@ -3764,7 +3906,7 @@ RED.view = (function() {
redraw();
focusView();
d3.event.stopPropagation();
if (!mousedown_link.link && movingSet.length() === 0 && (d3.event.touches || d3.event.button === 0) && selectedLinks.length() === 1 && selectedLinks.has(mousedown_link) && (d3.event.metaKey || d3.event.ctrlKey)) {
if (!mousedown_link.link && movingSet.length() === 0 && (d3.event.touches || d3.event.button === 0) && selectedLinks.length() === 1 && selectedLinks.has(mousedown_link) && isControlPressed(d3.event)) {
d3.select(this).classed("red-ui-flow-link-splice",true);
var point = d3.mouse(this);
var clickedGroup = getGroupAt(point[0],point[1]);
@ -3845,15 +3987,15 @@ RED.view = (function() {
);
lastClickNode = g;
if (g.selected && (d3.event.ctrlKey||d3.event.metaKey)) {
deselectGroup(g);
if (g.selected && isControlPressed(d3.event)) {
selectedGroups.remove(g);
d3.event.stopPropagation();
} else {
if (!g.selected) {
if (!d3.event.ctrlKey && !d3.event.metaKey) {
clearSelection();
}
selectGroup(g,true);//!wasSelected);
selectedGroups.add(g,true);//!wasSelected);
}
if (d3.event.button != 2) {
@ -3869,45 +4011,6 @@ RED.view = (function() {
d3.event.stopPropagation();
}
function selectGroup(g, includeNodes, addToMovingSet) {
if (!g.selected) {
g.selected = true;
g.dirty = true;
}
if (addToMovingSet !== false) {
movingSet.add(g);
}
if (includeNodes) {
var currentSet = new Set(movingSet.nodes());
var allNodes = RED.group.getNodes(g,true);
allNodes.forEach(function(n) {
if (!currentSet.has(n)) {
movingSet.add(n)
}
n.dirty = true;
})
}
selectedLinks.clearUnselected()
}
function deselectGroup(g) {
if (g.selected) {
g.selected = false;
g.dirty = true;
}
const allNodes = RED.group.getNodes(g,true);
const nodeSet = new Set(allNodes);
nodeSet.add(g);
for (let i = movingSet.length()-1; i >= 0; i -= 1) {
const msn = movingSet.get(i);
if (nodeSet.has(msn.n) || msn.n === g) {
msn.n.selected = false;
msn.n.dirty = true;
movingSet.remove(msn.n,i)
}
}
selectedLinks.clearUnselected()
}
function getGroupAt(x, y, ignoreSelected) {
// x,y expected to be in node-co-ordinate space
var candidateGroups = {};
@ -4084,21 +4187,27 @@ RED.view = (function() {
nodeEl.__statusGroup__.style.display = "none";
} else {
nodeEl.__statusGroup__.style.display = "inline";
let backgroundWidth = 12
var fill = status_colours[d.status.fill]; // Only allow our colours for now
if (d.status.shape == null && fill == null) {
backgroundWidth = 0
nodeEl.__statusShape__.style.display = "none";
nodeEl.__statusBackground__.setAttribute("x", 17)
nodeEl.__statusGroup__.setAttribute("transform","translate(-14,"+(d.h+3)+")");
} else {
nodeEl.__statusGroup__.setAttribute("transform","translate(3,"+(d.h+3)+")");
var statusClass = "red-ui-flow-node-status-"+(d.status.shape||"dot")+"-"+d.status.fill;
nodeEl.__statusShape__.style.display = "inline";
nodeEl.__statusShape__.setAttribute("class","red-ui-flow-node-status "+statusClass);
nodeEl.__statusBackground__.setAttribute("x", 3)
}
if (d.status.hasOwnProperty('text')) {
nodeEl.__statusLabel__.textContent = d.status.text;
} else {
nodeEl.__statusLabel__.textContent = "";
}
const textSize = nodeEl.__statusLabel__.getBBox()
nodeEl.__statusBackground__.setAttribute('width', backgroundWidth + textSize.width + 6)
}
delete d.dirtyStatus;
}
@ -4346,6 +4455,7 @@ RED.view = (function() {
this.__port__.setAttribute("transform","translate(-5,"+((d.h/2)-5)+")");
this.__outputOutput__.setAttribute("transform","translate(20,"+((d.h/2)-8)+")");
this.__outputNumber__.setAttribute("transform","translate(20,"+((d.h/2)+7)+")");
this.__outputNumber__.textContent = d.i+1;
}
d.dirty = false;
}
@ -4503,17 +4613,30 @@ RED.view = (function() {
statusEl.style.display = "none";
node[0][0].__statusGroup__ = statusEl;
var statusRect = document.createElementNS("http://www.w3.org/2000/svg","rect");
statusRect.setAttribute("class","red-ui-flow-node-status");
statusRect.setAttribute("x",6);
statusRect.setAttribute("y",1);
statusRect.setAttribute("width",9);
statusRect.setAttribute("height",9);
statusRect.setAttribute("rx",2);
statusRect.setAttribute("ry",2);
statusRect.setAttribute("stroke-width","3");
statusEl.appendChild(statusRect);
node[0][0].__statusShape__ = statusRect;
var statusBackground = document.createElementNS("http://www.w3.org/2000/svg","rect");
statusBackground.setAttribute("class","red-ui-flow-node-status-background");
statusBackground.setAttribute("x",3);
statusBackground.setAttribute("y",-1);
statusBackground.setAttribute("width",200);
statusBackground.setAttribute("height",13);
statusBackground.setAttribute("rx",1);
statusBackground.setAttribute("ry",1);
statusEl.appendChild(statusBackground);
node[0][0].__statusBackground__ = statusBackground;
var statusIcon = document.createElementNS("http://www.w3.org/2000/svg","rect");
statusIcon.setAttribute("class","red-ui-flow-node-status");
statusIcon.setAttribute("x",6);
statusIcon.setAttribute("y",1);
statusIcon.setAttribute("width",9);
statusIcon.setAttribute("height",9);
statusIcon.setAttribute("rx",2);
statusIcon.setAttribute("ry",2);
statusIcon.setAttribute("stroke-width","3");
statusEl.appendChild(statusIcon);
node[0][0].__statusShape__ = statusIcon;
var statusLabel = document.createElementNS("http://www.w3.org/2000/svg","text");
statusLabel.setAttribute("class","red-ui-flow-node-status-label");
@ -4919,16 +5042,25 @@ RED.view = (function() {
contents.appendChild(junctionOutput);
junctionOutput.addEventListener("mouseup", portMouseUpProxy);
junctionOutput.addEventListener("mousedown", portMouseDownProxy);
junctionOutput.addEventListener("mouseover", junctionMouseOverProxy);
junctionOutput.addEventListener("mouseout", junctionMouseOutProxy);
junctionOutput.addEventListener("touchmove", junctionMouseOverProxy);
junctionOutput.addEventListener("touchend", portMouseUpProxy);
junctionOutput.addEventListener("touchstart", portMouseDownProxy);
junctionInput.addEventListener("mouseover", junctionMouseOverProxy);
junctionInput.addEventListener("mouseout", junctionMouseOutProxy);
junctionInput.addEventListener("touchmove", junctionMouseOverProxy);
junctionInput.addEventListener("touchend", portMouseUpProxy);
junctionInput.addEventListener("touchstart", portMouseDownProxy);
junctionBack.addEventListener("mouseover", junctionMouseOverProxy);
junctionBack.addEventListener("mouseout", junctionMouseOutProxy);
junctionBack.addEventListener("touchmove", junctionMouseOverProxy);
// These handlers expect to be registered as d3 events
d3.select(junctionBack).on("mousedown", nodeMouseDown).on("mouseup", nodeMouseUp);
d3.select(junctionBack).on("touchstart", nodeMouseDown).on("touchend", nodeMouseUp);
junction[0][0].appendChild(contents);
})
@ -5038,7 +5170,7 @@ RED.view = (function() {
// " C "+(d.x1+scale*node_width)+" "+(d.y1+scaleY*node_height)+" "+
// (d.x2-scale*node_width)+" "+(d.y2-scaleY*node_height)+" "+
// d.x2+" "+d.y2;
var path = generateLinkPath(d.x1,d.y1,d.x2,d.y2,1);
var path = generateLinkPath(d.x1,d.y1,d.x2,d.y2,1, !!(d.source.status || d.target.status));
if (/NaN/.test(path)) {
path = ""
}
@ -5888,11 +6020,10 @@ RED.view = (function() {
if (movingSet.length() > 0) {
movingSet.forEach(function(n) {
if (n.n.type !== 'group') {
allNodes.add(n.n);
allNodes.add(n.n);
}
});
}
var selectedGroups = activeGroups.filter(function(g) { return g.selected });
selectedGroups.forEach(function(g) {
var groupNodes = RED.group.getNodes(g,true);
groupNodes.forEach(function(n) {
@ -6086,6 +6217,13 @@ RED.view = (function() {
selectedNode.dirty = true;
movingSet.clear();
movingSet.add(selectedNode);
} else {
selectedNode = RED.nodes.group(selection);
if (selectedNode) {
movingSet.clear();
selectedGroups.clear()
selectedGroups.add(selectedNode)
}
}
} else if (selection) {
if (selection.nodes) {
@ -6101,7 +6239,7 @@ RED.view = (function() {
n.dirty = true;
movingSet.add(n);
} else {
selectGroup(n,true);
selectedGroups.add(n,true);
}
})
}
@ -6269,8 +6407,12 @@ RED.view = (function() {
})
},
scroll: function(x,y) {
chart.scrollLeft(chart.scrollLeft()+x);
chart.scrollTop(chart.scrollTop()+y)
if (x !== undefined && y !== undefined) {
chart.scrollLeft(chart.scrollLeft()+x);
chart.scrollTop(chart.scrollTop()+y)
} else {
return [chart.scrollLeft(), chart.scrollTop()]
}
},
clickNodeButton: function(n) {
if (n._def.button) {

View File

@ -43,43 +43,13 @@ RED.validators = {
typedInput: function(ptypeName,isConfig,mopt) {
return function(v, opt) {
var ptype = $("#node-"+(isConfig?"config-":"")+"input-"+ptypeName).val() || this[ptypeName];
if (ptype === 'json') {
try {
JSON.parse(v);
return true;
} catch(err) {
if (opt && opt.label) {
return RED._("validator.errors.invalid-json-prop", {
error: err.message,
prop: opt.label,
});
}
return opt ? RED._("validator.errors.invalid-json", {
error: err.message
}) : false;
}
} else if (ptype === 'msg' || ptype === 'flow' || ptype === 'global' ) {
if (RED.utils.validatePropertyExpression(v)) {
return true;
}
if (opt && opt.label) {
return RED._("validator.errors.invalid-prop-prop", {
prop: opt.label
});
}
return opt ? RED._("validator.errors.invalid-prop") : false;
} else if (ptype === 'num') {
if (/^[+-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/.test(v)) {
return true;
}
if (opt && opt.label) {
return RED._("validator.errors.invalid-num-prop", {
prop: opt.label
});
}
return opt ? RED._("validator.errors.invalid-num") : false;
const result = RED.utils.validateTypedProperty(v, ptype, opt)
if (result === true || opt) {
// Valid, or opt provided - return result as-is
return result
}
return true;
};
// No opt - need to return false for backwards compatibilty
return false
}
}
};
};

View File

@ -126,7 +126,7 @@
list-style-type: none;
margin: 0;
padding:0;
overflow-wrap: anywhere;
li {
display: inline-block;
padding:0;

View File

@ -304,7 +304,11 @@ g.red-ui-flow-node-selected {
stroke: var(--red-ui-node-status-colors-#{"" + $current-color});
}
}
.red-ui-flow-node-status-background {
stroke: none;
fill: var(--red-ui-view-background);
fill-opacity: 0.9;
}
.red-ui-flow-node-status-label {
@include disable-selection;
stroke-width: 0;

View File

@ -14,7 +14,7 @@
* limitations under the License.
**/
#red-ui-settings-tab-palette {
#red-ui-settings-tab-palette {
height: 100%;
}
@ -28,7 +28,17 @@
padding: 0;
box-sizing:border-box;
background: var(--red-ui-secondary-background);
display: flex;
flex-direction: column;
.red-ui-tabs {
flex-shrink: 0;
margin-bottom: 0;
}
.red-ui-editableList.scrollable {
overflow-y: auto;
}
.red-ui-editableList-container {
border: none;
border-radius: 0;
@ -72,11 +82,9 @@
}
.red-ui-palette-editor-tab {
position:absolute;
top:35px;
left:0;
right:0;
bottom:0
display: flex;
flex-direction: column;
min-height: 0;
}
.red-ui-palette-editor-toolbar {
background: var(--red-ui-primary-background);
@ -84,6 +92,24 @@
padding: 8px 10px;
border-bottom: 1px solid var(--red-ui-primary-border-color);
text-align: right;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 3px 12px;
.red-ui-palette-editor-toolbar-actions {
flex-shrink: 0;
flex-grow: 1;
}
.red-ui-palette-editor-catalogue-filter {
width: unset;
margin: 0;
flex-shrink: 1;
flex-grow: 1;
font-size: 12px;
height: 26px;
padding: 1px;
}
}
.red-ui-palette-module-shade-status {
color: var(--red-ui-secondary-text-color);

View File

@ -54,8 +54,8 @@
}
.red-ui-palette-search {
position: relative;
overflow: hidden;
background: var(--red-ui-secondary-background);
// overflow: hidden;
background: var(--red-ui-form-input-background);
text-align: center;
height: 35px;
padding: 3px;

View File

@ -35,6 +35,7 @@
padding: 8px;
border-radius: 2px;
background: var(--red-ui-popover-background);
overflow-wrap: anywhere;
}
.red-ui-popover:after, .red-ui-popover:before {
border: solid transparent;

View File

@ -825,6 +825,7 @@ div.red-ui-projects-dialog-ssh-public-key {
margin-top: 0 !important;
padding: 5px 10px;
margin-bottom: 10px;
border-radius: 3px 3px 0px 0px;
}
}

View File

@ -108,6 +108,8 @@
}
.red-ui-search-result-node-label {
color: var(--red-ui-secondary-text-color);
width: 240px;
overflow-wrap: anywhere;
}
}

View File

@ -31,6 +31,7 @@
> span {
display: inline-block;
margin-left: 5px;
overflow-wrap: anywhere;
}
border-bottom: 1px solid var(--red-ui-secondary-border-color);
}

View File

@ -5,17 +5,20 @@ export default {
titleIcon: "fa fa-map-o",
title: {
"en-US": "Welcome to Node-RED 3.0!",
"ja": "Node-RED 3.0へようこそ!"
"ja": "Node-RED 3.0へようこそ!",
"fr": "Bienvenue dans Node-RED 3.0 !"
},
description: {
"en-US": "<p>Let's take a moment to discover the new features in this release.</p>",
"ja": "<p>本リリースの新機能を見つけてみましょう。</p>"
"ja": "<p>本リリースの新機能を見つけてみましょう。</p>",
"fr": "<p>Prenons un moment pour découvrir les nouvelles fonctionnalités de cette version.</p>"
}
},
{
title: {
"en-US": "Context Menu",
"ja": "コンテキストメニュー"
"ja": "コンテキストメニュー",
"fr": "Menu contextuel"
},
image: '3.0/images/context-menu.png',
description: {
@ -24,13 +27,17 @@ export default {
<p>This makes many of the built-in actions much easier
to access.</p>`,
"ja": `<p>ワークスペースで右クリックすると、エディタに独自のコンテキストメニューが表示されるようになりました。</p>
<p>これによって多くの組み込み動作をより簡単に利用できます</p>`
<p>これによって多くの組み込み動作をより簡単に利用できます</p>`,
"fr": `<p>L'éditeur a maintenant son propre menu contextuel lorsque vous
faites un clic droit dans l'espace de travail.</p>
<p>Cela facilite l'accès à de nombreuses actions intégrées.</p>`
}
},
{
title: {
"en-US": "Wire Junctions",
"ja": "分岐点をワイヤーに追加"
"ja": "分岐点をワイヤーに追加",
"fr": "Jonctions de fils"
},
image: '3.0/images/junction-slice.gif',
description: {
@ -40,13 +47,18 @@ export default {
<p>Junctions can be added to wires by holding both the Alt key and the Shift key
then click and drag the mouse across the wires.</p>`,
"ja": `<p>フローのワイヤーの経路をより制御しやすくするために、分岐点ノードを追加できるようになりました。</p>
<p>Altキーとシフトキーを押しながらマウスをクリックしワイヤーを横切るようにドラッグすることで分岐点を追加できます</p>`
<p>Altキーとシフトキーを押しながらマウスをクリックしワイヤーを横切るようにドラッグすることで分岐点を追加できます</p>`,
"fr": `<p>Pour faciliter le routage des câbles autour de vos flux, il est désormais possible d'ajouter des noeuds
de jonction qui vous donnent plus de contrôle.</p>
<p>Les jonctions peuvent être ajoutées aux fils en maintenant les touches Alt et Maj enfoncées, puis en cliquant
et en faisant glisser la souris sur les fils.</p>`
},
},
{
title: {
"en-US": "Wire Junctions",
"ja": "分岐点をワイヤーに追加"
"ja": "分岐点をワイヤーに追加",
"fr": "Jonctions de fils"
},
image: '3.0/images/junction-quick-add.png',
description: {
@ -54,13 +66,16 @@ export default {
<p>The dialog is opened by holding the Ctrl (or Cmd) key when
clicking in the workspace.</p>`,
"ja": `<p>クイック追加ダイアログを用いて、分岐点を追加することもできます。</p>
<p>本ダイアログを開くにはCtrl(またはCmd)キーを押しながらワークスペース上でクリックします</p>`
<p>本ダイアログを開くにはCtrl(またはCmd)キーを押しながらワークスペース上でクリックします</p>`,
"fr": `<p>Les jonctions peuvent également être ajoutées à l'aide de la boîte de dialogue d'ajout rapide.</p>
<p>La boîte de dialogue s'ouvre en maintenant la touche Ctrl (ou Cmd) enfoncée lors d'un clic dans l'espace de travail.</p>`
},
},
{
title: {
"en-US": "Debug Path Tooltip",
"ja": "デバッグパスのツールチップ"
"ja": "デバッグパスのツールチップ",
"fr": "Info-bulle du chemin de débogage"
},
image: '3.0/images/debug-path-tooltip.png',
description: {
@ -73,26 +88,33 @@ export default {
the workspace.</p>`,
"ja": `<p>デバックサイドバー内のノード名の上にマウスカーソルを乗せると、新たにツールチップが表示され、ノードの場所が分かるようになっています。</p>
<p>これはサブフローを用いる時に役立つ機能でありメッセージがどのノードから出力されたかを正確に特定することが遥かに簡単になります</p>
<p>本リスト内の要素をクリックするとワークスペース内にその要素が表示されます</p>`
<p>本リスト内の要素をクリックするとワークスペース内にその要素が表示されます</p>`,
"fr": `<p>Lorsque vous passez la souris sur un nom de noeud dans la barre latérale de débogage, une nouvelle info-bulle affiche l'emplacement complet du noeud.</p>
<p>C'est utile lorsque vous travaillez avec des sous-flux, ce qui facilite l'identification exacte du noeud qui a généré le message.</p>
<p>Cliquer sur n'importe quel élément de la liste le révélera dans l'espace de travail.</p>`
},
},
{
title: {
"en-US": "Continuous Search",
"ja": "連続した検索"
"ja": "連続した検索",
"fr": "Recherche continue"
},
image: '3.0/images/continuous-search.png',
description: {
"en-US": `<p>When searching for things in the editor, a new toolbar in
the workspace provides options to quickly jump between
the search results.</p>`,
"ja": `<p>ワークスペース内の新しいツールバーにあるオプションによって、エディタ内を検索する際に、検索結果の間を素早く移動できます。</p>`
"ja": `<p>ワークスペース内の新しいツールバーにあるオプションによって、エディタ内を検索する際に、検索結果の間を素早く移動できます。</p>`,
"fr": `<p>Lorsque vous recherchez des éléments dans l'éditeur, une nouvelle barre d'outils dans l'espace de travail fournit des options pour passer
rapidement d'un résultat de recherche à l'autre.</p>`
},
},
{
title: {
"en-US": "New wiring actions",
"ja": "新しいワイヤー操作"
"ja": "新しいワイヤー操作",
"fr": "Nouvelles actions de câblage"
},
image: "3.0/images/split-wire-with-links.gif",
description: {
@ -106,12 +128,18 @@ export default {
<li><b><code>ワイヤーをlinkードで分割</code></b></li>
</ul>
<p>本アクションはメインメニュー内の動作一覧から呼び出せます</p>`,
"fr": `<p>Une nouvelle action a été ajoutée pour remplacer un fil par une paire de noeuds de lien connectés :</p>
<ul>
<li><b><code>Diviser le fil avec les noeuds de liaison</code></b></li>
</ul>
<p>Les actions sont accessibles à partir de la liste d'actions dans le menu principal.</p>`
},
},
{
title: {
"en-US": "Default node names",
"ja": "標準ノードの名前"
"ja": "標準ノードの名前",
"fr": "Noms de noeud par défaut"
},
// image: "images/",
description: {
@ -129,13 +157,22 @@ export default {
<ul>
<li><b><code>ノード名を生成</code></b></li>
</ul><p></p>
`
`,
"fr": `<p>Certains noeuds ont été mis à jour pour générer un nom unique lorsque
de nouvelles instances sont ajoutées à l'espace de travail. Ceci s'applique aux
noeuds <code>Debug</code>, <code>Function</code> et <code>Link</code>.</p>
<p>Une nouvelle action a également été ajoutée pour générer des noms par défaut pour les noeuds sélectionnés :</p>
<ul>
<li><b><code>Générer des noms de noeud</code></b></li>
</ul>
<p>Les actions sont accessibles à partir de la liste d'actions dans le menu principal.</p>`
}
},
{
title: {
"en-US": "Node Updates",
"ja": "ノードの更新"
"ja": "ノードの更新",
"fr": "Mises à jour des noeuds"
},
// image: "images/",
description: {
@ -148,6 +185,11 @@ export default {
<li>Debugードは受信したメッセージの数をカウントするよう設定できるようになりました</li>
<li>Link Callードはメッセージのプロパティによって呼び出し対象のlinkを動的に指定できるようになりました</li>
<li>HTTP RequestードはHTTPヘッダを事前設定できるようになりました</li>
</ul>`,
"fr": `<ul>
<li>Le noeud de débogage peut être configuré pour compter les messages qu'il reçoit</li>
<li>Le noeud Link Call peut utiliser une propriété de message pour cibler dynamiquement le lien qu'il doit appeler</li>
<li>Le noeud de requête HTTP peut être préconfiguré avec des en-têtes HTTP</li>
</ul>`
}
}

View File

@ -3,12 +3,14 @@ export default {
{
title: {
'en-US': 'Create your first flow',
'ja': 'はじめてのフローを作成'
'ja': 'はじめてのフローを作成',
'fr': "Créer votre premier flux"
},
width: 400,
description: {
'en-US': 'This tutorial will guide you through creating your first flow',
'ja': '本チュートリアルでは、はじめてのフローを作成する方法について説明します。'
'ja': '本チュートリアルでは、はじめてのフローを作成する方法について説明します。',
'fr': "Ce didacticiel vous guidera dans la création de votre premier flux"
},
nextButton: 'start'
},
@ -16,7 +18,8 @@ export default {
element: "#red-ui-workspace .red-ui-tab-button.red-ui-tabs-add",
description: {
'en-US': 'To add a new tab, click the <i class="fa fa-plus"></i> button',
'ja': '新しいタブを追加するため、 <i class="fa fa-plus"></i> ボタンをクリックします。'
'ja': '新しいタブを追加するため、 <i class="fa fa-plus"></i> ボタンをクリックします。',
'fr': 'Pour ajouter un nouvel onglet, cliquez sur le bouton <i class="fa fa-plus"></i>'
},
wait: {
type: "dom-event",
@ -29,7 +32,8 @@ export default {
direction: 'right',
description: {
'en-US': 'The palette lists all of the nodes available to use. Drag a new Inject node into the workspace.',
'ja': 'パレットには、利用できる全てのードが一覧表示されます。injectードをワークスペースにドラッグします。'
'ja': 'パレットには、利用できる全てのードが一覧表示されます。injectードをワークスペースにドラッグします。',
'fr': "La palette répertorie tous les noeuds disponibles à utiliser. Faites glisser un nouveau noeud Inject dans l'espace de travail."
},
fallback: 'inset-bottom-right',
wait: {
@ -52,7 +56,8 @@ export default {
direction: 'right',
description: {
'en-US': 'Next, drag a new Debug node into the workspace.',
'ja': '次に、debugードをワークスペースにドラッグします。'
'ja': '次に、debugードをワークスペースにドラッグします。',
'fr': "Ensuite, faites glisser un nouveau noeud Debug dans l'espace de travail."
},
fallback: 'inset-bottom-right',
wait: {
@ -74,7 +79,8 @@ export default {
element: function() { return $("#"+this.injectNode.id+" .red-ui-flow-port") },
description: {
'en-US': 'Add a wire from the output of the Inject node to the input of the Debug node',
'ja': 'injectードの出力から、debugードの入力へワイヤーで接続します。'
'ja': 'injectードの出力から、debugードの入力へワイヤーで接続します。',
'fr': "Ajoutez un fil de la sortie du noeud Inject à l'entrée du noeud Debug"
},
fallback: 'inset-bottom-right',
wait: {
@ -89,7 +95,8 @@ export default {
element: "#red-ui-header-button-deploy",
description: {
'en-US': 'Deploy your changes so the flow is active in the runtime',
'ja': 'フローをランタイムで実行させるため、変更をデプロイします。'
'ja': 'フローをランタイムで実行させるため、変更をデプロイします。',
'fr': "Déployez vos modifications afin que le flux soit actif dans le runtime"
},
width: 200,
wait: {

View File

@ -1,20 +1,24 @@
export default {
version: "3.1.0-beta.2",
version: "3.1.0",
steps: [
{
titleIcon: "fa fa-map-o",
title: {
"en-US": "Welcome to Node-RED 3.1 Beta 2!",
"ja": "Node-RED 3.1 ベータ1へようこそ!"
"en-US": "Welcome to Node-RED 3.1!",
"ja": "Node-RED 3.1へようこそ!",
"fr": "Bienvenue dans Node-RED 3.1!"
},
description: {
"en-US": "<p>This is the second beta release for 3.1.0 and we have a few new features to tell you about.</p>",
// "ja": "<p>これは3.1.0の最初のベータリリースです。いくつかの新機能について説明します。</p>"
"en-US": "<p>Let's take a moment to discover the new features in this release.</p>",
"ja": "<p>本リリースの新機能を見つけてみましょう。</p>",
"fr": "<p>Prenons un moment pour découvrir les nouvelles fonctionnalités de cette version.</p>"
}
},
{
title: {
"en-US": "New ways to work with groups",
"ja": "グループの新たな操作方法",
"fr": "De nouvelles façons de travailler avec les groupes"
},
description: {
"en-US": `<p>We have changed how you interact with groups in the editor.</p>
@ -23,55 +27,85 @@ export default {
<li>They can be reordered using the Moving Forwards and Move Backwards actions</li>
<li>Multiple nodes can be dragged into a group in one go</li>
<li>Holding <code>Alt</code> when dragging a node will *remove* it from its group</li>
</ul>`,
"ja": `<p>エディタ上のグループの操作が変更されました。</p>
<ul>
<li>グループ内のノードをクリックする時にグループが邪魔をすることが無くなりました</li>
<li>前面へ移動背面へ移動の動作を用いて複数のグループの表示順序を変えることができます</li>
<li>グループ内へ一度に複数のノードをドラッグできるようになりました</li>
<li><code>Alt</code> ** </li>
</ul>`,
"fr": `<p>Nous avons modifié la façon dont vous interagissez avec les groupes dans l'éditeur.</p>
<ul>
<li>Ils ne gênent plus lorsque vous cliquez sur un noeud</li>
<li>Ils peuvent être réorganisés à l'aide des actions Avancer et Reculer</li>
<li>Plusieurs noeuds peuvent être glissés dans un groupe en une seule fois</li>
<li>Maintenir <code>Alt</code> lors du déplacement d'un noeud le *supprimera* de son groupe</li>
</ul>`
}
},
{
title: {
"en-US": "Change notification on tabs",
"ja": "タブ上の変更通知",
"fr": "Notification de changement sur les onglets"
},
image: 'images/tab-changes.png',
description: {
"en-US": `<p>When a tab contains undeployed changes it now shows the
same style of change icon used by nodes.</p>
<p>This will make it much easier to track down changes when you're
working across multiple flows.</p>`
same style of change icon used by nodes.</p>
<p>This will make it much easier to track down changes when you're
working across multiple flows.</p>`,
"ja": `<p>タブ内にデプロイされていない変更が存在する時は、ノードと同じスタイルで変更の印が表示されるようになりました。</p>
<p>これによって複数のフローを編集している時に変更を見つけるのが簡単になりました</p>`,
"fr": `<p>Lorsqu'un onglet contient des modifications non déployées, il affiche désormais le
même style d'icône de changement utilisé par les noeuds.</p>
<p>Cela facilitera grandement le suivi des modifications lorsque vous
travaillez sur plusieurs flux.</p>`
}
},
{
title: {
"en-US": "A bigger canvas to work with",
"ja": "より広くなった作業キャンバス",
"fr": "Un canevas plus grand pour travailler"
},
description: {
"en-US": `<p>The default canvas size has been increased so you can fit more
into one flow.</p>
<p>We still recommend using tools such as subflows and Link Nodes to help
keep things organised, but now you have more room to work in.</p>`
keep things organised, but now you have more room to work in.</p>`,
"ja": `<p>標準のキャンバスが広くなったため、1つのフローに沢山のものを含めることができるようになりました。</p>
<p>引き続きサブフローやリンクノードなどの方法を用いて整理することをお勧めしますが作業できる場所が増えました</p>`,
"fr": `<p>La taille par défaut du canevas a été augmentée pour que vous puissiez en mettre plus
sur un seul flux.</p>
<p>Nous recommandons toujours d'utiliser des outils tels que les sous-flux et les noeuds de lien pour vous aider
à garder les choses organisées, mais vous avez maintenant plus d'espace pour travailler.</p>`
}
},
{
title: {
"en-US": "Finding help",
"ja": "ヘルプを見つける",
"fr": "Trouver de l'aide"
},
image: 'images/node-help.png',
description: {
"en-US": `<p>All node edit dialogs now include a link to that node's help
in the footer.</p>
<p>Clicking it will open up the Help sidebar showing the help for that node.</p>`
}
},
{
title: {
"en-US": "And lots more...",
},
description: {
"en-US": `<p>Of course we have everything from 3.1.0-beta.1 as well....</p>`
<p>Clicking it will open up the Help sidebar showing the help for that node.</p>`,
"ja": `<p>全てのノードの編集ダイアログの下に、ノードのヘルプへのリンクが追加されました。</p>
<p>これをクリックするとノードのヘルプサイドバーが表示されます</p>`,
"fr": `<p>Toutes les boîtes de dialogue d'édition de noeud incluent désormais un lien vers l'aide de ce noeud
dans le pied de page.</p>
<p>Cliquer dessus ouvrira la barre latérale d'aide affichant l'aide pour ce noeud.</p>`
}
},
{
title: {
"en-US": "Improved Context Menu",
"ja": "コンテキストメニューの改善"
"ja": "コンテキストメニューの改善",
"fr": "Menu contextuel amélioré"
},
image: 'images/context-menu.png',
description: {
@ -83,13 +117,17 @@ export default {
with your flows much easier.</p>`,
"ja": `<p>より多くの組み込み動作を利用できるように、エディタのコンテキストメニューが拡張されました。</p>
<p>ノードの追加グループの操作その他の便利なツールをクリックするだけで実行できるようになりました</p>
<p>フローのタブバーにはフローの操作をより簡単にする独自のコンテキストメニューもあります</p>`
<p>フローのタブバーにはフローの操作をより簡単にする独自のコンテキストメニューもあります</p>`,
"fr": `<p>Le menu contextuel de l'éditeur a été étendu pour faire beaucoup plus d'actions intégrées disponibles.</p>
<p>Ajouter des noeuds, travailler avec des groupes et beaucoup d'autres outils utiles sont désormais à portée de clic.</p>
<p>La barre d'onglets de flux possède également son propre menu contextuel pour faciliter l'utilisation de vos flux.</p>`
}
},
{
title: {
"en-US": "Hiding Flows",
"ja": "フローを非表示"
"ja": "フローを非表示",
"fr": "Masquage de flux"
},
image: 'images/hiding-flows.png',
description: {
@ -97,13 +135,17 @@ export default {
<p>The 'hide' button in previous releases has been removed from the tabs
as they were being clicked accidentally too often.</p>`,
"ja": `<p>フローを非表示にする機能は、フローのコンテキストメニューから実行するようになりました。</p>
<p>これまでのリリースでタブに存在していた非表示ボタンはよく誤ってクリックされていたため削除されました</p>`
<p>これまでのリリースでタブに存在していた非表示ボタンはよく誤ってクリックされていたため削除されました</p>`,
"fr": `<p>Le masquage des flux s'effectue désormais via le menu contextuel du flux.</p>
<p>Le bouton "Masquer" des versions précédentes a été supprimé des onglets
car il était cliqué accidentellement trop souvent.</p>`
},
},
{
title: {
"en-US": "Locking Flows",
"ja": "フローを固定"
"ja": "フローを固定",
"fr": "Verrouillage de flux"
},
image: 'images/locking-flows.png',
description: {
@ -113,13 +155,18 @@ export default {
as well as in the Info sidebar explorer.</p>`,
"ja": `<p>誤ってフローに変更が加えられてしまうのを防ぐために、フローを固定できるようになりました。</p>
<p>固定されている時はノードを修正することはできません</p>
<p>フローのコンテキストメニューと情報サイドバーのエクスプローラにはフローの固定や解除をするためのオプションが用意されています</p>`
<p>フローのコンテキストメニューと情報サイドバーのエクスプローラにはフローの固定や解除をするためのオプションが用意されています</p>`,
"fr": `<p>Les flux peuvent désormais être verrouillés pour éviter toute modification accidentelle.</p>
<p>Lorsqu'il est verrouillé, vous ne pouvez en aucun cas modifier les noeuds.</p>
<p>Le menu contextuel du flux fournit les options pour verrouiller et déverrouiller les flux,
ainsi que dans l'explorateur de la barre latérale d'informations.</p>`
},
},
{
title: {
"en-US": "Adding Images to node/flow descriptions",
"ja": "ノードやフローの説明へ画像を追加"
"ja": "ノードやフローの説明へ画像を追加",
"fr": "Ajout d'images aux descriptions de noeud/flux"
},
// image: 'images/debug-path-tooltip.png',
description: {
@ -128,44 +175,56 @@ export default {
<p>When the description is shown in the Info sidebar, the image will be displayed.</p>`,
"ja": `<p>ノードまたはフローの説明に、画像を追加できるようになりました。</p>
<p>画像をテキストエディタにドラッグするだけで行内に埋め込まれます</p>
<p>情報サイドバーの説明を開くとその画像が表示されます</p>`
<p>情報サイドバーの説明を開くとその画像が表示されます</p>`,
"fr": `<p>Vous pouvez désormais ajouter des images à la description d'un noeud ou d'un flux.</p>
<p>Faites simplement glisser l'image dans l'éditeur de texte et elle sera ajoutée en ligne.</p>
<p>Lorsque la description s'affiche dans la barre latérale d'informations, l'image s'affiche.</p>`
},
},
{
title: {
"en-US": "Adding Mermaid Diagrams",
"ja": "Mermaidの図を追加"
"ja": "Mermaid図を追加",
"fr": "Ajout de diagrammes Mermaid"
},
image: 'images/mermaid.png',
description: {
"en-US": `<p>You can also add <a href="https://github.com/mermaid-js/mermaid">Mermaid</a> diagrams directly into your node or flow descriptions.</p>
<p>This gives you much richer options for documenting your flows.</p>`,
"ja": `<p>ノードやフローの説明に、<a href="https://github.com/mermaid-js/mermaid">Mermaid</a>の図を直接追加することもできます。</p>
<p>これによってフローを説明する文書作成の選択肢がより多くなります</p>`
"ja": `<p>ノードやフローの説明に、<a href="https://github.com/mermaid-js/mermaid">Mermaid</a>図を直接追加することもできます。</p>
<p>これによってフローを説明する文書作成の選択肢がより多くなります</p>`,
"fr": `<p>Vous pouvez également ajouter des diagrammes <a href="https://github.com/mermaid-js/mermaid">Mermaid</a> directement dans vos descriptions de noeud ou de flux.</p>
<p>Cela vous offre des options beaucoup plus riches pour documenter vos flux.</p>`
},
},
{
title: {
"en-US": "Managing Global Environment Variables",
"ja": "グローバル環境変数の管理"
"ja": "グローバル環境変数の管理",
"fr": "Gestion des variables d'environnement globales"
},
image: 'images/global-env-vars.png',
description: {
"en-US": `<p>You can set environment variables that apply to all nodes and flows in the new
'Global Environment Variables' section of User Settings.</p>`,
"ja": `<p>ユーザ設定に新しく追加された「大域環境変数」のセクションで、全てのノードとフローに適用される環境変数を登録できます。</p>`
"ja": `<p>ユーザ設定に新しく追加された「大域環境変数」のセクションで、全てのノードとフローに適用される環境変数を登録できます。</p>`,
"fr": `<p>Vous pouvez définir des variables d'environnement qui s'appliquent à tous les noeuds et flux dans la nouvelle
section "Global Environment Variables" des paramètres utilisateur.</p>`
},
},
{
title: {
"en-US": "Node Updates",
"ja": "ノードの更新"
"ja": "ノードの更新",
"fr": "Mises à jour des noeuds"
},
// image: "images/",
description: {
"en-US": `<p>The core nodes have received lots of minor fixes, documentation updates and
small enhancements. Check the full changelog in the Help sidebar for a full list.</p>`,
"ja": `<p>コアノードにマイナーな修正、ドキュメント更新、小規模な拡張が数多く追加されています。全ての一覧は、ヘルプサイドバーの全ての更新履歴を確認してください。</p>`
"ja": `<p>コアノードにマイナーな修正、ドキュメント更新、小規模な拡張が数多く追加されています。全ての一覧は、ヘルプサイドバーの全ての更新履歴を確認してください。</p>`,
"fr": `<p>Les noeuds principaux ont reçu de nombreux correctifs mineurs, mises à jour de la documentation et
petites améliorations. Consulter le journal des modifications complet dans la barre latérale d'aide.</p>`
}
}
]

View File

@ -1,6 +1,5 @@
/* NOTE: Do not edit directly! This file is generated using `npm run update-types` in https://github.com/node-red/nr-monaco-build */
/* NOTE: Do not edit directly! This file is generated using `npm run update-types` in https://github.com/Steve-Mcl/monaco-editor-esm-i18n */
interface NodeMessage {
topic?: string;
@ -281,5 +280,5 @@ declare class env {
* @example
* ```const flowName = env.get("NR_FLOW_NAME");```
*/
static get(name:string) :string;
static get(name:string) :any;
}

View File

@ -1279,6 +1279,7 @@ declare module 'crypto' {
interface VerifyKeyObjectInput extends SigningOptions {
key: KeyObject;
}
interface VerifyJsonWebKeyInput extends JsonWebKeyInput, SigningOptions {}
type KeyLike = string | Buffer | KeyObject;
/**
* The `Sign` class is a utility for generating signatures. It can be used in one
@ -1433,8 +1434,8 @@ declare module 'crypto' {
* be passed instead of a public key.
* @since v0.1.92
*/
verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView): boolean;
verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: string, signature_format?: BinaryToTextEncoding): boolean;
verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, signature: NodeJS.ArrayBufferView): boolean;
verify(object: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput, signature: string, signature_format?: BinaryToTextEncoding): boolean;
}
/**
* Creates a `DiffieHellman` key exchange object using the supplied `prime` and an
@ -2941,11 +2942,16 @@ declare module 'crypto' {
* If the `callback` function is provided this function uses libuv's threadpool.
* @since v12.0.0
*/
function verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput, signature: NodeJS.ArrayBufferView): boolean;
function verify(
algorithm: string | null | undefined,
data: NodeJS.ArrayBufferView,
key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput,
key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput,
signature: NodeJS.ArrayBufferView
): boolean;
function verify(
algorithm: string | null | undefined,
data: NodeJS.ArrayBufferView,
key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput | VerifyJsonWebKeyInput,
signature: NodeJS.ArrayBufferView,
callback: (error: Error | null, result: boolean) => void
): void;
@ -3094,12 +3100,13 @@ declare module 'crypto' {
*/
disableEntropyCache?: boolean | undefined;
}
type UUID = `${string}-${string}-${string}-${string}-${string}`;
/**
* Generates a random [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt) version 4 UUID. The UUID is generated using a
* cryptographic pseudorandom number generator.
* @since v15.6.0
*/
function randomUUID(options?: RandomUUIDOptions): string;
function randomUUID(options?: RandomUUIDOptions): UUID;
interface X509CheckOptions {
/**
* @default 'always'
@ -3558,7 +3565,7 @@ declare module 'crypto' {
* The UUID is generated using a cryptographic pseudorandom number generator.
* @since v16.7.0
*/
randomUUID(): string;
randomUUID(): UUID;
CryptoKey: CryptoKeyConstructor;
}
// This constructor throws ILLEGAL_CONSTRUCTOR so it should not be newable.

View File

@ -1,4 +0,0 @@
[ViewState]
Mode=
Vid=
FolderType=Generic

View File

@ -174,7 +174,7 @@ declare module 'dns' {
type: 'AAAA';
}
export interface CaaRecord {
critial: number;
critical: number;
issue?: string | undefined;
issuewild?: string | undefined;
iodef?: string | undefined;

View File

@ -56,7 +56,7 @@ interface AbortController {
/**
* Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted.
*/
abort(): void;
abort(reason?: any): void;
}
/** A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object. */

View File

@ -862,6 +862,105 @@ declare module 'stream' {
end(chunk: any, encoding?: BufferEncoding, cb?: () => void): this;
cork(): void;
uncork(): void;
/**
* Event emitter
* The defined events on documents including:
* 1. close
* 2. data
* 3. drain
* 4. end
* 5. error
* 6. finish
* 7. pause
* 8. pipe
* 9. readable
* 10. resume
* 11. unpipe
*/
addListener(event: 'close', listener: () => void): this;
addListener(event: 'data', listener: (chunk: any) => void): this;
addListener(event: 'drain', listener: () => void): this;
addListener(event: 'end', listener: () => void): this;
addListener(event: 'error', listener: (err: Error) => void): this;
addListener(event: 'finish', listener: () => void): this;
addListener(event: 'pause', listener: () => void): this;
addListener(event: 'pipe', listener: (src: Readable) => void): this;
addListener(event: 'readable', listener: () => void): this;
addListener(event: 'resume', listener: () => void): this;
addListener(event: 'unpipe', listener: (src: Readable) => void): this;
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
emit(event: 'close'): boolean;
emit(event: 'data', chunk: any): boolean;
emit(event: 'drain'): boolean;
emit(event: 'end'): boolean;
emit(event: 'error', err: Error): boolean;
emit(event: 'finish'): boolean;
emit(event: 'pause'): boolean;
emit(event: 'pipe', src: Readable): boolean;
emit(event: 'readable'): boolean;
emit(event: 'resume'): boolean;
emit(event: 'unpipe', src: Readable): boolean;
emit(event: string | symbol, ...args: any[]): boolean;
on(event: 'close', listener: () => void): this;
on(event: 'data', listener: (chunk: any) => void): this;
on(event: 'drain', listener: () => void): this;
on(event: 'end', listener: () => void): this;
on(event: 'error', listener: (err: Error) => void): this;
on(event: 'finish', listener: () => void): this;
on(event: 'pause', listener: () => void): this;
on(event: 'pipe', listener: (src: Readable) => void): this;
on(event: 'readable', listener: () => void): this;
on(event: 'resume', listener: () => void): this;
on(event: 'unpipe', listener: (src: Readable) => void): this;
on(event: string | symbol, listener: (...args: any[]) => void): this;
once(event: 'close', listener: () => void): this;
once(event: 'data', listener: (chunk: any) => void): this;
once(event: 'drain', listener: () => void): this;
once(event: 'end', listener: () => void): this;
once(event: 'error', listener: (err: Error) => void): this;
once(event: 'finish', listener: () => void): this;
once(event: 'pause', listener: () => void): this;
once(event: 'pipe', listener: (src: Readable) => void): this;
once(event: 'readable', listener: () => void): this;
once(event: 'resume', listener: () => void): this;
once(event: 'unpipe', listener: (src: Readable) => void): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
prependListener(event: 'close', listener: () => void): this;
prependListener(event: 'data', listener: (chunk: any) => void): this;
prependListener(event: 'drain', listener: () => void): this;
prependListener(event: 'end', listener: () => void): this;
prependListener(event: 'error', listener: (err: Error) => void): this;
prependListener(event: 'finish', listener: () => void): this;
prependListener(event: 'pause', listener: () => void): this;
prependListener(event: 'pipe', listener: (src: Readable) => void): this;
prependListener(event: 'readable', listener: () => void): this;
prependListener(event: 'resume', listener: () => void): this;
prependListener(event: 'unpipe', listener: (src: Readable) => void): this;
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
prependOnceListener(event: 'close', listener: () => void): this;
prependOnceListener(event: 'data', listener: (chunk: any) => void): this;
prependOnceListener(event: 'drain', listener: () => void): this;
prependOnceListener(event: 'end', listener: () => void): this;
prependOnceListener(event: 'error', listener: (err: Error) => void): this;
prependOnceListener(event: 'finish', listener: () => void): this;
prependOnceListener(event: 'pause', listener: () => void): this;
prependOnceListener(event: 'pipe', listener: (src: Readable) => void): this;
prependOnceListener(event: 'readable', listener: () => void): this;
prependOnceListener(event: 'resume', listener: () => void): this;
prependOnceListener(event: 'unpipe', listener: (src: Readable) => void): this;
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
removeListener(event: 'close', listener: () => void): this;
removeListener(event: 'data', listener: (chunk: any) => void): this;
removeListener(event: 'drain', listener: () => void): this;
removeListener(event: 'end', listener: () => void): this;
removeListener(event: 'error', listener: (err: Error) => void): this;
removeListener(event: 'finish', listener: () => void): this;
removeListener(event: 'pause', listener: () => void): this;
removeListener(event: 'pipe', listener: (src: Readable) => void): this;
removeListener(event: 'readable', listener: () => void): this;
removeListener(event: 'resume', listener: () => void): this;
removeListener(event: 'unpipe', listener: (src: Readable) => void): this;
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
}
type TransformCallback = (error?: Error | null, data?: any) => void;
interface TransformOptions extends DuplexOptions {

View File

@ -45,7 +45,7 @@ declare module 'node:test' {
function test(options?: TestOptions, fn?: TestFn): Promise<void>;
function test(fn?: TestFn): Promise<void>;
/**
/*
* @since v16.17.0
* @param name The name of the suite, which is displayed when reporting suite results.
* Default: The `name` property of fn, or `'<anonymous>'` if `fn` does not have a name.
@ -57,7 +57,7 @@ declare module 'node:test' {
function describe(options?: TestOptions, fn?: SuiteFn): void;
function describe(fn?: SuiteFn): void;
/**
/*
* @since v16.17.0
* @param name The name of the test, which is displayed when reporting test results.
* Default: The `name` property of fn, or `'<anonymous>'` if `fn` does not have a name.

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/

View File

@ -38,6 +38,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"alertErrorMessage": "Chyba: {0}",
"alertInfoMessage": "Informace: {0}",
"alertWarningMessage": "Upozornění: {0}",
"clearedInput": "Zadání se vymazalo",
"history.inputbox.hint": "pro historii"
},
"vs/base/browser/ui/keybindingLabel/keybindingLabel": {
@ -107,7 +108,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"diff-aria-navigation-tip": " k navigaci ve změnách použijte Shift+F7.",
"diff.tooLarge": "Nelze porovnat soubory, protože jeden soubor je příliš velký.",
"diffInsertIcon": "Dekorace řádku pro operace vložení do editoru rozdílů",
"diffRemoveIcon": "Dekorace řádku pro operace odebrání do editoru rozdílů"
"diffRemoveIcon": "Dekorace řádku pro operace odebrání do editoru rozdílů",
"revertChangeHoverMessage": "Kliknutím vrátíte změnu zpět."
},
"vs/editor/browser/widget/diffReview": {
"blankLine": "prázdné",
@ -138,9 +140,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/common/config/editorConfigurationSchema": {
"codeLens": "Určuje, jestli editor zobrazí CodeLens.",
"detectIndentation": "Určuje, jestli se {0} a {1} automaticky zjistí při otevření souboru na základě obsahu souboru.",
"diffAlgorithm.experimental": "Používá experimentální rozdílový algoritmus.",
"diffAlgorithm.smart": "Používá výchozí rozdílový algoritmus.",
"diffAlgorithm.advanced": "Používá pokročilý rozdílový algoritmus.",
"diffAlgorithm.legacy": "Používá starší rozdílový algoritmus.",
"editor.experimental.asyncTokenization": "Určuje, jestli se má tokenizace provádět asynchronně ve webovém pracovním procesu.",
"editor.experimental.asyncTokenizationLogging": "Určuje, jestli se má protokolovat asynchronní tokenizace. Pouze pro ladění.",
"editor.experimental.asyncTokenizationVerification": "Určuje, zda se má asynchronní tokenizace ověřit pomocí tokenizace starší verze pozadí. Může zpomalit tokenizaci. Pouze pro ladění.",
"editorConfigurationTitle": "Editor",
"ignoreTrimWhitespace": "Když je povoleno, editor rozdílů ignoruje změny v počátečních nebo koncových prázdných znacích.",
"indentSize": "Počet mezer použitých pro odsazení nebo „tabSize“ pro použití hodnoty z #editor.tabSize#. Toto nastavení se přepíše na základě obsahu souboru, když je zapnutá možnost #editor.detectIndentation#.",
@ -215,10 +219,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"cursorSurroundingLinesStyle.all": "cursorSurroundingLines se vynucuje vždy.",
"cursorSurroundingLinesStyle.default": "cursorSurroundingLines se vynucuje pouze v případě, že se aktivuje pomocí klávesnice nebo rozhraní API.",
"cursorWidth": "Určuje šířku kurzoru v případě, že má nastavení #editor.cursorStyle# hodnotu line.",
"defaultColorDecorators": "Určuje, jestli se mají zobrazovat dekorace vložených barev pomocí výchozího zprostředkovatele barev dokumentu.",
"definitionLinkOpensInPeek": "Určuje, jestli se má pomocí gesta myší Přejít k definici vždy otevřít widget náhledu.",
"deprecated": "Toto nastavení je zastaralé. Místo něj prosím použijte samostatné nastavení, například editor.suggest.showKeywords nebo editor.suggest.showSnippets.",
"dragAndDrop": "Určuje, jestli má editor povolit přesouvání vybraných položek přetažením.",
"dropIntoEditor.enabled": "Určuje, jestli můžete soubor přetáhnout do textového editoru podržením klávesy Shift (místo otevření souboru v editoru).",
"dropIntoEditor.showDropSelector": "Určuje, jestli se při přetažení souborů do editoru zobrazí widget. Tento widget umožňuje řídit, jak se soubor přetáhne.",
"dropIntoEditor.showDropSelector.afterDrop": "Po přetažení souboru do editoru zobrazte widget pro výběr přetažení.",
"dropIntoEditor.showDropSelector.never": "Nikdy nezobrazovat widget pro výběr přetažení. Místo toho se vždy použije výchozí zprostředkovatel přetažení.",
"editor.autoClosingBrackets.beforeWhitespace": "Automaticky k levým hranatým závorkám doplňovat pravé hranaté závorky, pouze pokud se kurzor nachází nalevo od prázdného znaku",
"editor.autoClosingBrackets.languageDefined": "Pomocí konfigurací jazyka můžete určit, kdy se mají k levým hranatým závorkám automaticky doplňovat pravé hranaté závorky.",
"editor.autoClosingDelete.auto": "Odebrat sousední koncové uvozovky nebo pravé hranaté závorky pouze v případě, že se vložily automaticky",
@ -266,8 +274,9 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editor.inlayHints.offUnlessPressed": "Vložené nápovědy jsou ve výchozím nastavení skryté a zobrazí se, když podržíte {0}.",
"editor.inlayHints.on": "Pomocné parametry pro vložené informace jsou povoleny.",
"editor.inlayHints.onUnlessPressed": "Vložené nápovědy se ve výchozím nastavení zobrazují a skryjí se, když podržíte {0}.",
"editor.stickyScroll": "Zobrazí vnořené aktuální obory během posouvání v horní části editoru.",
"editor.stickyScroll.": "Definuje maximální počet rychlých čar, které se mají zobrazit.",
"editor.stickyScroll.defaultModel": "Definuje model, který se má použít k určení, které řádky se mají přilepit. Pokud model osnovy neexistuje, nastaví se opět model zprostředkovatele skládání, který se vrátí na model odsazení. Toto pořadí je respektováno ve všech třech případech.",
"editor.stickyScroll.enabled": "Zobrazí vnořené aktuální obory během posouvání v horní části editoru.",
"editor.stickyScroll.maxLineCount": "Definuje maximální počet rychlých čar, které se mají zobrazit.",
"editor.suggest.matchOnWordStartOnly": "Pokud je povoleno filtrování IntelliSense, vyžaduje, aby se první znak shodoval na začátku slova. Například „c“ u „Console“ nebo „WebContext“, ale _ne_ na „description“. Pokud je funkce IntelliSense zakázaná, zobrazí se více výsledků, ale přesto je seřadí podle kvality shody.",
"editor.suggest.showClasss": "Pokud je povoleno, technologie IntelliSense zobrazí návrhy pro „class“.",
"editor.suggest.showColors": "Pokud je povoleno, technologie IntelliSense zobrazí návrhy pro „color“.",
@ -345,6 +354,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"inlineSuggest.showToolbar": "Určuje, kdy se má zobrazit panel nástrojů vložených návrhů.",
"inlineSuggest.showToolbar.always": "Pokaždé, když se zobrazí vložený návrh, zobrazí se panel nástrojů vložených návrhů.",
"inlineSuggest.showToolbar.onHover": "Při najetí myší na vložený návrh se zobrazí panel nástrojů vložených návrhů.",
"inlineSuggest.suppressSuggestions": "Určuje, jak vložené návrhy interagují s widgetem návrhů. Pokud je tato možnost povolená, widget návrhů se nezobrazí automaticky, pokud jsou k dispozici vložené návrhy.",
"letterSpacing": "Určuje mezery mezi písmeny v pixelech.",
"lineHeight": "Určuje výšku řádku. \r\n Při použití hodnoty 0 se automaticky vypočítá výška řádku z velikosti písma.\r\n Hodnoty mezi 0 a 8 se použijí jako multiplikátor s velikostí písma.\r\n Hodnoty větší nebo rovny 8 se použijí jako efektivní hodnoty.",
"lineNumbers": "Řídí zobrazování čísel řádků.",
@ -384,6 +394,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"padding.top": "Určuje velikost mezery mezi horním okrajem editoru a prvním řádkem.",
"parameterHints.cycle": "Určuje, jestli má nabídka tipů zůstat otevřená (cyklovat) nebo jestli se má při dosažení konce seznamu zavřít.",
"parameterHints.enabled": "Povoluje automaticky otevírané okno, které při psaní zobrazuje dokumentaci k parametrům a informace o typu.",
"pasteAs.enabled": "Určuje, jestli můžete obsah vkládat různými způsoby.",
"pasteAs.showPasteSelector": "Určuje, jestli se při vkládání souborů do editoru zobrazí widget. Tento widget umožňuje řídit způsob vložení souboru.",
"pasteAs.showPasteSelector.afterPaste": "Po vložení obsahu do editoru zobrazit widget pro výběr vložení.",
"pasteAs.showPasteSelector.never": "Nikdy nezobrazovat widget pro výběr vložení. Místo toho se vždy použije výchozí chování vkládání.",
"peekWidgetDefaultFocus": "Určuje, jestli má být ve widgetu náhledu fokus na vloženém (inline) editoru nebo stromu.",
"peekWidgetDefaultFocus.editor": "Při otevření náhledu přepnout fokus na editor",
"peekWidgetDefaultFocus.tree": "Při otevření náhledu přepnout fokus na strom",
@ -407,6 +421,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"rulers": "Vykreslovat svislá pravítka po určitém počtu neproporcionálních znaků. Pro více pravítek použijte více hodnot. Pokud je pole hodnot prázdné, nejsou vykreslena žádná pravítka.",
"rulers.color": "Barva tohoto pravítka editoru",
"rulers.size": "Počet neproporcionálních znaků, při kterém se toto pravítko editoru vykreslí",
"screenReaderAnnounceInlineSuggestion": "Určete, jestli čtečka obrazovky oznamuje vložené návrhy. Upozorňujeme, že v macOS s funkcí VoiceOver to nefunguje.",
"scrollBeyondLastColumn": "Určuje počet dalších znaků, po jejichž překročení se bude editor posouvat vodorovně.",
"scrollBeyondLastLine": "Určuje, jestli se editor bude posouvat za posledním řádkem.",
"scrollPredominantAxis": "Při současném posouvání ve svislém i vodorovném směru posouvat pouze podél dominantní osy. Zabrání vodorovnému posunu při svislém posouvání na trackpadu.",
@ -453,7 +468,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"suggest.showIcons": "Určuje, jestli mají být v návrzích zobrazené nebo skryté ikony.",
"suggest.showInlineDetails": "Určuje, jestli se mají podrobnosti návrhů zobrazovat společně s popiskem, nebo jenom ve widgetu podrobností.",
"suggest.showStatusBar": "Určuje viditelnost stavového řádku v dolní části widgetu návrhů.",
"suggest.snippetsPreventQuickSuggestions": "Určuje, jestli má aktivní fragment kódu zakazovat rychlé návrhy.",
"suggestFontSize": "Velikost písma widgetu návrhů. Při nastavení na hodnotu {0} je použita hodnota {1}.",
"suggestLineHeight": "Výška řádku widgetu návrhů. Při nastavení na hodnotu {0} je použita hodnota {1}. Minimální hodnota je 8.",
"suggestOnTriggerCharacters": "Určuje, jestli se mají při napsání aktivačních znaků automaticky zobrazovat návrhy.",
@ -575,6 +589,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorHasSelection": "Určuje, jestli editor má vybraný text.",
"editorHasSignatureHelpProvider": "Určuje, jestli editor má poskytovatele nápovědy k signatuře.",
"editorHasTypeDefinitionProvider": "Určuje, jestli editor má poskytovatele definic typů.",
"editorHoverFocused": "Určuje, jestli je fokus na najetí myší v editoru.",
"editorHoverVisible": "Určuje, jestli je najetí myší na editor viditelné.",
"editorLangId": "Identifikátor jazyka editoru",
"editorReadonly": "Určuje, jestli je editor jen pro čtení.",
@ -582,6 +597,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorTextFocus": "Určuje, jestli text editoru má fokus (kurzor bliká).",
"inCompositeEditor": "Určuje, jestli je editor součástí většího editoru (např. poznámkových bloků).",
"inDiffEditor": "Určuje, jestli je kontext editorem rozdílů.",
"isEmbeddedDiffEditor": "Určuje, jestli je kontext vloženým editorem rozdílů",
"standaloneColorPickerFocused": "Určuje, jestli je samostatný Výběr barvy zvýrazněný",
"standaloneColorPickerVisible": "Určuje, jestli je samostatný Výběr barvy viditelný",
"stickyScrollFocused": "Určuje, jestli je fokus na rychlém posouvání",
"stickyScrollVisible": "Určuje, jestli je rychlé posouvání viditelné",
"textInputFocus": "Určuje, jestli editor nebo vstup formátovaného textu mají fokus (kurzor bliká)."
},
"vs/editor/common/languages/modesRegistry": {
@ -592,6 +612,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/editor/common/standaloneStrings": {
"accessibilityHelpMessage": "Stisknutím kláves Alt+F1 zobrazíte možnosti usnadnění přístupu.",
"accessibilityHelpTitle": "Nápovědu k funkcím přístupnosti",
"auto_off": "Editor je nakonfigurovaný tak, aby nebyl nikdy optimalizovaný pro použití se čtečkou obrazovky, což v tuto chvíli není ten případ.",
"auto_on": "Editor je nakonfigurovaný tak, aby byl optimalizovaný pro použití se čtečkou obrazovky.",
"bulkEditServiceSummary": "V {1} souborech byl proveden tento počet oprav: {0}.",
@ -642,6 +663,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"miGoToBracket": "Přejít na hranatou &&závorku",
"overviewRulerBracketMatchForeground": "Barva značky přehledového pravítka pro odpovídající hranaté závorky",
"smartSelect.jumpBracket": "Přejít na hranatou závorku",
"smartSelect.removeBrackets": "Odebrat hranaté závorky",
"smartSelect.selectToBracket": "Vybrat po hranatou závorku"
},
"vs/editor/contrib/caretOperations/browser/caretOperations": {
@ -693,12 +715,15 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"organizeImports.label": "Uspořádat importy",
"quickfix.trigger.label": "Rychlá oprava...",
"refactor.label": "Refaktorovat...",
"refactor.preview.label": "Refaktorovat prostřednictvím Preview",
"source.label": "Zdrojová akce..."
},
"vs/editor/contrib/codeAction/browser/codeActionContributions": {
"showCodeActionHeaders": "Umožňuje povolit nebo zakázat zobrazování záhlaví skupin v nabídce Akce kódu."
},
"vs/editor/contrib/codeAction/browser/codeActionController": {
"hideMoreActions": "Skrývání se zakázalo",
"showMoreActions": "Zobrazit zakázané"
},
"vs/editor/contrib/codeAction/browser/codeActionMenu": {
"codeAction.widget.id.convert": "Přepsat...",
"codeAction.widget.id.extract": "Extrahovat...",
@ -709,10 +734,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"codeAction.widget.id.source": "Zdrojová akce",
"codeAction.widget.id.surround": "Uzavřít do…"
},
"vs/editor/contrib/codeAction/browser/codeActionUi": {
"hideMoreActions": "Skrývání se zakázalo",
"showMoreActions": "Zobrazit zakázané"
},
"vs/editor/contrib/codeAction/browser/lightBulbWidget": {
"codeAction": "Zobrazit akce kódu",
"codeActionWithKb": "Zobrazit akce kódu ({0})",
@ -722,7 +743,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"showLensOnLine": "Zobrazit příkazy CodeLens pro aktuální řádek"
},
"vs/editor/contrib/colorPicker/browser/colorPickerWidget": {
"clickToToggleColorOptions": "Kliknutím přepnete možnosti barev (rgb/hsl/hex)."
"clickToToggleColorOptions": "Kliknutím přepnete možnosti barev (rgb/hsl/hex).",
"closeIcon": "Ikona pro zavření výběru barvy"
},
"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions": {
"hideColorPicker": "Skrýt Výběr barvy",
"insertColorWithStandaloneColorPicker": "Vložit barvu přes samostatný Výběr barvy",
"mishowOrFocusStandaloneColorPicker": "&&Zobrazit nebo zvýraznit samostatný Výběr barvy",
"showOrFocusStandaloneColorPicker": "Zobrazit nebo zvýraznit samostatný Výběr barvy"
},
"vs/editor/contrib/comment/browser/comment": {
"comment.block": "Přepnout komentář k bloku",
@ -744,19 +772,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"context.minimap.slider.always": "Vždy",
"context.minimap.slider.mouseover": "Ukazatel myši"
},
"vs/editor/contrib/copyPaste/browser/copyPasteContribution": {
"pasteActions": "Povolí nebo zakáže spouštění úprav z rozšíření při vložení."
},
"vs/editor/contrib/copyPaste/browser/copyPasteController": {
"pasteProgressTitle": "Spouští se obslužné rutiny vložení..."
},
"vs/editor/contrib/cursorUndo/browser/cursorUndo": {
"cursor.redo": "Provést znovu akci kurzoru",
"cursor.undo": "Vrátit zpět akci kurzoru"
},
"vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution": {
"dropProgressTitle": "Spouští se obslužné rutiny přetažení…"
},
"vs/editor/contrib/editorState/browser/keybindingCancellation": {
"cancellableOperation": "Určuje, jestli editor spouští operaci, která se dá zrušit, např. Náhled na odkazy"
},
@ -768,6 +787,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"findMatchAction.goToMatch": "Přejít na shodu…",
"findMatchAction.inputPlaceHolder": "Zadejte číslo pro přechod na konkrétní shodu (mezi 1 a {0})",
"findMatchAction.inputValidationMessage": "Zadejte číslo mezi 1 a {0}.",
"findMatchAction.noResults": "Žádné shody. Zkuste hledat něco jiného.",
"findNextMatchAction": "Najít další",
"findPreviousMatchAction": "Najít předchozí",
"miFind": "&&Najít",
@ -934,8 +954,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/contrib/gotoSymbol/browser/referencesModel": {
"aria.fileReferences.1": "1 symbol v: {0}, úplná cesta: {1}",
"aria.fileReferences.N": "Symboly (celkem {0}) v: {1}, úplná cesta: {2}",
"aria.oneReference": "symbol v {0} na řádku {1} ve sloupci {2}",
"aria.oneReference.preview": "symbol v {0} na řádku {1} ve sloupci {2}, {3}",
"aria.oneReference": "v {0} na řádku {1} ve sloupci {2}",
"aria.oneReference.preview": "{0} v {1} na řádku {2} ve sloupci{3}",
"aria.result.0": "Nenašly se žádné výsledky.",
"aria.result.1": "V {0} byl nalezen 1 symbol.",
"aria.result.n1": "V {1} byl nalezen tento počet symbolů: {0}.",
@ -947,8 +967,17 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"location.kb": "Symbol {0} z {1}, {2} pro další"
},
"vs/editor/contrib/hover/browser/hover": {
"escapeFocusHover": "Najetí myší na fokus uvození",
"goToBottomHover": "Přechod dolů při přechodu myší",
"goToTopHover": "Přejít na horní najetí myší",
"pageDownHover": "Najetí myší o stránku dolů",
"pageUpHover": "Najetí myší o stránku nahoru",
"scrollDownHover": "Najetí myší na posouvání dolů",
"scrollLeftHover": "Posunout doleva při přechodu myší",
"scrollRightHover": "Posunout doprava při přechodu myší",
"scrollUpHover": "Najetí myší na posouvání nahoru",
"showDefinitionPreviewHover": "Zobrazit náhled definice při umístění ukazatele myši",
"showHover": "Zobrazit informace po umístění ukazatele myši"
"showOrFocusHover": "Zobrazit nebo zaměřit na najetí myší"
},
"vs/editor/contrib/hover/browser/markdownHoverParticipant": {
"modesContentHover.loading": "Načítání...",
@ -985,28 +1014,30 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"links.navigate.kb.meta": "ctrl + kliknutí",
"links.navigate.kb.meta.mac": "cmd + kliknutí"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextController": {
"vs/editor/contrib/inlineCompletions/browser/commands": {
"accept": "Přijmout",
"acceptLine": "Přijmout řádek",
"acceptWord": "Přijmout slovo",
"action.inlineSuggest.accept": "Přijmout vložený návrh",
"action.inlineSuggest.acceptNextLine": "Přijmout další řádek vloženého návrhu",
"action.inlineSuggest.acceptNextWord": "Přijmout další vložené slovo návrhu",
"action.inlineSuggest.alwaysShowToolbar": "Vždy zobrazit panel nástrojů",
"action.inlineSuggest.hide": "Hide Inline Suggestion (Skrýt vložený návrh)",
"action.inlineSuggest.showNext": "Zobrazit další vložený návrh",
"action.inlineSuggest.showPrevious": "Zobrazit předchozí vložený návrh",
"action.inlineSuggest.trigger": "Aktivovat vložený návrh",
"action.inlineSuggest.undo": "Vrátit zpět akci Přijmout slovo",
"action.inlineSuggest.trigger": "Aktivovat vložený návrh"
},
"vs/editor/contrib/inlineCompletions/browser/hoverParticipant": {
"inlineSuggestionFollows": "Návrh:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys": {
"alwaysShowInlineSuggestionToolbar": "Určuje, jestli má být panel nástrojů vložených návrhů vždy viditelný.",
"canUndoInlineSuggestion": "Určuje, jestli má vrácení vrátit vložený návrh zpět.",
"inlineSuggestionHasIndentation": "Určuje, jestli vložený návrh začíná prázdným znakem.",
"inlineSuggestionHasIndentationLessThanTabSize": "Určuje, zda vložený návrh začíná mezerou, která je menší, než jaká by byla vložena tabulátorem",
"inlineSuggestionVisible": "Určuje, jestli je vložený návrh viditelný.",
"undoAcceptWord": "Vrátit zpět akci Přijmout slovo"
"suppressSuggestions": "Určuje, jestli se mají návrhy pro aktuální návrh potlačit."
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant": {
"inlineSuggestionFollows": "Návrh:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineSuggestionHintsWidget": {
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget": {
"content": "{0} ({1})",
"next": "Další",
"parameterHintsNextIcon": "Ikona pro zobrazení další nápovědy k parametru",
@ -1237,8 +1268,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"WednesdayShort": "St"
},
"vs/editor/contrib/stickyScroll/browser/stickyScrollActions": {
"focusStickyScroll": "Fokus na rychlé posouvání",
"goToFocusedStickyScrollLine.title": "Přejít na rychlý posuvník s fokusem",
"miStickyScroll": "&&Rychlé posouvání",
"mifocusStickyScroll": "&&Fokus na rychlé posouvání",
"mitoggleStickyScroll": "&&Přepnout rychlé posouvání",
"selectEditor.title": "Vybrat editor",
"selectNextStickyScrollLine.title": "Výběr dalšího rychlého posuvníku",
"selectPreviousStickyScrollLine.title": "Výběr předchozího rychlého posuvníku",
"stickyScroll": "Rychlé posouvání",
"toggleStickyScroll": "Přepnout rychlé posouvání"
},
@ -1343,6 +1380,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"unicodeHighlight.adjustSettings": "Upravit nastavení",
"unicodeHighlight.allowCommonCharactersInLanguage": "Povolte znaky Unicode, které jsou v jazyce {0} častější.",
"unicodeHighlight.characterIsAmbiguous": "Znak {0} může být zaměněn se znakem {1}, který je ve zdrojovém kódu běžnější.",
"unicodeHighlight.characterIsAmbiguousASCII": "Může dojít k záměně znaku {0} se znakem ASCII {1}, který je ve zdrojovém kódu častější.",
"unicodeHighlight.characterIsInvisible": "Znak {0} není viditelný.",
"unicodeHighlight.characterIsNonBasicAscii": "Znak {0} není základní znak ASCII.",
"unicodeHighlight.configureUnicodeHighlightOptions": "Konfigurovat možnosti zvýraznění Unicode",
@ -1386,6 +1424,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/action/common/actionCommonCategories": {
"developer": "Vývojář",
"file": "Soubor",
"help": "Nápověda",
"preferences": "Předvolby",
"test": "Test",
@ -1448,6 +1487,19 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/platform/contextkey/browser/contextKeyService": {
"getContextKeyInfo": "Příkaz, který vrací informace o kontextových klíčích"
},
"vs/platform/contextkey/common/contextkey": {
"contextkey.parser.error.closingParenthesis": "pravá závorka „)“",
"contextkey.parser.error.emptyString": "Prázdný výraz kontextového klíče",
"contextkey.parser.error.emptyString.hint": "Nezapomněli jste napsat výraz? Můžete také nastavit false nebo true, aby vždy došlo k vyhodnocení jako false nebo true.",
"contextkey.parser.error.expectedButGot": "Očekáváno: {0}\r\nPřijato:{1}",
"contextkey.parser.error.noInAfterNot": "„In“ po „not“.",
"contextkey.parser.error.unexpectedEOF": "Neočekávaný konec výrazu",
"contextkey.parser.error.unexpectedEOF.hint": "Nezapomněli jste vložit kontextový klíč?",
"contextkey.parser.error.unexpectedToken": "Neočekávaný token",
"contextkey.parser.error.unexpectedToken.hint": "Nezapomněli jste před token vložit && nebo ||?",
"contextkey.scanner.errorForLinter": "Neočekávaný token.",
"contextkey.scanner.errorForLinterWithHint": "Neočekávaný token. Tip: {0}"
},
"vs/platform/contextkey/common/contextkeys": {
"inputFocus": "Určuje, jestli je fokus klávesnice uvnitř vstupního pole.",
"isIOS": "Určuje, jestli je operačním systémem iOS",
@ -1459,6 +1511,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"isWindows": "Určuje, jestli je operačním systémem Windows.",
"productQualityType": "Typ kvality VS Code"
},
"vs/platform/contextkey/common/scanner": {
"contextkey.scanner.hint.didYouForgetToEscapeSlash": "Nezapomněli jste uvozit znak lomítka (/)? Před řídicí znak vložte dvě zpětná lomítka, např. \\\\/.",
"contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote": "Nezapomněli jste nabídku otevřít nebo zavřít?",
"contextkey.scanner.hint.didYouMean1": "Měli jste na mysli {0}?",
"contextkey.scanner.hint.didYouMean2": "Měli jste na mysli {0} nebo {1}?",
"contextkey.scanner.hint.didYouMean3": "Měli jste na mysli {0}, {1} nebo {2}?"
},
"vs/platform/dialogs/common/dialogs": {
"cancelButton": "Zrušit",
"moreFile": "...nezobrazuje se 1 další soubor",
@ -1482,7 +1541,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/keybinding/common/abstractKeybindingService": {
"first.chord": "({0}) byla stisknuta. Čekání na druhou klávesu...",
"missing.chord": "Kombinace kláves ({0}, {1}) není příkaz."
"missing.chord": "Kombinace kláves ({0}, {1}) není příkaz.",
"next.chord": "Došlo ke stisknutí ({0}). Čeká se na další klíč akordu"
},
"vs/platform/list/browser/listService": {
"Fast Scroll Sensitivity": "Multiplikátor rychlosti posouvání při podržené klávese Alt",
@ -1624,7 +1684,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorWidgetBorder": "Barva ohraničení widgetů editoru. Tato barva se používá pouze tehdy, když widget používá ohraničení a barva není přepsána widgetem.",
"editorWidgetForeground": "Barva popředí widgetů editoru, například najít/nahradit",
"editorWidgetResizeBorder": "Barva ohraničení panelu pro změnu velikosti widgetů editoru. Barva se používá pouze tehdy, když widget používá ohraničení pro změnu velikosti a barva není přepsána widgetem.",
"errorBorder": "Barva ohraničení polí chyb v editoru",
"errorBorder": "Pokud je tato možnost nastavená, udává barvu dvojitého podtržení chyb v editoru.",
"errorForeground": "Celková barva popředí pro chybové zprávy. Tato barva se používá pouze v případě, že není přepsána některou komponentou.",
"findMatchHighlight": "Barva ostatních shod při vyhledávání. Barva nesmí být neprůhledná, aby se nepřekryly dekorace pod tím.",
"findMatchHighlightBorder": "Barva ohraničení ostatních shod při vyhledávání",
@ -1633,13 +1693,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"focusBorder": "Celková barva ohraničení pro prvky s fokusem. Tato barva se používá pouze v případě, že není přepsána některou komponentou.",
"foreground": "Celková barva popředí. Tato barva se používá pouze v případě, že není přepsána některou komponentou.",
"highlight": "Barva popředí seznamu nebo stromu pro zvýraznění shody při vyhledávání v rámci seznamu nebo stromu",
"hintBorder": "Barva ohraničení polí tipů v editoru",
"hintBorder": "Pokud je tato možnost nastavená, udává barvu dvojitého podtržení tipů v editoru.",
"hoverBackground": "Barva pozadí informací zobrazených v editoru při umístění ukazatele myši",
"hoverBorder": "Barva ohraničení pro informace zobrazené v editoru při umístění ukazatele myši",
"hoverForeground": "Barva popředí pro informace zobrazené v editoru při umístění ukazatele myši",
"hoverHighlight": "Zvýraznění pod slovem, pro které se zobrazují informace po umístění ukazatele myši. Barva nesmí být neprůhledná, aby se nepřekryly dekorace pod tím.",
"iconForeground": "Výchozí barva ikon na pracovní ploše",
"infoBorder": "Barva ohraničení polí informací v editoru",
"infoBorder": "Pokud je tato možnost nastavená, udává barvu dvojitého podtržení informací v editoru.",
"inputBoxActiveOptionBorder": "Barva ohraničení aktivovaných možností ve vstupních polích",
"inputBoxBackground": "Pozadí vstupního pole",
"inputBoxBorder": "Ohraničení vstupního pole",
@ -1673,7 +1733,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"listFilterWidgetBackground": "Barva pozadí widgetu filtru typu v seznamech a stromech",
"listFilterWidgetNoMatchesOutline": "Barva obrysu widgetu filtrování typů v seznamech a stromech, pokud neexistují žádné shody",
"listFilterWidgetOutline": "Barva obrysu widgetu filtrování typů v seznamech a stromech",
"listFilterWidgetShadow": "Barva stínování widgetu filtru typu v seznamech a stromech.",
"listFilterWidgetShadow": "Shadow color of the type filter widget in lists and trees.",
"listFocusAndSelectionOutline": "Barva obrysu seznamu nebo stromu pro položku s fokusem, pokud je seznam nebo strom aktivní a vybraný. Aktivní seznam nebo strom má fokus klávesnice, neaktivní nikoli.",
"listFocusBackground": "Barva pozadí seznamu nebo stromu pro položku s fokusem, pokud je seznam nebo strom aktivní. Aktivní seznam nebo strom má fokus klávesnice, neaktivní nikoli.",
"listFocusForeground": "Popředí seznamu nebo stromu pro položku s fokusem, pokud je seznam nebo strom aktivní. Aktivní seznam nebo strom má fokus klávesnice, neaktivní nikoli.",
@ -1734,6 +1794,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"scrollbarSliderActiveBackground": "Barva pozadí jezdce posuvníku při kliknutí na něj",
"scrollbarSliderBackground": "Barva pozadí jezdce posuvníku",
"scrollbarSliderHoverBackground": "Barva pozadí jezdce posuvníku při umístění ukazatele myši",
"search.resultsInfoForeground": "Barva textu ve zprávě o dokončení vyhledávacího viewletu.",
"searchEditor.editorFindMatchBorder": "Barva ohraničení shod vrácených vyhledávacím dotazem v editoru vyhledávání",
"searchEditor.queryMatch": "Barva shod vrácených vyhledávacím dotazem v editoru vyhledávání",
"selectionBackground": "Barva pozadí výběrů textu na pracovní ploše (např. ve vstupních polích nebo textových oblastech). Poznámka: Nevztahuje se na výběry v editoru.",
@ -1756,7 +1817,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"toolbarHoverOutline": "Obrys panelu nástrojů při najetí myší na akce",
"treeInactiveIndentGuidesStroke": "Barva tahu stromu pro vodítka odsazení, která nejsou aktivní.",
"treeIndentGuidesStroke": "Barva tahu stromu pro vodítka odsazení",
"warningBorder": "Barva ohraničení polí upozornění v editoru",
"warningBorder": "Pokud je tato možnost nastavená, udává barvu dvojitého podtržení upozornění v editoru.",
"widgetBorder": "Barva ohraničení widgetů, například pro hledání/nahrazení v rámci editoru.",
"widgetShadow": "Barva stínu widgetů, například pro hledání/nahrazení v rámci editoru"
},

View File

@ -38,6 +38,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"alertErrorMessage": "Fehler: {0}",
"alertInfoMessage": "Info: {0}",
"alertWarningMessage": "Warnung: {0}",
"clearedInput": "Gelöschte Eingabe",
"history.inputbox.hint": "für Verlauf"
},
"vs/base/browser/ui/keybindingLabel/keybindingLabel": {
@ -107,7 +108,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"diff-aria-navigation-tip": " verwenden Sie UMSCHALT+F7, um durch Änderungen zu navigieren.",
"diff.tooLarge": "Kann die Dateien nicht vergleichen, da eine Datei zu groß ist.",
"diffInsertIcon": "Zeilenformatierung für Einfügungen im Diff-Editor",
"diffRemoveIcon": "Zeilenformatierung für Entfernungen im Diff-Editor"
"diffRemoveIcon": "Zeilenformatierung für Entfernungen im Diff-Editor",
"revertChangeHoverMessage": "Klicken Sie, um die Änderung rückgängig zu machen"
},
"vs/editor/browser/widget/diffReview": {
"blankLine": "leer",
@ -138,9 +140,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/common/config/editorConfigurationSchema": {
"codeLens": "Steuert, ob der Editor CodeLens anzeigt.",
"detectIndentation": "Steuert, ob {0} und {1} automatisch erkannt werden, wenn eine Datei basierend auf dem Dateiinhalt geöffnet wird.",
"diffAlgorithm.experimental": "Verwendet einen experimentellen Vergleichsalgorithmus.",
"diffAlgorithm.smart": "Verwendet den Standardvergleichsalgorithmus.",
"diffAlgorithm.advanced": "Verwendet den erweiterten Vergleichsalgorithmus.",
"diffAlgorithm.legacy": "Verwendet den Legacyvergleichsalgorithmus.",
"editor.experimental.asyncTokenization": "Steuert, ob die Tokenisierung asynchron auf einem Webworker erfolgen soll.",
"editor.experimental.asyncTokenizationLogging": "Steuert, ob die asynchrone Tokenisierung protokolliert werden soll. Nur zum Debuggen.",
"editor.experimental.asyncTokenizationVerification": "Steuert, ob die asynchrone Tokenisierung anhand der Legacy-Hintergrundtokenisierung überprüft werden soll. Die Tokenisierung kann verlangsamt werden. Nur zum Debuggen.",
"editorConfigurationTitle": "Editor",
"ignoreTrimWhitespace": "Wenn aktiviert, ignoriert der Diff-Editor Änderungen an voran- oder nachgestellten Leerzeichen.",
"indentSize": "Die Anzahl von Leerzeichen, die für den Einzug oder „tabSize“ verwendet werden, um den Wert aus „#editor.tabSize#“ zu verwenden. Diese Einstellung wird basierend auf dem Dateiinhalt überschrieben, wenn „#editor.detectIndentation#“ aktiviert ist.",
@ -215,10 +219,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"cursorSurroundingLinesStyle.all": "\"cursorSurroundingLines\" wird immer erzwungen.",
"cursorSurroundingLinesStyle.default": "\"cursorSurroundingLines\" wird nur erzwungen, wenn die Auslösung über die Tastatur oder API erfolgt.",
"cursorWidth": "Steuert die Breite des Cursors, wenn `#editor.cursorStyle#` auf `line` festgelegt ist.",
"defaultColorDecorators": "Steuert, ob Inlinefarbdekorationen mithilfe des Standard-Dokumentfarbanbieters angezeigt werden sollen.",
"definitionLinkOpensInPeek": "Steuert, ob die Mausgeste \"Gehe zu Definition\" immer das Vorschauwidget öffnet.",
"deprecated": "Diese Einstellung ist veraltet. Verwenden Sie stattdessen separate Einstellungen wie \"editor.suggest.showKeywords\" oder \"editor.suggest.showSnippets\".",
"dragAndDrop": "Steuert, ob der Editor das Verschieben einer Auswahl per Drag and Drop zulässt.",
"dropIntoEditor.enabled": "Steuert, ob Sie eine Datei in einen Editor ziehen und ablegen können, indem Sie die UMSCHALTTASTE gedrückt halten (anstatt die Datei in einem Editor zu öffnen).",
"dropIntoEditor.showDropSelector": "Steuert, ob beim Ablegen von Dateien im Editor ein Widget angezeigt wird. Mit diesem Widget können Sie steuern, wie die Datei ablegt wird.",
"dropIntoEditor.showDropSelector.afterDrop": "Zeigt das Widget für die Dropdownauswahl an, nachdem eine Datei im Editor abgelegt wurde.",
"dropIntoEditor.showDropSelector.never": "Das Widget für die Ablageauswahl wird nie angezeigt. Stattdessen wird immer der Standardablageanbieter verwendet.",
"editor.autoClosingBrackets.beforeWhitespace": "Schließe Klammern nur automatisch, wenn der Cursor sich links von einem Leerzeichen befindet.",
"editor.autoClosingBrackets.languageDefined": "Verwenden Sie Sprachkonfigurationen, um zu bestimmen, wann Klammern automatisch geschlossen werden sollen.",
"editor.autoClosingDelete.auto": "Angrenzende schließende Anführungszeichen oder Klammern werden nur überschrieben, wenn sie automatisch eingefügt wurden.",
@ -266,8 +274,9 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editor.inlayHints.offUnlessPressed": "Inlayhinweise sind standardmäßig ausgeblendet. Sie werden angezeigt, wenn {0} gedrückt gehalten wird.",
"editor.inlayHints.on": "Inlay-Hinweise sind aktiviert",
"editor.inlayHints.onUnlessPressed": "Inlay-Hinweise werden standardmäßig angezeigt und ausgeblendet, wenn Sie {0} gedrückt halten",
"editor.stickyScroll": "Zeigt die geschachtelten aktuellen Bereiche während des Bildlaufs am oberen Rand des Editors an.",
"editor.stickyScroll.": "Definiert die maximale Anzahl fixierter Linien, die angezeigt werden sollen.",
"editor.stickyScroll.defaultModel": "Legt das Modell fest, das zur Bestimmung der zu fixierenden Linien verwendet wird. Existiert das Gliederungsmodell nicht, wird auf das Modell des Folding Providers zurückgegriffen, der wiederum auf das Einrückungsmodell zurückgreift. Diese Reihenfolge wird in allen drei Fällen beachtet.",
"editor.stickyScroll.enabled": "Zeigt die geschachtelten aktuellen Bereiche während des Bildlaufs am oberen Rand des Editors an.",
"editor.stickyScroll.maxLineCount": "Definiert die maximale Anzahl fixierter Linien, die angezeigt werden sollen.",
"editor.suggest.matchOnWordStartOnly": "Wenn dies aktiviert ist, erfordert die IntelliSense-Filterung, dass das erste Zeichen mit einem Wortanfang übereinstimmt, z. B. „c“ in „Console“ oder „WebContext“, aber _nicht_ bei „description“. Wenn diese Option deaktiviert ist, zeigt IntelliSense mehr Ergebnisse an, sortiert sie aber weiterhin nach der Übereinstimmungsqualität.",
"editor.suggest.showClasss": "Wenn aktiviert, zeigt IntelliSense \"class\"-Vorschläge an.",
"editor.suggest.showColors": "Wenn aktiviert, zeigt IntelliSense \"color\"-Vorschläge an.",
@ -345,6 +354,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"inlineSuggest.showToolbar": "Steuert, wann die Inlinevorschlagssymbolleiste angezeigt werden soll.",
"inlineSuggest.showToolbar.always": "Die Symbolleiste „Inline-Vorschlag“ anzeigen, wenn ein Inline-Vorschlag angezeigt wird.",
"inlineSuggest.showToolbar.onHover": "Die Symbolleiste „Inline-Vorschlag“ anzeigen, wenn Sie mit dem Mauszeiger auf einen Inline-Vorschlag zeigen.",
"inlineSuggest.suppressSuggestions": "Steuert, wie Inlinevorschläge mit dem Vorschlagswidget interagieren. Wenn diese Option aktiviert ist, wird das Vorschlagswidget nicht automatisch angezeigt, wenn Inlinevorschläge verfügbar sind.",
"letterSpacing": "Legt den Abstand der Buchstaben in Pixeln fest.",
"lineHeight": "Steuert die Zeilenhöhe. \r\n Verwenden Sie 0, um die Zeilenhöhe automatisch anhand des Schriftgrads zu berechnen.\r\n Werte zwischen 0 und 8 werden als Multiplikator mit dem Schriftgrad verwendet.\r\n Werte größer oder gleich 8 werden als effektive Werte verwendet.",
"lineNumbers": "Steuert die Anzeige von Zeilennummern.",
@ -384,6 +394,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"padding.top": "Steuert den Abstand zwischen dem oberen Rand des Editors und der ersten Zeile.",
"parameterHints.cycle": "Steuert, ob das Menü mit Parameterhinweisen zyklisch ist oder sich am Ende der Liste schließt.",
"parameterHints.enabled": "Aktiviert ein Pop-up, das Dokumentation und Typ eines Parameters anzeigt während Sie tippen.",
"pasteAs.enabled": "Steuert, ob Sie Inhalte auf unterschiedliche Weise einfügen können.",
"pasteAs.showPasteSelector": "Steuert, ob beim Einfügen von Inhalt im Editor ein Widget angezeigt wird. Mit diesem Widget können Sie steuern, wie die Datei eingefügt wird.",
"pasteAs.showPasteSelector.afterPaste": "Das Widget für die Einfügeauswahl anzeigen, nachdem der Inhalt in den Editor eingefügt wurde.",
"pasteAs.showPasteSelector.never": "Das Widget für die Einfügeauswahl wird nie angezeigt. Stattdessen wird immer das Standardeinfügeverhalten verwendet.",
"peekWidgetDefaultFocus": "Steuert, ob der Inline-Editor oder die Struktur im Peek-Widget fokussiert werden soll.",
"peekWidgetDefaultFocus.editor": "Editor fokussieren, wenn Sie den Peek-Editor öffnen",
"peekWidgetDefaultFocus.tree": "Struktur beim Öffnen des Peek-Editors fokussieren",
@ -407,6 +421,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"rulers": "Vertikale Linien nach einer bestimmten Anzahl von Monospacezeichen rendern. Verwenden Sie mehrere Werte für mehrere Linien. Wenn das Array leer ist, werden keine Linien gerendert.",
"rulers.color": "Farbe dieses Editor-Lineals.",
"rulers.size": "Anzahl der Zeichen aus Festbreitenschriftarten, ab der dieses Editor-Lineal gerendert wird.",
"screenReaderAnnounceInlineSuggestion": "Steuern Sie, ob Inlinevorschläge von einer Sprachausgabe gelesen werden. Beachten Sie, dass dies unter macOS mit VoiceOver nicht funktioniert.",
"scrollBeyondLastColumn": "Steuert die Anzahl der zusätzlichen Zeichen, nach denen der Editor horizontal scrollt.",
"scrollBeyondLastLine": "Steuert, ob der Editor jenseits der letzten Zeile scrollen wird.",
"scrollPredominantAxis": "Nur entlang der vorherrschenden Achse scrollen, wenn gleichzeitig vertikal und horizontal gescrollt wird. Dadurch wird ein horizontaler Versatz beim vertikalen Scrollen auf einem Trackpad verhindert.",
@ -453,7 +468,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"suggest.showIcons": "Steuert, ob Symbole in Vorschlägen ein- oder ausgeblendet werden.",
"suggest.showInlineDetails": "Steuert, ob Vorschlagsdetails inline mit der Bezeichnung oder nur im Detailwidget angezeigt werden.",
"suggest.showStatusBar": "Steuert die Sichtbarkeit der Statusleiste unten im Vorschlagswidget.",
"suggest.snippetsPreventQuickSuggestions": "Steuert, ob ein aktiver Schnipsel verhindert, dass der Bereich \"Schnelle Vorschläge\" angezeigt wird.",
"suggestFontSize": "Schriftgrad für das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet.",
"suggestLineHeight": "Linienhöhe für das Vorschlagswidget. Bei Festlegung auf {0} wird der Wert von {1} verwendet. Der Mindestwert ist 8.",
"suggestOnTriggerCharacters": "Steuert, ob Vorschläge automatisch angezeigt werden sollen, wenn Triggerzeichen eingegeben werden.",
@ -575,6 +589,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorHasSelection": "Gibt an, ob im Editor Text ausgewählt ist.",
"editorHasSignatureHelpProvider": "Gibt an, ob der Editor über einen Signaturhilfeanbieter verfügt.",
"editorHasTypeDefinitionProvider": "Gibt an, ob der Editor über einen Typdefinitionsanbieter verfügt.",
"editorHoverFocused": "Gibt an, ob Daraufzeigen im Editor fokussiert ist.",
"editorHoverVisible": "Gibt an, ob Hover im Editor sichtbar ist.",
"editorLangId": "Der Sprachbezeichner des Editors.",
"editorReadonly": "Gibt an, ob der Editor schreibgeschützt ist.",
@ -582,6 +597,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorTextFocus": "Gibt an, ob der Editor-Text den Fokus besitzt (Cursor blinkt).",
"inCompositeEditor": "Gibt an, ob der Editor Bestandteil eines größeren Editors ist (z. B. Notebooks).",
"inDiffEditor": "Gibt an, ob der Kontext ein Diff-Editor ist.",
"isEmbeddedDiffEditor": "Gibt an, ob der Kontext ein eingebetteter Diff-Editor ist.",
"standaloneColorPickerFocused": "Gibt an, ob der eigenständige Farbwähler fokussiert ist.",
"standaloneColorPickerVisible": "Gibt an, ob der eigenständige Farbwähler sichtbar ist.",
"stickyScrollFocused": "Gibt an, ob der Fokus auf dem Fixierten Bildlauf liegt.",
"stickyScrollVisible": "Gibt an, ob der Fixierte Bildlauf sichtbar ist.",
"textInputFocus": "Gibt an, ob ein Editor oder eine Rich-Text-Eingabe den Fokus besitzt (Cursor blinkt)."
},
"vs/editor/common/languages/modesRegistry": {
@ -592,6 +612,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/editor/common/standaloneStrings": {
"accessibilityHelpMessage": "Drücken Sie ALT + F1, um die Barrierefreiheitsoptionen aufzurufen.",
"accessibilityHelpTitle": "Hilfe zur Barrierefreiheit",
"auto_off": "Der Editor ist so konfiguriert, dass er nie auf die Verwendung mit Sprachausgabe hin optimiert wird. Dies ist zu diesem Zeitpunkt nicht der Fall.",
"auto_on": "Der Editor ist auf eine optimale Verwendung mit Sprachausgabe konfiguriert.",
"bulkEditServiceSummary": "{0} Bearbeitungen in {1} Dateien durchgeführt",
@ -642,6 +663,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"miGoToBracket": "Gehe zu &&Klammer",
"overviewRulerBracketMatchForeground": "Übersichtslineal-Markierungsfarbe für zusammengehörige Klammern.",
"smartSelect.jumpBracket": "Gehe zu Klammer",
"smartSelect.removeBrackets": "Klammern entfernen",
"smartSelect.selectToBracket": "Auswählen bis Klammer"
},
"vs/editor/contrib/caretOperations/browser/caretOperations": {
@ -693,12 +715,15 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"organizeImports.label": "Importe organisieren",
"quickfix.trigger.label": "Schnelle Problembehebung ...",
"refactor.label": "Refactoring durchführen...",
"refactor.preview.label": "Mit Vorschau umgestalten...",
"source.label": "Quellaktion..."
},
"vs/editor/contrib/codeAction/browser/codeActionContributions": {
"showCodeActionHeaders": "Aktivieren/Deaktivieren Sie die Anzeige von Gruppenheadern im Codeaktionsmenü."
},
"vs/editor/contrib/codeAction/browser/codeActionController": {
"hideMoreActions": "Deaktivierte Elemente ausblenden",
"showMoreActions": "Deaktivierte Elemente anzeigen"
},
"vs/editor/contrib/codeAction/browser/codeActionMenu": {
"codeAction.widget.id.convert": "Erneut generieren...",
"codeAction.widget.id.extract": "Extrahieren...",
@ -709,10 +734,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"codeAction.widget.id.source": "Quellaktion...",
"codeAction.widget.id.surround": "Umgeben mit..."
},
"vs/editor/contrib/codeAction/browser/codeActionUi": {
"hideMoreActions": "Deaktivierte Elemente ausblenden",
"showMoreActions": "Deaktivierte Elemente anzeigen"
},
"vs/editor/contrib/codeAction/browser/lightBulbWidget": {
"codeAction": "Codeaktionen anzeigen",
"codeActionWithKb": "Codeaktionen anzeigen ({0})",
@ -722,7 +743,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"showLensOnLine": "CodeLens-Befehle für aktuelle Zeile anzeigen"
},
"vs/editor/contrib/colorPicker/browser/colorPickerWidget": {
"clickToToggleColorOptions": "Zum Umschalten zwischen Farboptionen (rgb/hsl/hex) klicken"
"clickToToggleColorOptions": "Zum Umschalten zwischen Farboptionen (rgb/hsl/hex) klicken",
"closeIcon": "Symbol zum Schließen des Farbwählers"
},
"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions": {
"hideColorPicker": "Farbwähler ausblenden",
"insertColorWithStandaloneColorPicker": "Farbe mit eigenständigem Farbwähler einfügen",
"mishowOrFocusStandaloneColorPicker": "&&Eigenständige Farbwähler anzeigen oder fokussieren",
"showOrFocusStandaloneColorPicker": "Eigenständige Farbwähler anzeigen oder konzentrieren"
},
"vs/editor/contrib/comment/browser/comment": {
"comment.block": "Blockkommentar umschalten",
@ -744,19 +772,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"context.minimap.slider.always": "Immer",
"context.minimap.slider.mouseover": "Maus über"
},
"vs/editor/contrib/copyPaste/browser/copyPasteContribution": {
"pasteActions": "Aktivieren/Deaktivieren der Ausführung von Bearbeitungen von Erweiterungen beim Einfügen."
},
"vs/editor/contrib/copyPaste/browser/copyPasteController": {
"pasteProgressTitle": "Einfügehandler werden ausgeführt..."
},
"vs/editor/contrib/cursorUndo/browser/cursorUndo": {
"cursor.redo": "Wiederholen mit Cursor",
"cursor.undo": "Mit Cursor rückgängig machen"
},
"vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution": {
"dropProgressTitle": "Drophandler werden ausgeführt..."
},
"vs/editor/contrib/editorState/browser/keybindingCancellation": {
"cancellableOperation": "Gibt an, ob der Editor einen abbrechbaren Vorgang ausführt, z. B. \"Verweisvorschau\"."
},
@ -768,6 +787,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"findMatchAction.goToMatch": "Zu Übereinstimmung wechseln ...",
"findMatchAction.inputPlaceHolder": "Geben Sie eine Zahl ein, um zu einer bestimmten Übereinstimmung zu wechseln (zwischen 1 und {0}).",
"findMatchAction.inputValidationMessage": "Zahl zwischen 1 und {0} eingeben",
"findMatchAction.noResults": "Keine Übereinstimmungen. Versuchen Sie, nach etwas anderem zu suchen.",
"findNextMatchAction": "Weitersuchen",
"findPreviousMatchAction": "Vorheriges Element suchen",
"miFind": "&&Suchen",
@ -934,8 +954,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/contrib/gotoSymbol/browser/referencesModel": {
"aria.fileReferences.1": "1 Symbol in {0}, vollständiger Pfad {1}",
"aria.fileReferences.N": "{0} Symbole in {1}, vollständiger Pfad {2}",
"aria.oneReference": "Symbol in {0} in Zeile {1}, Spalte {2}",
"aria.oneReference.preview": "Symbol in \"{0}\" in Zeile {1}, Spalte {2}, {3}",
"aria.oneReference": "in {0} in Zeile {1} in Spalte {2}",
"aria.oneReference.preview": "{0} in {1} in Zeile {2} in Spalte {3}",
"aria.result.0": "Es wurden keine Ergebnisse gefunden.",
"aria.result.1": "1 Symbol in {0} gefunden",
"aria.result.n1": "{0} Symbole in {1} gefunden",
@ -947,8 +967,17 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"location.kb": "Symbol {0} von {1}, {2} für nächstes"
},
"vs/editor/contrib/hover/browser/hover": {
"escapeFocusHover": "Fokus entfernen beim Daraufzeigen",
"goToBottomHover": "Gehe nach unten beim Daraufzeigen",
"goToTopHover": "Gehe nach oben beim Daraufzeigen",
"pageDownHover": "Eine Seite nach unten beim Daraufzeigen",
"pageUpHover": "Eine Seite nach oben beim Daraufzeigen",
"scrollDownHover": "Bildlauf nach unten beim Daraufzeigen",
"scrollLeftHover": "Bildlauf nach links beim Daraufzeigen",
"scrollRightHover": "Bildlauf nach rechts beim Daraufzeigen",
"scrollUpHover": "Bildlauf nach oben beim Daraufzeigen",
"showDefinitionPreviewHover": "Definitionsvorschauhover anzeigen",
"showHover": "Hovern anzeigen"
"showOrFocusHover": "Anzeigen oder Fokus beim Daraufzeigen"
},
"vs/editor/contrib/hover/browser/markdownHoverParticipant": {
"modesContentHover.loading": "Wird geladen...",
@ -985,28 +1014,30 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"links.navigate.kb.meta": "STRG + Klicken",
"links.navigate.kb.meta.mac": "BEFEHL + Klicken"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextController": {
"vs/editor/contrib/inlineCompletions/browser/commands": {
"accept": "Annehmen",
"acceptLine": "Zeile annehmen",
"acceptWord": "Wort annehmen",
"action.inlineSuggest.accept": "Inline-Vorschlag annehmen",
"action.inlineSuggest.acceptNextLine": "Nächste Zeile des Inlinevorschlags akzeptieren",
"action.inlineSuggest.acceptNextWord": "Nächstes Wort des Inline-Vorschlags annehmen",
"action.inlineSuggest.alwaysShowToolbar": "Symbolleiste immer anzeigen",
"action.inlineSuggest.hide": "Inlinevorschlag ausblenden",
"action.inlineSuggest.showNext": "Nächsten Inline-Vorschlag anzeigen",
"action.inlineSuggest.showPrevious": "Vorherigen Inline-Vorschlag anzeigen",
"action.inlineSuggest.trigger": "Inline-Vorschlag auslösen",
"action.inlineSuggest.undo": "\"Wort annehmen\" rückgängig machen",
"action.inlineSuggest.trigger": "Inline-Vorschlag auslösen"
},
"vs/editor/contrib/inlineCompletions/browser/hoverParticipant": {
"inlineSuggestionFollows": "Vorschlag:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys": {
"alwaysShowInlineSuggestionToolbar": "Gibt an, ob die Symbolleiste „Inline-Vorschlag“ immer sichtbar sein soll.",
"canUndoInlineSuggestion": "Gibt an, ob ein Inlinevorschlag rückgängig machen würde.",
"inlineSuggestionHasIndentation": "Gibt an, ob der Inline-Vorschlag mit Leerzeichen beginnt.",
"inlineSuggestionHasIndentationLessThanTabSize": "Ob der Inline-Vorschlag mit Leerzeichen beginnt, das kleiner ist als das, was durch die Tabulatortaste eingefügt werden würde",
"inlineSuggestionVisible": "Gibt an, ob ein Inline-Vorschlag sichtbar ist.",
"undoAcceptWord": "\"Wort annehmen\" rückgängig machen"
"suppressSuggestions": "Gibt an, ob Vorschläge für den aktuellen Vorschlag unterdrückt werden sollen"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant": {
"inlineSuggestionFollows": "Vorschlag:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineSuggestionHintsWidget": {
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget": {
"content": "{0} ({1})",
"next": "Weiter",
"parameterHintsNextIcon": "Symbol für die Anzeige des nächsten Parameterhinweises.",
@ -1237,8 +1268,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"WednesdayShort": "Mi"
},
"vs/editor/contrib/stickyScroll/browser/stickyScrollActions": {
"focusStickyScroll": "Fokus auf Fixierten Bildlauf",
"goToFocusedStickyScrollLine.title": "Gehe zur fokussierten fixierten Zeile",
"miStickyScroll": "&&Fixierter Bildlauf",
"mifocusStickyScroll": "&&Fokus fixierter Bildlauf",
"mitoggleStickyScroll": "Fixierten Bildlauf &&umschalten",
"selectEditor.title": "Editor auswählen",
"selectNextStickyScrollLine.title": "Nächste fixierte Zeile auswählen",
"selectPreviousStickyScrollLine.title": "Zuletzt gewählte fixierte Zeile auswählen",
"stickyScroll": "Fixierter Bildlauf",
"toggleStickyScroll": "Fixierten Bildlauf umschalten"
},
@ -1343,6 +1380,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"unicodeHighlight.adjustSettings": "Einstellungen anpassen",
"unicodeHighlight.allowCommonCharactersInLanguage": "Unicodezeichen zulassen, die in der Sprache „{0}“ häufiger vorkommen.",
"unicodeHighlight.characterIsAmbiguous": "Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode häufiger vorkommt.",
"unicodeHighlight.characterIsAmbiguousASCII": "Das Zeichen {0} kann mit dem Zeichen {1} verwechselt werden, was im Quellcode häufiger vorkommt.",
"unicodeHighlight.characterIsInvisible": "Das Zeichen {0} ist nicht sichtbar.",
"unicodeHighlight.characterIsNonBasicAscii": "Das Zeichen {0} ist kein einfaches ASCII-Zeichen.",
"unicodeHighlight.configureUnicodeHighlightOptions": "Konfigurieren der Optionen für die Unicode-Hervorhebung",
@ -1386,6 +1424,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/action/common/actionCommonCategories": {
"developer": "Entwickler",
"file": "Datei",
"help": "Hilfe",
"preferences": "Einstellungen",
"test": "Test",
@ -1448,6 +1487,19 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/platform/contextkey/browser/contextKeyService": {
"getContextKeyInfo": "Ein Befehl, der Informationen zu Kontextschlüsseln zurückgibt"
},
"vs/platform/contextkey/common/contextkey": {
"contextkey.parser.error.closingParenthesis": "schließende Klammer „)“",
"contextkey.parser.error.emptyString": "Leerer Kontextschlüsselausdruck",
"contextkey.parser.error.emptyString.hint": "Haben Sie vergessen, einen Ausdruck zu schreiben? Sie können auch „false“ oder „true“ festlegen, um immer auf „false“ oder „true“ auszuwerten.",
"contextkey.parser.error.expectedButGot": "Erwartet: {0}\r\nEmpfangen: „{1}“.",
"contextkey.parser.error.noInAfterNot": "„in“ nach „not“.",
"contextkey.parser.error.unexpectedEOF": "Unerwartetes Ende des Ausdrucks.",
"contextkey.parser.error.unexpectedEOF.hint": "Haben Sie vergessen, einen Kontextschlüssel zu setzen?",
"contextkey.parser.error.unexpectedToken": "Unerwartetes Token",
"contextkey.parser.error.unexpectedToken.hint": "Haben Sie vergessen, && oder || vor dem Token einzufügen?",
"contextkey.scanner.errorForLinter": "Unerwartetes Token.",
"contextkey.scanner.errorForLinterWithHint": "Unerwartetes Token. Hinweis: {0}"
},
"vs/platform/contextkey/common/contextkeys": {
"inputFocus": "Gibt an, ob sich der Tastaturfokus in einem Eingabefeld befindet.",
"isIOS": "Gibt an, ob iOS als Betriebssystem verwendet wird.",
@ -1459,6 +1511,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"isWindows": "Gibt an, ob Windows als Betriebssystem verwendet wird.",
"productQualityType": "Qualitätstyp des VS Codes"
},
"vs/platform/contextkey/common/scanner": {
"contextkey.scanner.hint.didYouForgetToEscapeSlash": "Haben Sie vergessen, das Zeichen „/“ (Schrägstrich) zu escapen? Setzen Sie zwei Backslashes davor, um es zu escapen, z. B. „\\\\/“.",
"contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote": "Haben Sie vergessen, das Anführungszeichen zu öffnen oder zu schließen?",
"contextkey.scanner.hint.didYouMean1": "Meinten Sie {0}?",
"contextkey.scanner.hint.didYouMean2": "Meinten Sie {0} oder {1}?",
"contextkey.scanner.hint.didYouMean3": "Meinten Sie {0}, {1} oder {2}?"
},
"vs/platform/dialogs/common/dialogs": {
"cancelButton": "Abbrechen",
"moreFile": "...1 weitere Datei wird nicht angezeigt",
@ -1482,7 +1541,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/keybinding/common/abstractKeybindingService": {
"first.chord": "({0}) wurde gedrückt. Es wird auf die zweite Taste in der Kombination gewartet...",
"missing.chord": "Die Tastenkombination ({0}, {1}) ist kein Befehl."
"missing.chord": "Die Tastenkombination ({0}, {1}) ist kein Befehl.",
"next.chord": "({0}) wurde gedrückt. Es wird auf die zweite Taste in der Kombination gewartet..."
},
"vs/platform/list/browser/listService": {
"Fast Scroll Sensitivity": "Multiplikator für Scrollgeschwindigkeit bei Drücken von ALT.",
@ -1624,7 +1684,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorWidgetBorder": "Rahmenfarbe von Editorwigdets. Die Farbe wird nur verwendet, wenn für das Widget ein Rahmen verwendet wird und die Farbe nicht von einem Widget überschrieben wird.",
"editorWidgetForeground": "Vordergrundfarbe für Editorwidgets wie Suchen/Ersetzen.",
"editorWidgetResizeBorder": "Rahmenfarbe der Größenanpassungsleiste von Editorwigdets. Die Farbe wird nur verwendet, wenn für das Widget ein Größenanpassungsrahmen verwendet wird und die Farbe nicht von einem Widget außer Kraft gesetzt wird.",
"errorBorder": "Randfarbe von Fehlerfeldern im Editor.",
"errorBorder": "Wenn festgelegt, wird die Farbe doppelter Unterstreichungen für Fehler im Editor angezeigt.",
"errorForeground": "Allgemeine Vordergrundfarbe für Fehlermeldungen. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.",
"findMatchHighlight": "Farbe der anderen Suchergebnisse. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.",
"findMatchHighlightBorder": "Randfarbe der anderen Suchtreffer.",
@ -1633,13 +1693,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"focusBorder": "Allgemeine Rahmenfarbe für fokussierte Elemente. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.",
"foreground": "Allgemeine Vordergrundfarbe. Diese Farbe wird nur verwendet, wenn sie nicht durch eine Komponente überschrieben wird.",
"highlight": "Vordergrundfarbe der Liste/Struktur zur Trefferhervorhebung beim Suchen innerhalb der Liste/Struktur.",
"hintBorder": "Randfarbe der Hinweisfelder im Editor.",
"hintBorder": "Wenn festgelegt, wird die Farbe doppelter Unterstreichungen für Hinweise im Editor angezeigt.",
"hoverBackground": "Hintergrundfarbe des Editor-Mauszeigers.",
"hoverBorder": "Rahmenfarbe des Editor-Mauszeigers.",
"hoverForeground": "Vordergrundfarbe des Editor-Mauszeigers",
"hoverHighlight": "Hervorhebung unterhalb des Worts, für das ein Hoverelement angezeigt wird. Die Farbe darf nicht deckend sein, weil sie sonst die zugrunde liegenden Dekorationen verdeckt.",
"iconForeground": "Die für Symbole in der Workbench verwendete Standardfarbe.",
"infoBorder": "Randfarbe der Infofelder im Editor.",
"infoBorder": "Wenn festgelegt, wird die Farbe doppelter Unterstreichungen für Infos im Editor angezeigt.",
"inputBoxActiveOptionBorder": "Rahmenfarbe für aktivierte Optionen in Eingabefeldern.",
"inputBoxBackground": "Hintergrund für Eingabefeld.",
"inputBoxBorder": "Rahmen für Eingabefeld.",
@ -1673,7 +1733,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"listFilterWidgetBackground": "Hintergrundfarbe des Typfilterwidgets in Listen und Strukturen.",
"listFilterWidgetNoMatchesOutline": "Konturfarbe des Typfilterwidgets in Listen und Strukturen, wenn es keine Übereinstimmungen gibt.",
"listFilterWidgetOutline": "Konturfarbe des Typfilterwidgets in Listen und Strukturen.",
"listFilterWidgetShadow": "Schattenfarbe des Typfilterwidgets in Listen und Strukturen.",
"listFilterWidgetShadow": "Shadow color of the type filter widget in lists and trees.",
"listFocusAndSelectionOutline": "Umrissfarbe der Liste/des Baums für das fokussierte Element, wenn die Liste/der Baum aktiv und ausgewählt ist. Eine aktive Liste/Baum hat Tastaturfokus, eine inaktive nicht.",
"listFocusBackground": "Hintergrundfarbe der Liste/Struktur für das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.",
"listFocusForeground": "Vordergrundfarbe der Liste/Struktur für das fokussierte Element, wenn die Liste/Struktur aktiv ist. Eine aktive Liste/Struktur hat Tastaturfokus, eine inaktive hingegen nicht.",
@ -1734,6 +1794,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"scrollbarSliderActiveBackground": "Hintergrundfarbe des Schiebereglers, wenn darauf geklickt wird.",
"scrollbarSliderBackground": "Hintergrundfarbe vom Scrollbar-Schieber",
"scrollbarSliderHoverBackground": "Hintergrundfarbe des Schiebereglers, wenn darauf gezeigt wird.",
"search.resultsInfoForeground": "Farbe des Texts in der Abschlussmeldung des Such-Viewlets.",
"searchEditor.editorFindMatchBorder": "Rahmenfarbe der Abfrageübereinstimmungen des Such-Editors",
"searchEditor.queryMatch": "Farbe der Abfrageübereinstimmungen des Such-Editors",
"selectionBackground": "Hintergrundfarbe der Textauswahl in der Workbench (z.B. für Eingabefelder oder Textbereiche). Diese Farbe gilt nicht für die Auswahl im Editor.",
@ -1756,7 +1817,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"toolbarHoverOutline": "Symbolleistengliederung beim Bewegen der Maus über Aktionen",
"treeInactiveIndentGuidesStroke": "Strukturstrichfarbe für die Einzugslinien, die nicht aktiv sind.",
"treeIndentGuidesStroke": "Strukturstrichfarbe für die Einzugsführungslinien.",
"warningBorder": "Randfarbe der Warnfelder im Editor.",
"warningBorder": "Wenn festgelegt, wird die Farbe doppelter Unterstreichungen für Warnungen im Editor angezeigt.",
"widgetBorder": "Die Rahmenfarbe von Widgets, z. B. Suchen/Ersetzen im Editor.",
"widgetShadow": "Schattenfarbe von Widgets wie zum Beispiel Suchen/Ersetzen innerhalb des Editors."
},

View File

@ -38,6 +38,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"alertErrorMessage": "Error: {0}",
"alertInfoMessage": "Información: {0}",
"alertWarningMessage": "Advertencia: {0}",
"clearedInput": "Entrada borrada",
"history.inputbox.hint": "para el historial"
},
"vs/base/browser/ui/keybindingLabel/keybindingLabel": {
@ -107,7 +108,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"diff-aria-navigation-tip": " usar Mayús + F7 para navegar por los cambios",
"diff.tooLarge": "Los archivos no se pueden comparar porque uno de ellos es demasiado grande.",
"diffInsertIcon": "Decoración de línea para las inserciones en el editor de diferencias.",
"diffRemoveIcon": "Decoración de línea para las eliminaciones en el editor de diferencias."
"diffRemoveIcon": "Decoración de línea para las eliminaciones en el editor de diferencias.",
"revertChangeHoverMessage": "Haga clic para revertir el cambio"
},
"vs/editor/browser/widget/diffReview": {
"blankLine": "vacío",
@ -138,9 +140,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/common/config/editorConfigurationSchema": {
"codeLens": "Controla si el editor muestra CodeLens.",
"detectIndentation": "Controla si {0} y {1} se detectan automáticamente al abrir un archivo en función del contenido de este.",
"diffAlgorithm.experimental": "Usa un algoritmo de comparación experimental.",
"diffAlgorithm.smart": "Usa el algoritmo de comparación predeterminado.",
"diffAlgorithm.advanced": "Usa el algoritmo de diferenciación avanzada.",
"diffAlgorithm.legacy": "Usa el algoritmo de diferenciación heredado.",
"editor.experimental.asyncTokenization": "Controla si la tokenización debe producirse de forma asincrónica en un rol de trabajo.",
"editor.experimental.asyncTokenizationLogging": "Controla si se debe registrar la tokenización asincrónica. Solo para depuración.",
"editor.experimental.asyncTokenizationVerification": "Controla si se debe comprobar la tokenización asincrónica con la tokenización en segundo plano heredada. Puede ralentizar la tokenización. Solo para depuración.",
"editorConfigurationTitle": "Editor",
"ignoreTrimWhitespace": "Cuando está habilitado, el editor de diferencias omite los cambios en los espacios en blanco iniciales o finales.",
"indentSize": "Número de espacios usados para la sangría o \"tabSize\" para usar el valor de \"#editor.tabSize#\". Esta configuración se invalida en función del contenido del archivo cuando \"#editor.detectIndentation#\" está activado.",
@ -215,10 +219,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"cursorSurroundingLinesStyle.all": "\"cursorSurroundingLines\" se aplica siempre.",
"cursorSurroundingLinesStyle.default": "Solo se aplica \"cursorSurroundingLines\" cuando se desencadena mediante el teclado o la API.",
"cursorWidth": "Controla el ancho del cursor cuando \"#editor.cursorStyle#\" se establece en \"line\".",
"defaultColorDecorators": "Controla si las decoraciones de color en línea deben mostrarse con el proveedor de colores del documento predeterminado.",
"definitionLinkOpensInPeek": "Controla si el gesto del mouse Ir a definición siempre abre el widget interactivo.",
"deprecated": "Esta configuración está en desuso. Use configuraciones separadas como \"editor.suggest.showKeyword\" o \"editor.suggest.showSnippets\" en su lugar.",
"dragAndDrop": "Controla si el editor debe permitir mover las selecciones mediante arrastrar y colocar.",
"dropIntoEditor.enabled": "Controla si puede arrastrar y colocar un archivo en un editor de texto manteniendo presionada la tecla `mayús` (en lugar de abrir el archivo en un editor).",
"dropIntoEditor.showDropSelector": "Controla si se muestra un widget al colocar archivos en el editor. Este widget le permite controlar cómo se coloca el archivo.",
"dropIntoEditor.showDropSelector.afterDrop": "Muestra el widget del selector de colocación después de colocar un archivo en el editor.",
"dropIntoEditor.showDropSelector.never": "No mostrar nunca el widget del selector de colocación. En su lugar, siempre se usa el proveedor de colocación predeterminado.",
"editor.autoClosingBrackets.beforeWhitespace": "Cerrar automáticamente los corchetes cuando el cursor esté a la izquierda de un espacio en blanco.",
"editor.autoClosingBrackets.languageDefined": "Utilizar las configuraciones del lenguaje para determinar cuándo cerrar los corchetes automáticamente.",
"editor.autoClosingDelete.auto": "Quite los corchetes o las comillas de cierre adyacentes solo si se insertaron automáticamente.",
@ -266,8 +274,9 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editor.inlayHints.offUnlessPressed": "Las sugerencias de incrustación están ocultas de forma predeterminada y se muestran al mantener presionado {0}",
"editor.inlayHints.on": "Las sugerencias de incrustación están habilitadas",
"editor.inlayHints.onUnlessPressed": "Las sugerencias de incrustación se muestran de forma predeterminada y se ocultan cuando se mantiene presionado {0}",
"editor.stickyScroll": "Muestra los ámbitos actuales anidados durante el desplazamiento en la parte superior del editor.",
"editor.stickyScroll.": "Define el número máximo de líneas rápidas que se mostrarán.",
"editor.stickyScroll.defaultModel": "Define el modelo que se va a usar para determinar qué líneas se van a pegar. Si el modelo de esquema no existe, recurrirá al modelo del proveedor de plegado que recurre al modelo de sangría. Este orden se respeta en los tres casos.",
"editor.stickyScroll.enabled": "Muestra los ámbitos actuales anidados durante el desplazamiento en la parte superior del editor.",
"editor.stickyScroll.maxLineCount": "Define el número máximo de líneas rápidas que se mostrarán.",
"editor.suggest.matchOnWordStartOnly": "Cuando se activa el filtro IntelliSense se requiere que el primer carácter coincida con el inicio de una palabra. Por ejemplo, \"c\" en \"Consola\" o \"WebContext\" but _not_ on \"descripción\". Si se desactiva, IntelliSense mostrará más resultados, pero los ordenará según la calidad de la coincidencia.",
"editor.suggest.showClasss": "Cuando está habilitado, IntelliSense muestra sugerencias de tipo \"class\".",
"editor.suggest.showColors": "Cuando está habilitado, IntelliSense muestra sugerencias de \"color\".",
@ -345,6 +354,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"inlineSuggest.showToolbar": "Controla cuándo mostrar la barra de herramientas de sugerencias insertadas.",
"inlineSuggest.showToolbar.always": "Muestra la barra de herramientas de sugerencias insertadas cada vez que se muestra una sugerencia insertada.",
"inlineSuggest.showToolbar.onHover": "Muestra la barra de herramientas de sugerencias insertadas al mantener el puntero sobre una sugerencia insertada.",
"inlineSuggest.suppressSuggestions": "Controla cómo interactúan las sugerencias insertadas con el widget de sugerencias. Si se habilita, el widget de sugerencias no se muestra automáticamente cuando hay sugerencias insertadas disponibles.",
"letterSpacing": "Controla el espacio entre letras en píxeles.",
"lineHeight": "Controla el alto de línea. \r\n - Use 0 para calcular automáticamente el alto de línea a partir del tamaño de la fuente.\r\n - Los valores entre 0 y 8 se usarán como multiplicador con el tamaño de fuente.\r\n - Los valores mayores o igual que 8 se usarán como valores efectivos.",
"lineNumbers": "Controla la visualización de los números de línea.",
@ -384,6 +394,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"padding.top": "Controla la cantidad de espacio entre el borde superior del editor y la primera línea.",
"parameterHints.cycle": "Controla si el menú de sugerencias de parámetros se cicla o se cierra al llegar al final de la lista.",
"parameterHints.enabled": "Habilita un elemento emergente que muestra documentación de los parámetros e información de los tipos mientras escribe.",
"pasteAs.enabled": "Controla si se puede pegar contenido de distintas formas.",
"pasteAs.showPasteSelector": "Controla si se muestra un widget al pegar contenido en el editor. Este widget le permite controlar cómo se pega el archivo.",
"pasteAs.showPasteSelector.afterPaste": "Muestra el widget del selector de pegado después de pegar contenido en el editor.",
"pasteAs.showPasteSelector.never": "No mostrar nunca el widget del selector de pegado. En su lugar, siempre se usa el comportamiento de pegado predeterminado.",
"peekWidgetDefaultFocus": "Controla si se debe enfocar el editor en línea o el árbol en el widget de vista.",
"peekWidgetDefaultFocus.editor": "Enfocar el editor al abrir la inspección",
"peekWidgetDefaultFocus.tree": "Enfocar el árbol al abrir la inspección",
@ -407,6 +421,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"rulers": "Muestra reglas verticales después de un cierto número de caracteres monoespaciados. Usa múltiples valores para mostrar múltiples reglas. Si la matriz está vacía, no se muestran reglas.",
"rulers.color": "Color de esta regla del editor.",
"rulers.size": "Número de caracteres monoespaciales en los que se representará esta regla del editor.",
"screenReaderAnnounceInlineSuggestion": "Controla si un lector de pantalla anuncia sugerencias insertadas. Tenga en cuenta que esto no funciona en macOS con VoiceOver.",
"scrollBeyondLastColumn": "Controla el número de caracteres adicionales a partir del cual el editor se desplazará horizontalmente.",
"scrollBeyondLastLine": "Controla si el editor seguirá haciendo scroll después de la última línea.",
"scrollPredominantAxis": "Desplácese solo a lo largo del eje predominante cuando se desplace vertical y horizontalmente al mismo tiempo. Evita la deriva horizontal cuando se desplaza verticalmente en un trackpad.",
@ -453,7 +468,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"suggest.showIcons": "Controla si mostrar u ocultar iconos en sugerencias.",
"suggest.showInlineDetails": "Controla si los detalles de sugerencia se muestran incorporados con la etiqueta o solo en el widget de detalles.",
"suggest.showStatusBar": "Controla la visibilidad de la barra de estado en la parte inferior del widget de sugerencias.",
"suggest.snippetsPreventQuickSuggestions": "Controla si un fragmento de código activo impide sugerencias rápidas.",
"suggestFontSize": "Tamaño de fuente del widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}.",
"suggestLineHeight": "Alto de línea para el widget de sugerencias. Cuando se establece en {0}, se usa el valor de {1}. El valor mínimo es 8.",
"suggestOnTriggerCharacters": "Controla si deben aparecer sugerencias de forma automática al escribir caracteres desencadenadores.",
@ -575,6 +589,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorHasSelection": "Si el editor tiene texto seleccionado",
"editorHasSignatureHelpProvider": "Si el editor tiene un proveedor de ayuda de signatura",
"editorHasTypeDefinitionProvider": "Si el editor tiene un proveedor de definiciones de tipo",
"editorHoverFocused": "Si se centra el desplazamiento del editor",
"editorHoverVisible": "Si el mantenimiento del puntero del editor es visible",
"editorLangId": "Identificador de idioma del editor",
"editorReadonly": "Si el editor es de solo lectura",
@ -582,6 +597,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorTextFocus": "Si el texto del editor tiene el foco (el cursor parpadea)",
"inCompositeEditor": "Si el editor forma parte de otro más grande (por ejemplo, blocs de notas)",
"inDiffEditor": "Si el contexto es un editor de diferencias",
"isEmbeddedDiffEditor": "Si el contexto es un editor de diferencias incrustado",
"standaloneColorPickerFocused": "Si el selector de colores independiente está centrado",
"standaloneColorPickerVisible": "Si el selector de colores independiente está visible",
"stickyScrollFocused": "Si el desplazamiento permanente está centrado",
"stickyScrollVisible": "Si el desplazamiento permanente está visible",
"textInputFocus": "Si un editor o una entrada de texto enriquecido tienen el foco (el cursor parpadea)"
},
"vs/editor/common/languages/modesRegistry": {
@ -592,6 +612,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/editor/common/standaloneStrings": {
"accessibilityHelpMessage": "Presione Alt+F1 para ver las opciones de accesibilidad.",
"accessibilityHelpTitle": "Ayuda de accesibilidad",
"auto_off": "El editor está configurado para que no se optimice nunca su uso con un lector de pantalla, que en este momento no es el caso.",
"auto_on": "El editor está configurado para optimizarse para su uso con un lector de pantalla.",
"bulkEditServiceSummary": "{0} ediciones realizadas en {1} archivos",
@ -642,6 +663,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"miGoToBracket": "Ir al &&corchete",
"overviewRulerBracketMatchForeground": "Resumen color de marcador de regla para corchetes.",
"smartSelect.jumpBracket": "Ir al corchete",
"smartSelect.removeBrackets": "Quitar corchetes",
"smartSelect.selectToBracket": "Seleccionar para corchete"
},
"vs/editor/contrib/caretOperations/browser/caretOperations": {
@ -693,12 +715,15 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"organizeImports.label": "Organizar Importaciones",
"quickfix.trigger.label": "Corrección Rápida",
"refactor.label": "Refactorizar...",
"refactor.preview.label": "Refactorizar con vista previa...",
"source.label": "Acción de código fuente..."
},
"vs/editor/contrib/codeAction/browser/codeActionContributions": {
"showCodeActionHeaders": "Activar/desactivar la visualización de los encabezados de los grupos en el menú de Acción de código."
},
"vs/editor/contrib/codeAction/browser/codeActionController": {
"hideMoreActions": "Ocultar deshabilitado",
"showMoreActions": "Mostrar elementos deshabilitados"
},
"vs/editor/contrib/codeAction/browser/codeActionMenu": {
"codeAction.widget.id.convert": "Reescribir...",
"codeAction.widget.id.extract": "Extraer...",
@ -709,10 +734,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"codeAction.widget.id.source": "Acción de origen...",
"codeAction.widget.id.surround": "Rodear con..."
},
"vs/editor/contrib/codeAction/browser/codeActionUi": {
"hideMoreActions": "Ocultar deshabilitado",
"showMoreActions": "Mostrar elementos deshabilitados"
},
"vs/editor/contrib/codeAction/browser/lightBulbWidget": {
"codeAction": "Mostrar acciones de código",
"codeActionWithKb": "Mostrar acciones de código ({0})",
@ -722,7 +743,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"showLensOnLine": "Mostrar comandos de lente de código para la línea actual"
},
"vs/editor/contrib/colorPicker/browser/colorPickerWidget": {
"clickToToggleColorOptions": "Haga clic para alternar las opciones de color (rgb/hsl/hex)"
"clickToToggleColorOptions": "Haga clic para alternar las opciones de color (rgb/hsl/hex)",
"closeIcon": "Icono para cerrar el selector de colores"
},
"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions": {
"hideColorPicker": "Ocultar la Selector de colores",
"insertColorWithStandaloneColorPicker": "Insertar color con Selector de colores independiente",
"mishowOrFocusStandaloneColorPicker": "&Mostrar o centrar Selector de colores independientes",
"showOrFocusStandaloneColorPicker": "Mostrar o centrar Selector de colores independientes"
},
"vs/editor/contrib/comment/browser/comment": {
"comment.block": "Alternar comentario de bloque",
@ -744,19 +772,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"context.minimap.slider.always": "Siempre",
"context.minimap.slider.mouseover": "Pasar el mouse"
},
"vs/editor/contrib/copyPaste/browser/copyPasteContribution": {
"pasteActions": "Habilita o deshabilita la ejecución de ediciones desde extensiones al pegar."
},
"vs/editor/contrib/copyPaste/browser/copyPasteController": {
"pasteProgressTitle": "Ejecutando controladores de pegado..."
},
"vs/editor/contrib/cursorUndo/browser/cursorUndo": {
"cursor.redo": "Cursor Rehacer",
"cursor.undo": "Cursor Deshacer"
},
"vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution": {
"dropProgressTitle": "Ejecutando controladores de destino..."
},
"vs/editor/contrib/editorState/browser/keybindingCancellation": {
"cancellableOperation": "Indica si el editor ejecuta una operación que se puede cancelar como, por ejemplo, \"Inspeccionar referencias\""
},
@ -768,6 +787,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"findMatchAction.goToMatch": "Ir a Coincidencia...",
"findMatchAction.inputPlaceHolder": "Escriba un número para ir a una coincidencia específica (entre 1 y {0})",
"findMatchAction.inputValidationMessage": "Escriba un número entre 1 y {0}",
"findMatchAction.noResults": "No hay coincidencias. Intente buscar otra cosa.",
"findNextMatchAction": "Buscar siguiente",
"findPreviousMatchAction": "Buscar anterior",
"miFind": "&&Buscar",
@ -934,8 +954,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/contrib/gotoSymbol/browser/referencesModel": {
"aria.fileReferences.1": "1 símbolo en {0}, ruta de acceso completa {1}",
"aria.fileReferences.N": "{0} símbolos en {1}, ruta de acceso completa {2}",
"aria.oneReference": "símbolo en {0} linea {1} en la columna {2}",
"aria.oneReference.preview": "símbolo en {0} línea {1} en la columna {2}, {3}",
"aria.oneReference": "en {0} en la línea {1} en la columna {2}",
"aria.oneReference.preview": "{0} en {1} en la línea {2} en la columna {3}",
"aria.result.0": "No se encontraron resultados",
"aria.result.1": "Encontró 1 símbolo en {0}",
"aria.result.n1": "Encontró {0} símbolos en {1}",
@ -947,8 +967,17 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"location.kb": "Símbolo {0} de {1}, {2} para el siguiente"
},
"vs/editor/contrib/hover/browser/hover": {
"escapeFocusHover": "Foco de escape al mantener el puntero",
"goToBottomHover": "Ir a la parte inferior al mantener el puntero",
"goToTopHover": "Ir al puntero superior",
"pageDownHover": "Desplazamiento de página hacia abajo",
"pageUpHover": "Desplazamiento de página hacia arriba",
"scrollDownHover": "Desplazar hacia abajo al mantener el puntero",
"scrollLeftHover": "Desplazar al mantener el puntero a la izquierda",
"scrollRightHover": "Desplazar al mantener el puntero a la derecha",
"scrollUpHover": "Desplazar hacia arriba al mantener el puntero",
"showDefinitionPreviewHover": "Mostrar vista previa de la definición que aparece al mover el puntero",
"showHover": "Mostrar al mantener el puntero"
"showOrFocusHover": "Mostrar o centrarse al mantener el puntero"
},
"vs/editor/contrib/hover/browser/markdownHoverParticipant": {
"modesContentHover.loading": "Cargando...",
@ -985,28 +1014,30 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"links.navigate.kb.meta": "ctrl + clic",
"links.navigate.kb.meta.mac": "cmd + clic"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextController": {
"vs/editor/contrib/inlineCompletions/browser/commands": {
"accept": "Aceptar",
"acceptLine": "Aceptar línea",
"acceptWord": "Aceptar palabra",
"action.inlineSuggest.accept": "Aceptar la sugerencia insertada",
"action.inlineSuggest.acceptNextLine": "Aceptar la siguiente línea de sugerencia insertada",
"action.inlineSuggest.acceptNextWord": "Aceptar la siguiente palabra de sugerencia insertada",
"action.inlineSuggest.alwaysShowToolbar": "Mostrar siempre la barra de herramientas",
"action.inlineSuggest.hide": "Ocultar la sugerencia insertada",
"action.inlineSuggest.showNext": "Mostrar sugerencia alineada siguiente",
"action.inlineSuggest.showPrevious": "Mostrar sugerencia alineada anterior",
"action.inlineSuggest.trigger": "Desencadenar sugerencia alineada",
"action.inlineSuggest.undo": "Deshacer Aceptar palabra",
"action.inlineSuggest.trigger": "Desencadenar sugerencia alineada"
},
"vs/editor/contrib/inlineCompletions/browser/hoverParticipant": {
"inlineSuggestionFollows": "Sugerencia:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys": {
"alwaysShowInlineSuggestionToolbar": "Indica si la barra de herramientas de sugerencias insertada debe estar siempre visible",
"canUndoInlineSuggestion": "Si deshacer desharía una sugerencia insertada",
"inlineSuggestionHasIndentation": "Si la sugerencia alineada comienza con un espacio en blanco",
"inlineSuggestionHasIndentationLessThanTabSize": "Si la sugerencia insertada comienza con un espacio en blanco menor que lo que se insertaría mediante tabulación",
"inlineSuggestionVisible": "Si una sugerencia alineada está visible",
"undoAcceptWord": "Deshacer Aceptar palabra"
"suppressSuggestions": "Si las sugerencias deben suprimirse para la sugerencia actual"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant": {
"inlineSuggestionFollows": "Sugerencia:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineSuggestionHintsWidget": {
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget": {
"content": "{0} ({1})",
"next": "Siguiente",
"parameterHintsNextIcon": "Icono para mostrar la sugerencia de parámetro siguiente.",
@ -1237,8 +1268,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"WednesdayShort": "Mié"
},
"vs/editor/contrib/stickyScroll/browser/stickyScrollActions": {
"focusStickyScroll": "Desplazamiento permanente de foco",
"goToFocusedStickyScrollLine.title": "Ir a la línea de desplazamiento rápida con foco",
"miStickyScroll": "&&Desplazamiento permanente",
"mifocusStickyScroll": "&&Desplazamiento permanente de foco",
"mitoggleStickyScroll": "&&Alternar desplazamiento permanente",
"selectEditor.title": "Seleccionar el Editor",
"selectNextStickyScrollLine.title": "Seleccionar la siguiente línea de desplazamiento rápida",
"selectPreviousStickyScrollLine.title": "Seleccionar la línea de desplazamiento rápida anterior",
"stickyScroll": "Desplazamiento permanente",
"toggleStickyScroll": "Alternar desplazamiento permanente"
},
@ -1343,6 +1380,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"unicodeHighlight.adjustSettings": "Ajustar la configuración",
"unicodeHighlight.allowCommonCharactersInLanguage": "Permite caracteres Unicode más comunes en el idioma \"{0}\".",
"unicodeHighlight.characterIsAmbiguous": "El carácter {0} podría confundirse con el carácter {1}, que es más común en el código fuente.",
"unicodeHighlight.characterIsAmbiguousASCII": "El carácter {0} podría confundirse con el carácter ASCII {1}, que es más común en el código fuente.",
"unicodeHighlight.characterIsInvisible": "El carácter {0} es invisible.",
"unicodeHighlight.characterIsNonBasicAscii": "El carácter {0} no es un carácter ASCII básico.",
"unicodeHighlight.configureUnicodeHighlightOptions": "Configurar opciones de resaltado Unicode",
@ -1386,6 +1424,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/action/common/actionCommonCategories": {
"developer": "Desarrollador",
"file": "archivo",
"help": "Ayuda",
"preferences": "Preferencias",
"test": "Probar",
@ -1448,6 +1487,19 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/platform/contextkey/browser/contextKeyService": {
"getContextKeyInfo": "Comando que devuelve información sobre las claves de contexto"
},
"vs/platform/contextkey/common/contextkey": {
"contextkey.parser.error.closingParenthesis": "paréntesis de cierre ')'",
"contextkey.parser.error.emptyString": "Expresión de clave de contexto vacía",
"contextkey.parser.error.emptyString.hint": "¿Ha olvidado escribir una expresión? también puede poner \"false\" o \"true\" para evaluar siempre como false o true, respectivamente.",
"contextkey.parser.error.expectedButGot": "Esperado: {0}\r\nrecibido: '{1}'.",
"contextkey.parser.error.noInAfterNot": "'in' después de 'not'.",
"contextkey.parser.error.unexpectedEOF": "Final de expresión inesperado",
"contextkey.parser.error.unexpectedEOF.hint": "¿Ha olvidado poner una clave de contexto?",
"contextkey.parser.error.unexpectedToken": "Token inesperado",
"contextkey.parser.error.unexpectedToken.hint": "¿Ha olvidado poner && o || antes del token?",
"contextkey.scanner.errorForLinter": "Token inesperado.",
"contextkey.scanner.errorForLinterWithHint": "Token inesperado. Pista: {0}"
},
"vs/platform/contextkey/common/contextkeys": {
"inputFocus": "Si el foco del teclado está dentro de un cuadro de entrada",
"isIOS": "Si el sistema operativo es IOS",
@ -1459,6 +1511,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"isWindows": "Si el sistema operativo es Windows",
"productQualityType": "Tipo de calidad de VS Code"
},
"vs/platform/contextkey/common/scanner": {
"contextkey.scanner.hint.didYouForgetToEscapeSlash": "¿Ha olvidado escapar el carácter \"/\" (barra diagonal)?Coloque dos barras diagonales inversas antes de que escape, por ejemplo, '\\\\/'.",
"contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote": "¿Ha olvidado abrir o cerrar la cita?",
"contextkey.scanner.hint.didYouMean1": "¿Quiso decir {0}?",
"contextkey.scanner.hint.didYouMean2": "¿Quiso decir {0} o {1}?",
"contextkey.scanner.hint.didYouMean3": "¿Quiso decir {0}, {1} o {2}?"
},
"vs/platform/dialogs/common/dialogs": {
"cancelButton": "Cancelar",
"moreFile": "...1 archivo más que no se muestra",
@ -1482,7 +1541,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/keybinding/common/abstractKeybindingService": {
"first.chord": "Se presionó ({0}). Esperando la siguiente tecla...",
"missing.chord": "La combinación de claves ({0}, {1}) no es un comando."
"missing.chord": "La combinación de claves ({0}, {1}) no es un comando.",
"next.chord": "Se ha presionado ({0}). Esperando la siguiente tecla..."
},
"vs/platform/list/browser/listService": {
"Fast Scroll Sensitivity": "Multiplicador de la velocidad de desplazamiento al presionar \"Alt\".",
@ -1624,7 +1684,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorWidgetBorder": "Color de borde de los widgets del editor. El color solo se usa si el widget elige tener un borde y no invalida el color.",
"editorWidgetForeground": "Color de primer plano de los widgets del editor, como buscar y reemplazar.",
"editorWidgetResizeBorder": "Color del borde de la barra de cambio de tamaño de los widgets del editor. El color se utiliza solo si el widget elige tener un borde de cambio de tamaño y si un widget no invalida el color.",
"errorBorder": "Color del borde de los cuadros de error en el editor.",
"errorBorder": "Si se establece, color de subrayados dobles para errores en el editor.",
"errorForeground": "Color de primer plano general para los mensajes de erroe. Este color solo se usa si un componente no lo invalida.",
"findMatchHighlight": "Color de los otros resultados de la búsqueda. El color no debe ser opaco para no ocultar las decoraciones subyacentes.",
"findMatchHighlightBorder": "Color de borde de otra búsqueda que coincide.",
@ -1633,13 +1693,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"focusBorder": "Color de borde de los elementos con foco. Este color solo se usa si un componente no lo invalida.",
"foreground": "Color de primer plano general. Este color solo se usa si un componente no lo invalida.",
"highlight": "Color de primer plano de la lista o el árbol de las coincidencias resaltadas al buscar dentro de la lista o el ábol.",
"hintBorder": "Color del borde de los cuadros de sugerencia en el editor.",
"hintBorder": "Si se establece, color de subrayados dobles para sugerencias en el editor.",
"hoverBackground": "Color de fondo al mantener el puntero en el editor.",
"hoverBorder": "Color del borde al mantener el puntero en el editor.",
"hoverForeground": "Color de primer plano al mantener el puntero en el editor.",
"hoverHighlight": "Destacar debajo de la palabra para la que se muestra un mensaje al mantener el mouse. El color no debe ser opaco para no ocultar decoraciones subyacentes.",
"iconForeground": "El color predeterminado para los iconos en el área de trabajo.",
"infoBorder": "Color del borde de los cuadros de información en el editor.",
"infoBorder": "Si se establece, color de subrayados dobles para informaciones en el editor.",
"inputBoxActiveOptionBorder": "Color de borde de opciones activadas en campos de entrada.",
"inputBoxBackground": "Fondo de cuadro de entrada.",
"inputBoxBorder": "Borde de cuadro de entrada.",
@ -1673,7 +1733,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"listFilterWidgetBackground": "Color de fondo del widget de filtro de tipo en listas y árboles.",
"listFilterWidgetNoMatchesOutline": "Color de contorno del widget de filtro de tipo en listas y árboles, cuando no hay coincidencias.",
"listFilterWidgetOutline": "Color de contorno del widget de filtro de tipo en listas y árboles.",
"listFilterWidgetShadow": "Color del sombreado del widget de filtrado de escritura en listas y árboles.",
"listFilterWidgetShadow": "Shadow color of the type filter widget in lists and trees.",
"listFocusAndSelectionOutline": "Color de contorno de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos y seleccionados. Una lista o un árbol tienen el foco del teclado cuando están activos, pero no cuando están inactivos.",
"listFocusBackground": "Color de fondo de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.",
"listFocusForeground": "Color de primer plano de la lista o el árbol del elemento con el foco cuando la lista o el árbol están activos. Una lista o un árbol tienen el foco del teclado cuando están activos, cuando están inactivos no.",
@ -1734,6 +1794,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"scrollbarSliderActiveBackground": "Color de fondo de la barra de desplazamiento al hacer clic.",
"scrollbarSliderBackground": "Color de fondo de control deslizante de barra de desplazamiento.",
"scrollbarSliderHoverBackground": "Color de fondo de barra de desplazamiento cursor cuando se pasar sobre el control.",
"search.resultsInfoForeground": "Color del texto en el mensaje de finalización del viewlet de búsqueda.",
"searchEditor.editorFindMatchBorder": "Color de borde de las consultas coincidentes del Editor de búsqueda.",
"searchEditor.queryMatch": "Color de las consultas coincidentes del Editor de búsqueda.",
"selectionBackground": "El color de fondo del texto seleccionado en el área de trabajo (por ejemplo, campos de entrada o áreas de texto). Esto no se aplica a las selecciones dentro del editor.",
@ -1756,7 +1817,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"toolbarHoverOutline": "La barra de herramientas se perfila al pasar por encima de las acciones con el mouse.",
"treeInactiveIndentGuidesStroke": "Color de trazo de árbol para las guías de sangría que no están activas.",
"treeIndentGuidesStroke": "Color de trazo de árbol para las guías de sangría.",
"warningBorder": "Color del borde de los cuadros de advertencia en el editor.",
"warningBorder": "Si se establece, color de subrayados dobles para advertencias en el editor.",
"widgetBorder": "Color de borde de los widgets dentro del editor, como buscar/reemplazar",
"widgetShadow": "Color de sombra de los widgets dentro del editor, como buscar/reemplazar"
},

View File

@ -38,6 +38,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"alertErrorMessage": "Erreur : {0}",
"alertInfoMessage": "Info : {0}",
"alertWarningMessage": "Avertissement : {0}",
"clearedInput": "Entrée effacée",
"history.inputbox.hint": "pour lhistorique"
},
"vs/base/browser/ui/keybindingLabel/keybindingLabel": {
@ -107,7 +108,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"diff-aria-navigation-tip": " utiliser Maj + F7 pour parcourir les modifications",
"diff.tooLarge": "Impossible de comparer les fichiers car l'un d'eux est trop volumineux.",
"diffInsertIcon": "Élément décoratif de ligne pour les insertions dans l'éditeur de différences.",
"diffRemoveIcon": "Élément décoratif de ligne pour les suppressions dans l'éditeur de différences."
"diffRemoveIcon": "Élément décoratif de ligne pour les suppressions dans l'éditeur de différences.",
"revertChangeHoverMessage": "Cliquez pour rétablir la modification"
},
"vs/editor/browser/widget/diffReview": {
"blankLine": "vide",
@ -138,9 +140,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/common/config/editorConfigurationSchema": {
"codeLens": "Contrôle si l'éditeur affiche CodeLens.",
"detectIndentation": "Contrôle si {0} et {1} sont automatiquement détectés lors de louverture dun fichier en fonction de son contenu.",
"diffAlgorithm.experimental": "Utilise un algorithme de comparaison expérimental.",
"diffAlgorithm.smart": "Utilise lalgorithme de comparaison par défaut.",
"diffAlgorithm.advanced": "Utilise lalgorithme de comparaison avancé.",
"diffAlgorithm.legacy": "Utilise lalgorithme de comparaison hérité.",
"editor.experimental.asyncTokenization": "Contrôle si la création de jetons doit se produire de manière asynchrone sur un worker web.",
"editor.experimental.asyncTokenizationLogging": "Contrôle si la création de jetons asynchrones doit être journalisée. Pour le débogage uniquement.",
"editor.experimental.asyncTokenizationVerification": "Contrôle si la segmentation du texte en unités lexicales asynchrones doit être vérifiée par rapport à la segmentation du texte en unités lexicales en arrière-plan héritée. Peut ralentir la segmentation du texte en unités lexicales. Pour le débogage uniquement.",
"editorConfigurationTitle": "Éditeur",
"ignoreTrimWhitespace": "Quand il est activé, l'éditeur de différences ignore les changements d'espace blanc de début ou de fin.",
"indentSize": "Nombre despaces utilisés pour la mise en retrait ou `\"tabSize\"` pour utiliser la valeur de `#editor.tabSize#`. Ce paramètre est remplacé en fonction du contenu du fichier quand `#editor.detectIndentation#` est activé.",
@ -215,10 +219,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"cursorSurroundingLinesStyle.all": "'cursorSurroundingLines' est toujours appliqué.",
"cursorSurroundingLinesStyle.default": "'cursorSurroundingLines' est appliqué seulement s'il est déclenché via le clavier ou une API.",
"cursorWidth": "Détermine la largeur du curseur lorsque `#editor.cursorStyle#` est à `line`.",
"defaultColorDecorators": "Contrôle si les décorations de couleur inline doivent être affichées à laide du fournisseur de couleurs de document par défaut",
"definitionLinkOpensInPeek": "Contrôle si le geste de souris Accéder à la définition ouvre toujours le widget d'aperçu.",
"deprecated": "Ce paramètre est déprécié, veuillez utiliser des paramètres distincts comme 'editor.suggest.showKeywords' ou 'editor.suggest.showSnippets' à la place.",
"dragAndDrop": "Contrôle si léditeur autorise le déplacement de sélections par glisser-déplacer.",
"dropIntoEditor.enabled": "Contrôle si vous pouvez faire glisser et déposer un fichier dans un éditeur de texte en maintenant la touche Maj enfoncée (au lieu douvrir le fichier dans un éditeur).",
"dropIntoEditor.showDropSelector": "Contrôle si un widget est affiché lors de lannulation de fichiers dans léditeur. Ce widget vous permet de contrôler la façon dont le fichier est annulé.",
"dropIntoEditor.showDropSelector.afterDrop": "Afficher le widget du sélecteur de dépôt après la suppression dun fichier dans léditeur.",
"dropIntoEditor.showDropSelector.never": "Ne jamais afficher le widget du sélecteur de dépôt. À la place, le fournisseur de dépôt par défaut est toujours utilisé.",
"editor.autoClosingBrackets.beforeWhitespace": "Fermer automatiquement les parenthèses uniquement lorsque le curseur est à gauche de lespace.",
"editor.autoClosingBrackets.languageDefined": "Utilisez les configurations de langage pour déterminer quand fermer automatiquement les parenthèses.",
"editor.autoClosingDelete.auto": "Supprimez les guillemets ou crochets fermants adjacents uniquement s'ils ont été insérés automatiquement.",
@ -266,8 +274,9 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editor.inlayHints.offUnlessPressed": "Les indicateurs dinlay sont masqués par défaut et saffichent lorsque vous maintenez {0}",
"editor.inlayHints.on": "Les indicateurs dinlay sont activés.",
"editor.inlayHints.onUnlessPressed": "Les indicateurs dinlay sont affichés par défaut et masqués lors de la conservation {0}",
"editor.stickyScroll": "Affiche les étendues actives imbriqués pendant le défilement en haut de léditeur.",
"editor.stickyScroll.": "Définit le nombre maximal de lignes rémanentes à afficher.",
"editor.stickyScroll.defaultModel": "Définit le modèle à utiliser pour déterminer les lignes à coller. Si le modèle hiérarchique nexiste pas, il revient au modèle de fournisseur de pliage qui revient au modèle de mise en retrait. Cette demande est respectée dans les trois cas.",
"editor.stickyScroll.enabled": "Affiche les étendues actives imbriqués pendant le défilement en haut de léditeur.",
"editor.stickyScroll.maxLineCount": "Définit le nombre maximal de lignes rémanentes à afficher.",
"editor.suggest.matchOnWordStartOnly": "Quand le filtrage IntelliSense est activé, le premier caractère correspond à un début de mot, par exemple 'c' sur 'Console' ou 'WebContext', mais _not_ sur 'description'. Si désactivé, IntelliSense affiche plus de résultats, mais les trie toujours par qualité de correspondance.",
"editor.suggest.showClasss": "Si activé, IntelliSense montre des suggestions de type 'class'.",
"editor.suggest.showColors": "Si activé, IntelliSense montre des suggestions de type 'color'.",
@ -345,6 +354,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"inlineSuggest.showToolbar": "Contrôle quand afficher la barre doutils de suggestion incluse.",
"inlineSuggest.showToolbar.always": "Afficher la barre doutils de suggestion en ligne chaque fois quune suggestion inline est affichée.",
"inlineSuggest.showToolbar.onHover": "Afficher la barre doutils de suggestion en ligne lorsque vous pointez sur une suggestion incluse.",
"inlineSuggest.suppressSuggestions": "Contrôle la façon dont les suggestions inline interagissent avec le widget de suggestion. Si cette option est activée, le widget de suggestion nest pas affiché automatiquement lorsque des suggestions inline sont disponibles.",
"letterSpacing": "Contrôle l'espacement des lettres en pixels.",
"lineHeight": "Contrôle la hauteur de ligne. \r\n - Utilisez 0 pour calculer automatiquement la hauteur de ligne à partir de la taille de police.\r\n : les valeurs comprises entre 0 et 8 sont utilisées comme multiplicateur avec la taille de police.\r\n : les valeurs supérieures ou égales à 8 seront utilisées comme valeurs effectives.",
"lineNumbers": "Contrôle l'affichage des numéros de ligne.",
@ -384,6 +394,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"padding.top": "Contrôle la quantité despace entre le bord supérieur de léditeur et la première ligne.",
"parameterHints.cycle": "Détermine si le menu de suggestions de paramètres se ferme ou reviens au début lorsque la fin de la liste est atteinte.",
"parameterHints.enabled": "Active une fenêtre contextuelle qui affiche de la documentation sur les paramètres et des informations sur les types à mesure que vous tapez.",
"pasteAs.enabled": "Contrôle si vous pouvez coller le contenu de différentes manières.",
"pasteAs.showPasteSelector": "Contrôle laffichage dun widget lors du collage de contenu dans léditeur. Ce widget vous permet de contrôler la manière dont le fichier est collé.",
"pasteAs.showPasteSelector.afterPaste": "Afficher le widget du sélecteur de collage une fois le contenu collé dans léditeur.",
"pasteAs.showPasteSelector.never": "Ne jamais afficher le widget de sélection de collage. Au lieu de cela, le comportement de collage par défaut est toujours utilisé.",
"peekWidgetDefaultFocus": "Contrôle s'il faut mettre le focus sur l'éditeur inline ou sur l'arborescence dans le widget d'aperçu.",
"peekWidgetDefaultFocus.editor": "Placer le focus sur l'éditeur à l'ouverture de l'aperçu",
"peekWidgetDefaultFocus.tree": "Focus sur l'arborescence à l'ouverture de l'aperçu",
@ -407,6 +421,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"rulers": "Rendre les règles verticales après un certain nombre de caractères à espacement fixe. Utiliser plusieurs valeurs pour plusieurs règles. Aucune règle n'est dessinée si le tableau est vide.",
"rulers.color": "Couleur de cette règle d'éditeur.",
"rulers.size": "Nombre de caractères monospace auxquels cette règle d'éditeur effectue le rendu.",
"screenReaderAnnounceInlineSuggestion": "Contrôlez si les suggestions inline sont annoncées par un lecteur décran. Notez que cela ne fonctionne pas sur macOS avec VoiceOver.",
"scrollBeyondLastColumn": "Contrôle le nombre de caractères supplémentaires, au-delà duquel léditeur défile horizontalement.",
"scrollBeyondLastLine": "Contrôle si léditeur défile au-delà de la dernière ligne.",
"scrollPredominantAxis": "Faites défiler uniquement le long de l'axe prédominant quand le défilement est à la fois vertical et horizontal. Empêche la dérive horizontale en cas de défilement vertical sur un pavé tactile.",
@ -453,7 +468,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"suggest.showIcons": "Contrôle s'il faut montrer ou masquer les icônes dans les suggestions.",
"suggest.showInlineDetails": "Détermine si les détails du widget de suggestion sont inclus dans létiquette ou uniquement dans le widget de détails.",
"suggest.showStatusBar": "Contrôle la visibilité de la barre d'état en bas du widget de suggestion.",
"suggest.snippetsPreventQuickSuggestions": "Contrôle si un extrait de code actif empêche les suggestions rapides.",
"suggestFontSize": "Taille de police pour le widget suggest. Lorsquelle est définie sur {0}, la valeur de {1} est utilisée.",
"suggestLineHeight": "Hauteur de ligne pour le widget suggest. Lorsquelle est définie sur {0}, la valeur de {1} est utilisée. La valeur minimale est 8.",
"suggestOnTriggerCharacters": "Contrôle si les suggestions devraient automatiquement safficher lorsque vous tapez les caractères de déclencheur.",
@ -575,6 +589,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorHasSelection": "Indique si du texte est sélectionné dans l'éditeur",
"editorHasSignatureHelpProvider": "Indique si l'éditeur a un fournisseur d'aide sur les signatures",
"editorHasTypeDefinitionProvider": "Indique si l'éditeur a un fournisseur de définitions de type",
"editorHoverFocused": "Indique si le pointage de léditeur est ciblé",
"editorHoverVisible": "Indique si le pointage de l'éditeur est visible",
"editorLangId": "Identificateur de langage de l'éditeur",
"editorReadonly": "Indique si l'éditeur est en lecture seule",
@ -582,6 +597,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorTextFocus": "Indique si le texte de l'éditeur a le focus (le curseur clignote)",
"inCompositeEditor": "Indique si l'éditeur fait partie d'un éditeur plus important (par exemple Notebooks)",
"inDiffEditor": "Indique si le contexte est celui d'un éditeur de différences",
"isEmbeddedDiffEditor": "Indique si le contexte est celui dun éditeur de différences intégré",
"standaloneColorPickerFocused": "Indique si le sélecteur de couleurs autonome est prioritaire",
"standaloneColorPickerVisible": "Indique si le sélecteur de couleurs autonome est visible",
"stickyScrollFocused": "Indique si le défilement du pense-bête a le focus",
"stickyScrollVisible": "Indique si le défilement du pense-bête est visible",
"textInputFocus": "Indique si un éditeur ou une entrée de texte mis en forme a le focus (le curseur clignote)"
},
"vs/editor/common/languages/modesRegistry": {
@ -592,6 +612,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/editor/common/standaloneStrings": {
"accessibilityHelpMessage": "Appuyez sur Alt+F1 pour voir les options d'accessibilité.",
"accessibilityHelpTitle": "Aide sur laccessibilité",
"auto_off": "L'éditeur est configuré pour ne jamais être optimisé en cas d'utilisation avec un lecteur d'écran, ce qui n'est pas le cas pour le moment.",
"auto_on": "L'éditeur est configuré pour être optimisé en cas d'utilisation avec un lecteur d'écran.",
"bulkEditServiceSummary": "{0} modifications dans {1} fichiers",
@ -642,6 +663,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"miGoToBracket": "Accéder au &&crochet",
"overviewRulerBracketMatchForeground": "Couleur du marqueur de la règle d'aperçu pour rechercher des parenthèses.",
"smartSelect.jumpBracket": "Atteindre le crochet",
"smartSelect.removeBrackets": "Supprimer les crochets",
"smartSelect.selectToBracket": "Sélectionner jusqu'au crochet"
},
"vs/editor/contrib/caretOperations/browser/caretOperations": {
@ -693,12 +715,15 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"organizeImports.label": "Organiser les importations",
"quickfix.trigger.label": "Correction rapide...",
"refactor.label": "Remanier...",
"refactor.preview.label": "Refactoriser avec laperçu...",
"source.label": "Action de la source"
},
"vs/editor/contrib/codeAction/browser/codeActionContributions": {
"showCodeActionHeaders": "Activez/désactivez laffichage des en-têtes de groupe dans le menu daction du code."
},
"vs/editor/contrib/codeAction/browser/codeActionController": {
"hideMoreActions": "Masquer désactivé",
"showMoreActions": "Afficher les éléments désactivés"
},
"vs/editor/contrib/codeAction/browser/codeActionMenu": {
"codeAction.widget.id.convert": "Réécrire...",
"codeAction.widget.id.extract": "Extraire...",
@ -709,10 +734,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"codeAction.widget.id.source": "Action de la source...",
"codeAction.widget.id.surround": "Entourer de..."
},
"vs/editor/contrib/codeAction/browser/codeActionUi": {
"hideMoreActions": "Masquer désactivé",
"showMoreActions": "Afficher les éléments désactivés"
},
"vs/editor/contrib/codeAction/browser/lightBulbWidget": {
"codeAction": "Afficher les actions de code",
"codeActionWithKb": "Afficher les actions de code ({0})",
@ -722,7 +743,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"showLensOnLine": "Afficher les commandes Code Lens de la ligne actuelle"
},
"vs/editor/contrib/colorPicker/browser/colorPickerWidget": {
"clickToToggleColorOptions": "Cliquez pour activer/désactiver les options de couleur (rgb/hsl/hexadécimal)."
"clickToToggleColorOptions": "Cliquez pour activer/désactiver les options de couleur (rgb/hsl/hexadécimal).",
"closeIcon": "Icône pour fermer le sélecteur de couleurs"
},
"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions": {
"hideColorPicker": "Masquer le sélecteur de couleurs",
"insertColorWithStandaloneColorPicker": "Insérer une couleur avec un sélecteur de couleurs autonome",
"mishowOrFocusStandaloneColorPicker": "&&Afficher ou mettre le focus sur le sélecteur de couleurs autonome",
"showOrFocusStandaloneColorPicker": "Afficher ou mettre le focus sur le sélecteur de couleurs autonome"
},
"vs/editor/contrib/comment/browser/comment": {
"comment.block": "Activer/désactiver le commentaire de bloc",
@ -744,19 +772,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"context.minimap.slider.always": "Toujours",
"context.minimap.slider.mouseover": "Pointer la souris"
},
"vs/editor/contrib/copyPaste/browser/copyPasteContribution": {
"pasteActions": "Activez/désactivez lexécution des modifications à partir des extensions lors du collage."
},
"vs/editor/contrib/copyPaste/browser/copyPasteController": {
"pasteProgressTitle": "Exécution des gestionnaires de collage..."
},
"vs/editor/contrib/cursorUndo/browser/cursorUndo": {
"cursor.redo": "Restauration du curseur",
"cursor.undo": "Annulation du curseur"
},
"vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution": {
"dropProgressTitle": "Exécution des gestionnaires de dépôt..."
},
"vs/editor/contrib/editorState/browser/keybindingCancellation": {
"cancellableOperation": "Indique si l'éditeur exécute une opération annulable, par exemple 'Avoir un aperçu des références'"
},
@ -768,6 +787,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"findMatchAction.goToMatch": "Accéder à la correspondance...",
"findMatchAction.inputPlaceHolder": "Tapez un nombre pour accéder à une correspondance spécifique (entre 1 et {0})",
"findMatchAction.inputValidationMessage": "Veuillez entrer un nombre compris entre 1 et {0}",
"findMatchAction.noResults": "Aucune correspondance. Essayez de rechercher autre chose.",
"findNextMatchAction": "Rechercher suivant",
"findPreviousMatchAction": "Rechercher précédent",
"miFind": "&&Rechercher",
@ -934,8 +954,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/contrib/gotoSymbol/browser/referencesModel": {
"aria.fileReferences.1": "1 symbole dans {0}, chemin complet {1}",
"aria.fileReferences.N": "{0} symboles dans {1}, chemin complet {2}",
"aria.oneReference": "symbole dans {0} sur la ligne {1}, colonne {2}",
"aria.oneReference.preview": "symbole dans {0} à la ligne {1}, colonne {2}, {3}",
"aria.oneReference": "dans {0} à la ligne {1} à la colonne {2}",
"aria.oneReference.preview": "{0}dans {1} à la ligne {2} à la colonne {3}",
"aria.result.0": "Résultats introuvables",
"aria.result.1": "1 symbole dans {0}",
"aria.result.n1": "{0} symboles dans {1}",
@ -947,8 +967,17 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"location.kb": "Symbole {0} sur {1}, {2} pour le suivant"
},
"vs/editor/contrib/hover/browser/hover": {
"escapeFocusHover": "Pointage du focus déchappement",
"goToBottomHover": "Pointer vers le bas",
"goToTopHover": "Atteindre le pointage supérieur",
"pageDownHover": "Pointer vers le bas de la page",
"pageUpHover": "Pointer vers le haut de la page",
"scrollDownHover": "Faire défiler le pointage vers le bas",
"scrollLeftHover": "Faire défiler vers la gauche au pointage",
"scrollRightHover": "Faire défiler le pointage vers la droite",
"scrollUpHover": "Faire défiler le pointage vers le haut",
"showDefinitionPreviewHover": "Afficher le pointeur de l'aperçu de définition",
"showHover": "Afficher par pointage"
"showOrFocusHover": "Afficher ou focus sur pointer"
},
"vs/editor/contrib/hover/browser/markdownHoverParticipant": {
"modesContentHover.loading": "Chargement en cours...",
@ -985,28 +1014,30 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"links.navigate.kb.meta": "ctrl + clic",
"links.navigate.kb.meta.mac": "cmd + clic"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextController": {
"vs/editor/contrib/inlineCompletions/browser/commands": {
"accept": "Accepter",
"acceptLine": "Accepter la ligne",
"acceptWord": "Accepter le mot",
"action.inlineSuggest.accept": "Accepter la suggestion inline",
"action.inlineSuggest.acceptNextLine": "Accepter la ligne suivante dune suggestion en ligne",
"action.inlineSuggest.acceptNextWord": "Accepter le mot suivant de la suggestion inline",
"action.inlineSuggest.alwaysShowToolbar": "Toujours afficher la barre doutils",
"action.inlineSuggest.hide": "Masquer la suggestion inlined",
"action.inlineSuggest.showNext": "Afficher la suggestion en ligne suivante",
"action.inlineSuggest.showPrevious": "Afficher la suggestion en ligne précédente",
"action.inlineSuggest.trigger": "Déclencher la suggestion en ligne",
"action.inlineSuggest.undo": "Annuler lacceptation du mot",
"action.inlineSuggest.trigger": "Déclencher la suggestion en ligne"
},
"vs/editor/contrib/inlineCompletions/browser/hoverParticipant": {
"inlineSuggestionFollows": "Suggestion :"
},
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys": {
"alwaysShowInlineSuggestionToolbar": "Indique si la barre doutils de suggestion en ligne doit toujours être visible",
"canUndoInlineSuggestion": "Indique si lannulation annulerait une suggestion inline",
"inlineSuggestionHasIndentation": "Indique si la suggestion en ligne commence par un espace blanc",
"inlineSuggestionHasIndentationLessThanTabSize": "Indique si la suggestion incluse commence par un espace blanc inférieur à ce qui serait inséré par longlet.",
"inlineSuggestionVisible": "Indique si une suggestion en ligne est visible",
"undoAcceptWord": "Annuler lacceptation du mot"
"suppressSuggestions": "Indique si les suggestions doivent être supprimées pour la suggestion actuelle"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant": {
"inlineSuggestionFollows": "Suggestion :"
},
"vs/editor/contrib/inlineCompletions/browser/inlineSuggestionHintsWidget": {
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget": {
"content": "{0} ({1})",
"next": "Suivant",
"parameterHintsNextIcon": "Icône d'affichage du prochain conseil de paramètre.",
@ -1237,8 +1268,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"WednesdayShort": "Mer"
},
"vs/editor/contrib/stickyScroll/browser/stickyScrollActions": {
"focusStickyScroll": "Focus sur le défilement du pense-bête",
"goToFocusedStickyScrollLine.title": "Atteindre la ligne de défilement pense-bête prioritaire",
"miStickyScroll": "&&Défilement épinglé",
"mifocusStickyScroll": "&&Focus sur le défilement du pense-bête",
"mitoggleStickyScroll": "&&Activer/désactiver le défilement épinglé",
"selectEditor.title": "Sélectionner l'éditeur",
"selectNextStickyScrollLine.title": "Sélectionner la ligne de défilement du pense-bête suivante",
"selectPreviousStickyScrollLine.title": "Sélectionner la ligne de défilement du pense-bête précédente",
"stickyScroll": "Défilement épinglé",
"toggleStickyScroll": "Activer/désactiver le défilement épinglé"
},
@ -1343,6 +1380,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"unicodeHighlight.adjustSettings": "Ajuster les paramètres",
"unicodeHighlight.allowCommonCharactersInLanguage": "Autoriser les caractères Unicode plus courants dans le langage \"{0}\"",
"unicodeHighlight.characterIsAmbiguous": "Le caractère {0} peut être confus avec le caractère {1}, ce qui est plus courant dans le code source.",
"unicodeHighlight.characterIsAmbiguousASCII": "Le caractère {0} peut être confondu avec le caractère ASCII {1}, qui est plus courant dans le code source.",
"unicodeHighlight.characterIsInvisible": "Le caractère {0} est invisible.",
"unicodeHighlight.characterIsNonBasicAscii": "Le caractère {0} nest pas un caractère ASCII de base.",
"unicodeHighlight.configureUnicodeHighlightOptions": "Configurer les options de surlignage Unicode",
@ -1386,6 +1424,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/action/common/actionCommonCategories": {
"developer": "Développeur",
"file": "fichier",
"help": "Aide",
"preferences": "Préférences",
"test": "Test",
@ -1448,6 +1487,19 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/platform/contextkey/browser/contextKeyService": {
"getContextKeyInfo": "Commande qui retourne des informations sur les clés de contexte"
},
"vs/platform/contextkey/common/contextkey": {
"contextkey.parser.error.closingParenthesis": "parenthèse fermante ')'",
"contextkey.parser.error.emptyString": "Expression de clé de contexte vide",
"contextkey.parser.error.emptyString.hint": "Avez-vous oublié décrire une expression ? Vous pouvez également placer 'false' ou 'true' pour toujours donner la valeur false ou true, respectivement.",
"contextkey.parser.error.expectedButGot": "Attendu : {0}\r\nReçu : '{1}'.",
"contextkey.parser.error.noInAfterNot": "'in' après 'not'.",
"contextkey.parser.error.unexpectedEOF": "Fin dexpression inattendue",
"contextkey.parser.error.unexpectedEOF.hint": "Avez-vous oublié de placer une clé de contexte ?",
"contextkey.parser.error.unexpectedToken": "Jeton inattendu",
"contextkey.parser.error.unexpectedToken.hint": "Avez-vous oublié de placer && ou || avant le jeton ?",
"contextkey.scanner.errorForLinter": "Jeton inattendu.",
"contextkey.scanner.errorForLinterWithHint": "Jeton inattendu. Conseil : {0}"
},
"vs/platform/contextkey/common/contextkeys": {
"inputFocus": "Indique si le focus clavier se trouve dans une zone d'entrée",
"isIOS": "Indique si le système dexploitation est Linux",
@ -1459,6 +1511,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"isWindows": "Indique si le système d'exploitation est Windows",
"productQualityType": "Type de qualité de VS Code"
},
"vs/platform/contextkey/common/scanner": {
"contextkey.scanner.hint.didYouForgetToEscapeSlash": "Avez-vous oublié déchapper le caractère « / » (barre oblique) ? Placez deux barre obliques inverses avant dy échapper, par ex., « \\\\/ ».",
"contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote": "Avez-vous oublié douvrir ou de fermer le devis ?",
"contextkey.scanner.hint.didYouMean1": "Voulez-vous dire {0}?",
"contextkey.scanner.hint.didYouMean2": "Voulez-vous dire {0} ou {1}?",
"contextkey.scanner.hint.didYouMean3": "Voulez-vous dire {0}, {1} ou {2}?"
},
"vs/platform/dialogs/common/dialogs": {
"cancelButton": "Annuler",
"moreFile": "...1 fichier supplémentaire non affiché",
@ -1482,7 +1541,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/keybinding/common/abstractKeybindingService": {
"first.chord": "Touche ({0}) utilisée. En attente d'une seconde touche...",
"missing.chord": "La combinaison de touches ({0}, {1}) nest pas une commande."
"missing.chord": "La combinaison de touches ({0}, {1}) nest pas une commande.",
"next.chord": "({0}) a été enfoncé. En attente de la touche suivante de la pression..."
},
"vs/platform/list/browser/listService": {
"Fast Scroll Sensitivity": "Multiplicateur de vitesse de défilement quand vous appuyez sur 'Alt'.",
@ -1624,7 +1684,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorWidgetBorder": "Couleur de bordure des widgets de l'éditeur. La couleur est utilisée uniquement si le widget choisit d'avoir une bordure et si la couleur n'est pas remplacée par un widget.",
"editorWidgetForeground": "Couleur de premier plan des widgets de l'éditeur, notamment Rechercher/remplacer.",
"editorWidgetResizeBorder": "Couleur de bordure de la barre de redimensionnement des widgets de l'éditeur. La couleur est utilisée uniquement si le widget choisit une bordure de redimensionnement et si la couleur n'est pas remplacée par un widget.",
"errorBorder": "Couleur de bordure des zones d'erreur dans l'éditeur.",
"errorBorder": "Si cette option est définie, couleur des doubles soulignements pour les erreurs dans léditeur.",
"errorForeground": "Couleur principale de premier plan pour les messages d'erreur. Cette couleur est utilisée uniquement si elle n'est pas redéfinie par un composant.",
"findMatchHighlight": "Couleur des autres correspondances de recherche. La couleur ne doit pas être opaque pour ne pas masquer les ornements sous-jacents.",
"findMatchHighlightBorder": "Couleur de bordure des autres résultats de recherche.",
@ -1633,13 +1693,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"focusBorder": "Couleur de bordure globale des éléments ayant le focus. Cette couleur est utilisée si elle n'est pas remplacée par un composant.",
"foreground": "Couleur de premier plan globale. Cette couleur est utilisée si elle n'est pas remplacée par un composant.",
"highlight": "Couleur de premier plan dans la liste/l'arborescence pour la surbrillance des correspondances pendant la recherche dans une liste/arborescence.",
"hintBorder": "Couleur de bordure des zones d'indication dans l'éditeur.",
"hintBorder": "Si cette option est définie, couleur des doubles soulignements pour les conseils dans léditeur.",
"hoverBackground": "Couleur d'arrière-plan du pointage de l'éditeur.",
"hoverBorder": "Couleur de bordure du pointage de l'éditeur.",
"hoverForeground": "Couleur de premier plan du pointage de l'éditeur.",
"hoverHighlight": "Surlignage sous le mot sélectionné par pointage. La couleur ne doit pas être opaque pour ne pas masquer les ornements sous-jacents.",
"iconForeground": "Couleur par défaut des icônes du banc d'essai.",
"infoBorder": "Couleur de bordure des zones d'informations dans l'éditeur.",
"infoBorder": "Si cette option est définie, couleur des doubles soulignements pour les informations dans léditeur.",
"inputBoxActiveOptionBorder": "Couleur de la bordure des options activées dans les champs d'entrée.",
"inputBoxBackground": "Arrière-plan de la zone d'entrée.",
"inputBoxBorder": "Bordure de la zone d'entrée.",
@ -1673,7 +1733,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"listFilterWidgetBackground": "Couleur d'arrière-plan du widget de filtre de type dans les listes et les arborescences.",
"listFilterWidgetNoMatchesOutline": "Couleur de contour du widget de filtre de type dans les listes et les arborescences, en l'absence de correspondance.",
"listFilterWidgetOutline": "Couleur de contour du widget de filtre de type dans les listes et les arborescences.",
"listFilterWidgetShadow": "Appliquez une ombre à la couleur du widget filtre de type dans les listes et les arborescences.",
"listFilterWidgetShadow": "Shadow color of the type filter widget in lists and trees.",
"listFocusAndSelectionOutline": "Couleur de contour de liste/arborescence pour lélément ciblé lorsque la liste/larborescence est active et sélectionnée. Une liste/arborescence active dispose dun focus clavier, ce qui nest pas le cas dune arborescence inactive.",
"listFocusBackground": "Couleur d'arrière-plan de la liste/l'arborescence pour l'élément ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.",
"listFocusForeground": "Couleur de premier plan de la liste/l'arborescence pour l'élément ayant le focus quand la liste/l'arborescence est active. Une liste/arborescence active peut être sélectionnée au clavier, elle ne l'est pas quand elle est inactive.",
@ -1734,6 +1794,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"scrollbarSliderActiveBackground": "Couleur darrière-plan de la barre de défilement lorsqu'on clique dessus.",
"scrollbarSliderBackground": "Couleur de fond du curseur de la barre de défilement.",
"scrollbarSliderHoverBackground": "Couleur de fond du curseur de la barre de défilement lors du survol.",
"search.resultsInfoForeground": "Couleur du texte dans le message dachèvement de la viewlet de recherche.",
"searchEditor.editorFindMatchBorder": "Couleur de bordure des correspondances de requête de l'éditeur de recherche.",
"searchEditor.queryMatch": "Couleur des correspondances de requête de l'éditeur de recherche.",
"selectionBackground": "La couleur d'arrière-plan des sélections de texte dans le banc d'essai (par ex., pour les champs d'entrée ou les zones de texte). Notez que cette couleur ne s'applique pas aux sélections dans l'éditeur et le terminal.",
@ -1756,7 +1817,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"toolbarHoverOutline": "Contour de la barre doutils lors du survol des actions à laide de la souris",
"treeInactiveIndentGuidesStroke": "Couleur de trait darborescence pour les repères de mise en retrait qui ne sont pas actifs.",
"treeIndentGuidesStroke": "Couleur de trait de l'arborescence pour les repères de mise en retrait.",
"warningBorder": "Couleur de bordure des zones d'avertissement dans l'éditeur.",
"warningBorder": "Si cette option est définie, couleur des doubles soulignements pour les avertissements dans léditeur.",
"widgetBorder": "Couleur de bordure des widgets, comme rechercher/remplacer au sein de l'éditeur.",
"widgetShadow": "Couleur de l'ombre des widgets, comme rechercher/remplacer, au sein de l'éditeur."
},

View File

@ -38,6 +38,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"alertErrorMessage": "Errore: {0}",
"alertInfoMessage": "Info: {0}",
"alertWarningMessage": "Avviso: {0}",
"clearedInput": "Input cancellato",
"history.inputbox.hint": "per la cronologia"
},
"vs/base/browser/ui/keybindingLabel/keybindingLabel": {
@ -107,7 +108,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"diff-aria-navigation-tip": " usa MAIUSC +F7 per esplorare le modifiche",
"diff.tooLarge": "Non è possibile confrontare i file perché uno è troppo grande.",
"diffInsertIcon": "Effetto di riga per gli inserimenti nell'editor diff.",
"diffRemoveIcon": "Effetto di riga per le rimozioni nell'editor diff."
"diffRemoveIcon": "Effetto di riga per le rimozioni nell'editor diff.",
"revertChangeHoverMessage": "Fare clic per annullare la modifica"
},
"vs/editor/browser/widget/diffReview": {
"blankLine": "vuota",
@ -138,9 +140,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/common/config/editorConfigurationSchema": {
"codeLens": "Controlla se l'editor visualizza CodeLens.",
"detectIndentation": "Controlla se {0} e {1} verranno rilevati automaticamente quando un file viene aperto in base al contenuto del file.",
"diffAlgorithm.experimental": "Usa un algoritmo diffing sperimentale.",
"diffAlgorithm.smart": "Usa l'algoritmo diffing predefinito.",
"diffAlgorithm.advanced": "Usare l'algoritmo diffing avanzato.",
"diffAlgorithm.legacy": "Usare l'algoritmo diffing legacy.",
"editor.experimental.asyncTokenization": "Controlla se la tokenizzazione deve essere eseguita in modo asincrono in un web worker.",
"editor.experimental.asyncTokenizationLogging": "Controlla se deve essere registrata la tokenizzazione asincrona. Solo per il debug.",
"editor.experimental.asyncTokenizationVerification": "Controlla se la tokenizzazione asincrona deve essere verificata rispetto alla tokenizzazione legacy in background. Potrebbe rallentare la tokenizzazione. Solo per il debug.",
"editorConfigurationTitle": "Editor",
"ignoreTrimWhitespace": "Se abilitato, l'editor differenze ignora le modifiche relative a spazi vuoti iniziali e finali.",
"indentSize": "Numero di spazi utilizzati per il rientro o `\"tabSize\"` per usare il valore di `#editor.tabSize#`. Questa impostazione viene sostituita in base al contenuto del file quando `#editor.detectIndentation#` è attivo.",
@ -215,10 +219,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"cursorSurroundingLinesStyle.all": "`cursorSurroundingLines` viene sempre applicato.",
"cursorSurroundingLinesStyle.default": "`cursorSurroundingLines` viene applicato solo quando è attivato tramite la tastiera o l'API.",
"cursorWidth": "Controlla la larghezza del cursore quando `#editor.cursorStyle#` è impostato su `line`.",
"defaultColorDecorators": "Controllare se visualizzare le decorazioni colori incorporate usando il provider colori predefinito del documento",
"definitionLinkOpensInPeek": "Controlla se il movimento del mouse Vai alla definizione consente sempre di aprire il widget di anteprima.",
"deprecated": "Questa impostazione è deprecata. In alternativa, usare impostazioni diverse, come 'editor.suggest.showKeywords' o 'editor.suggest.showSnippets'.",
"dragAndDrop": "Controlla se l'editor deve consentire lo spostamento di selezioni tramite trascinamento della selezione.",
"dropIntoEditor.enabled": "Controlla se è possibile trascinare un file in un editor di testo tenendo premuto MAIUSC (invece di aprire il file in un editor).",
"dropIntoEditor.showDropSelector": "Controlla se viene visualizzato un widget quando si rilasciano file nell'editor. Questo widget consente di controllare la modalità di rilascio del file.",
"dropIntoEditor.showDropSelector.afterDrop": "Mostra il widget del selettore di rilascio dopo il rilascio di un file nell'editor.",
"dropIntoEditor.showDropSelector.never": "Non visualizzare mai il widget del selettore di rilascio. Usare sempre il provider di rilascio predefinito.",
"editor.autoClosingBrackets.beforeWhitespace": "Chiudi automaticamente le parentesi solo quando il cursore si trova alla sinistra di uno spazio vuoto.",
"editor.autoClosingBrackets.languageDefined": "Usa le configurazioni del linguaggio per determinare la chiusura automatica delle parentesi.",
"editor.autoClosingDelete.auto": "Rimuove le virgolette o le parentesi quadre di chiusura adiacenti solo se sono state inserite automaticamente.",
@ -266,8 +274,9 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editor.inlayHints.offUnlessPressed": "Gli hint di inlay sono nascosti per impostazione predefinita e vengono visualizzati solo quando si tiene premuto {0}",
"editor.inlayHints.on": "Gli hint di inlay sono abilitati",
"editor.inlayHints.onUnlessPressed": "Gli hint di inlay vengono visualizzati per impostazione predefinita e vengono nascosti quando si tiene premuto {0}",
"editor.stickyScroll": "Mostra gli ambiti correnti annidati durante lo scorrimento nella parte superiore dell'editor.",
"editor.stickyScroll.": "Definisce il numero massimo di righe permanenti da mostrare.",
"editor.stickyScroll.defaultModel": "Definisce il modello da utilizzare per determinare quali linee applicare. Se il modello di struttura non esiste, verrà eseguito il fallback sul modello del provider di riduzione che rientra nel modello di rientro. Questo ordine viene rispettato in tutti e tre i casi.",
"editor.stickyScroll.enabled": "Mostra gli ambiti correnti annidati durante lo scorrimento nella parte superiore dell'editor.",
"editor.stickyScroll.maxLineCount": "Definisce il numero massimo di righe permanenti da mostrare.",
"editor.suggest.matchOnWordStartOnly": "Quando è abilitato, il filtro IntelliSense richiede che il primo carattere corrisponda all'inizio di una parola, ad esempio 'c' per 'Console' o 'WebContext' ma _non_ per 'description'. Quando è disabilitato, IntelliSense mostra più risultati, ma li ordina comunque in base alla qualità della corrispondenza.",
"editor.suggest.showClasss": "Se è abilitata, IntelliSense mostra i suggerimenti relativi a `class`.",
"editor.suggest.showColors": "Se è abilitata, IntelliSense mostra i suggerimenti relativi a `color`.",
@ -345,6 +354,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"inlineSuggest.showToolbar": "Controlla quando mostrare la barra dei suggerimenti in linea.",
"inlineSuggest.showToolbar.always": "Mostra la barra degli strumenti dei suggerimenti in linea ogni volta che viene visualizzato un suggerimento in linea.",
"inlineSuggest.showToolbar.onHover": "Mostra la barra degli strumenti dei suggerimenti in linea quando al passaggio del mouse su un suggerimento in linea.",
"inlineSuggest.suppressSuggestions": "Controlla la modalità di interazione dei suggerimenti inline con il widget dei suggerimenti. Se questa opzione è abilitata, il widget dei suggerimenti non viene visualizzato automaticamente quando sono disponibili suggerimenti inline.",
"letterSpacing": "Controlla la spaziatura tra le lettere in pixel.",
"lineHeight": "Controlla l'altezza della riga. \r\n - Usare 0 per calcolare automaticamente l'altezza della riga dalle dimensioni del carattere.\r\n - I valori compresi tra 0 e 8 verranno usati come moltiplicatore con le dimensioni del carattere.\r\n - I valori maggiori o uguali a 8 verranno usati come valori effettivi.",
"lineNumbers": "Controlla la visualizzazione dei numeri di riga.",
@ -384,6 +394,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"padding.top": "Controlla la quantità di spazio tra il bordo superiore dell'editor e la prima riga.",
"parameterHints.cycle": "Controlla se il menu dei suggerimenti per i parametri esegue un ciclo o si chiude quando viene raggiunta la fine dell'elenco.",
"parameterHints.enabled": "Abilita un popup che mostra documentazione sui parametri e informazioni sui tipi mentre si digita.",
"pasteAs.enabled": "Controlla se è possibile incollare il contenuto in modi diversi.",
"pasteAs.showPasteSelector": "Controlla se viene visualizzato un widget quando si incolla il contenuto nell'editor. Questo widget consente di controllare il modo in cui il file viene incollato.",
"pasteAs.showPasteSelector.afterPaste": "Mostra il widget del selettore dell'operazione Incolla dopo che il contenuto è stato incollato nell'editor.",
"pasteAs.showPasteSelector.never": "Non visualizzare mai il widget del selettore dell'operazione Incolla. Usare sempre il comportamento dell'operazione Incolla predefinito.",
"peekWidgetDefaultFocus": "Controlla se spostare lo stato attivo sull'editor inline o sull'albero nel widget di anteprima.",
"peekWidgetDefaultFocus.editor": "Sposta lo stato attivo sull'editor quando si apre l'anteprima",
"peekWidgetDefaultFocus.tree": "Sposta lo stato attivo sull'albero quando si apre l'anteprima",
@ -407,6 +421,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"rulers": "Esegue il rendering dei righelli verticali dopo un certo numero di caratteri a spaziatura fissa. Usare più valori per più righelli. Se la matrice è vuota, non viene disegnato alcun righello.",
"rulers.color": "Colore di questo righello dell'editor.",
"rulers.size": "Numero di caratteri a spaziatura fissa in corrispondenza del quale verrà eseguito il rendering di questo righello dell'editor.",
"screenReaderAnnounceInlineSuggestion": "Controlla se i suggerimenti inline vengono annunciati da un'utilità per la lettura dello schermo. Si noti che questo non funziona in macOS con VoiceOver.",
"scrollBeyondLastColumn": "Controlla il numero di caratteri aggiuntivi oltre i quali l'editor scorrerà orizzontalmente.",
"scrollBeyondLastLine": "Controlla se l'editor scorrerà oltre l'ultima riga.",
"scrollPredominantAxis": "Scorre solo lungo l'asse predominante durante lo scorrimento verticale e orizzontale simultaneo. Impedisce la deviazione orizzontale quando si scorre in verticale su un trackpad.",
@ -453,7 +468,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"suggest.showIcons": "Controlla se mostrare o nascondere le icone nei suggerimenti.",
"suggest.showInlineDetails": "Controlla se i dettagli del suggerimento vengono visualizzati inline con l'etichetta o solo nel widget dei dettagli.",
"suggest.showStatusBar": "Controlla la visibilità della barra di stato nella parte inferiore del widget dei suggerimenti.",
"suggest.snippetsPreventQuickSuggestions": "Controlla se un frammento attivo impedisce i suggerimenti rapidi.",
"suggestFontSize": "Dimensioni del carattere per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore di {1}.",
"suggestLineHeight": "Altezza della riga per il widget dei suggerimenti. Se impostato su {0}, viene usato il valore {1}. Il valore minimo è 8.",
"suggestOnTriggerCharacters": "Controlla se i suggerimenti devono essere visualizzati automaticamente durante la digitazione dei caratteri trigger.",
@ -575,6 +589,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorHasSelection": "Indica se per l'editor esiste testo selezionato",
"editorHasSignatureHelpProvider": "Indica se per l'editor esiste un provider della guida per la firma",
"editorHasTypeDefinitionProvider": "Indica se per l'editor esiste un provider di definizioni di tipo",
"editorHoverFocused": "Indica se l'area sensibile al passaggio del mouse dell'edito è attivata",
"editorHoverVisible": "Indica se il passaggio del puntatore nell'editor è visibile",
"editorLangId": "Identificatore lingua dell'editor",
"editorReadonly": "Indica se l'editor è di sola lettura",
@ -582,6 +597,11 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorTextFocus": "Indica se il testo dell'editor ha lo stato attivo (il cursore lampeggia)",
"inCompositeEditor": "Indica se l'editor fa parte di un editor più esteso (ad esempio notebook)",
"inDiffEditor": "Indica se il contesto è un editor diff",
"isEmbeddedDiffEditor": "Indica se il contesto è un editor diff incorporato",
"standaloneColorPickerFocused": "Indicare se la selezione colori autonoma è evidenziata",
"standaloneColorPickerVisible": "Indicare se la selezione colori autonoma è visibile",
"stickyScrollFocused": "Indica se lo scorrimento permanente è attivo",
"stickyScrollVisible": "Indica se lo scorrimento permanente è visibile",
"textInputFocus": "Indica se un editor o un input RTF ha lo stato attivo (il cursore lampeggia)"
},
"vs/editor/common/languages/modesRegistry": {
@ -592,6 +612,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/editor/common/standaloneStrings": {
"accessibilityHelpMessage": "Premere ALT+F1 per le opzioni di accessibilità.",
"accessibilityHelpTitle": "Guida sull'accessibilità",
"auto_off": "L'editor è configurato per non essere ottimizzato per l'utilizzo con un'utilità per la lettura dello schermo, che non viene usata in questo momento.",
"auto_on": "L'editor è configurato per essere ottimizzato per l'utilizzo con un'utilità per la lettura dello schermo.",
"bulkEditServiceSummary": "Effettuate {0} modifiche in {1} file",
@ -642,6 +663,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"miGoToBracket": "Vai alla parentesi &&quadra",
"overviewRulerBracketMatchForeground": "Colore del marcatore del righello delle annotazioni per la corrispondenza delle parentesi.",
"smartSelect.jumpBracket": "Vai alla parentesi quadra",
"smartSelect.removeBrackets": "Rimuovi parentesi quadre",
"smartSelect.selectToBracket": "Seleziona fino alla parentesi"
},
"vs/editor/contrib/caretOperations/browser/caretOperations": {
@ -693,12 +715,15 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"organizeImports.label": "Organizza import",
"quickfix.trigger.label": "Correzione rapida...",
"refactor.label": "Effettua refactoring...",
"refactor.preview.label": "Refactoring con anteprima...",
"source.label": "Azione origine..."
},
"vs/editor/contrib/codeAction/browser/codeActionContributions": {
"showCodeActionHeaders": "Abilita/disabilita la visualizzazione delle intestazioni gruppo nel menu Azione codice."
},
"vs/editor/contrib/codeAction/browser/codeActionController": {
"hideMoreActions": "Nascondi elementi disabilitati",
"showMoreActions": "Mostra elementi disabilitati"
},
"vs/editor/contrib/codeAction/browser/codeActionMenu": {
"codeAction.widget.id.convert": "Riscrivi...",
"codeAction.widget.id.extract": "Estrai...",
@ -709,10 +734,6 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"codeAction.widget.id.source": "Azione di origine...",
"codeAction.widget.id.surround": "Racchiudi con..."
},
"vs/editor/contrib/codeAction/browser/codeActionUi": {
"hideMoreActions": "Nascondi elementi disabilitati",
"showMoreActions": "Mostra elementi disabilitati"
},
"vs/editor/contrib/codeAction/browser/lightBulbWidget": {
"codeAction": "Mostra Azioni codice",
"codeActionWithKb": "Mostra Azioni codice ({0})",
@ -722,7 +743,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"showLensOnLine": "Mostra comandi di CodeLens per la riga corrente"
},
"vs/editor/contrib/colorPicker/browser/colorPickerWidget": {
"clickToToggleColorOptions": "Fare clic per attivare/disattivare le opzioni di colore (rgb/hsl/hex)"
"clickToToggleColorOptions": "Fare clic per attivare/disattivare le opzioni di colore (rgb/hsl/hex)",
"closeIcon": "Icona per chiudere la selezione colori"
},
"vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions": {
"hideColorPicker": "Nascondere la Selezione colori",
"insertColorWithStandaloneColorPicker": "Inserire colore con Selezione colori autonomo",
"mishowOrFocusStandaloneColorPicker": "&&Mostra o sposta lo stato attivo su Selezione colori autonomo",
"showOrFocusStandaloneColorPicker": "Mostra o sposta lo stato attivo su Selezione colori autonomo"
},
"vs/editor/contrib/comment/browser/comment": {
"comment.block": "Attiva/Disattiva commento per il blocco",
@ -744,19 +772,10 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"context.minimap.slider.always": "Sempre",
"context.minimap.slider.mouseover": "Passaggio del mouse"
},
"vs/editor/contrib/copyPaste/browser/copyPasteContribution": {
"pasteActions": "Abilita/disabilita l'esecuzione delle modifiche dalle estensioni quando si incolla."
},
"vs/editor/contrib/copyPaste/browser/copyPasteController": {
"pasteProgressTitle": "Esecuzione dei gestori Incolla in corso..."
},
"vs/editor/contrib/cursorUndo/browser/cursorUndo": {
"cursor.redo": "Cursore - Ripeti",
"cursor.undo": "Cursore - Annulla"
},
"vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution": {
"dropProgressTitle": "Esecuzione dei gestori di rilascio in corso..."
},
"vs/editor/contrib/editorState/browser/keybindingCancellation": {
"cancellableOperation": "Indica se l'editor esegue un'operazione annullabile, ad esempio 'Anteprima riferimenti'"
},
@ -768,6 +787,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"findMatchAction.goToMatch": "Andare a Corrispondenza...",
"findMatchAction.inputPlaceHolder": "Digitare un numero per passare a una corrispondenza specifica (tra 1 e {0})",
"findMatchAction.inputValidationMessage": "Digitare un numero compreso tra 1 e {0}",
"findMatchAction.noResults": "Nessuna corrispondenza. Provare a cercare qualcos'altro.",
"findNextMatchAction": "Trova successivo",
"findPreviousMatchAction": "Trova precedente",
"miFind": "&&Trova",
@ -934,8 +954,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/editor/contrib/gotoSymbol/browser/referencesModel": {
"aria.fileReferences.1": "1 simbolo in {0}, percorso completo {1}",
"aria.fileReferences.N": "{0} simboli in {1}, percorso completo {2}",
"aria.oneReference": "simbolo in {0} alla riga {1} colonna {2}",
"aria.oneReference.preview": "simbolo in {0} alla riga {1} colonna {2}, {3}",
"aria.oneReference": "in {0} alla riga {1} della colonna {2}",
"aria.oneReference.preview": "{0} in {1} alla riga {2} della colonna {3}",
"aria.result.0": "Non sono stati trovati risultati",
"aria.result.1": "Trovato 1 simbolo in {0}",
"aria.result.n1": "Trovati {0} simboli in {1}",
@ -947,8 +967,17 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"location.kb": "Simbolo {0} di {1}, {2} per il successivo"
},
"vs/editor/contrib/hover/browser/hover": {
"escapeFocusHover": "Esci dallo stato attivo al passaggio del mouse",
"goToBottomHover": "Vai in basso al passaggio del mouse",
"goToTopHover": "Vai in alto al passaggio del mouse",
"pageDownHover": "Vai alla pagina successiva al passaggio del mouse",
"pageUpHover": "Vai alla pagina precedente al passaggio del mouse",
"scrollDownHover": "Scorri verso il basso al passaggio del mouse",
"scrollLeftHover": "Scorri a sinistra al passaggio del mouse",
"scrollRightHover": "Scorri a destra al passaggio del mouse",
"scrollUpHover": "Scorri verso l'alto al passaggio del mouse",
"showDefinitionPreviewHover": "Mostra anteprima definizione al passaggio del mouse",
"showHover": "Visualizza passaggio del mouse"
"showOrFocusHover": "Mostra o sposta lo stato attivo al passaggio del mouse"
},
"vs/editor/contrib/hover/browser/markdownHoverParticipant": {
"modesContentHover.loading": "Caricamento...",
@ -985,28 +1014,30 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"links.navigate.kb.meta": "CTRL+clic",
"links.navigate.kb.meta.mac": "CMD+clic"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextController": {
"vs/editor/contrib/inlineCompletions/browser/commands": {
"accept": "Accetta",
"acceptLine": "Accetta riga",
"acceptWord": "Accetta parola",
"action.inlineSuggest.accept": "Accetta il suggerimento in linea",
"action.inlineSuggest.acceptNextLine": "Accetta la riga successiva del suggerimento in linea",
"action.inlineSuggest.acceptNextWord": "Accettare suggerimento inline per la parola successiva",
"action.inlineSuggest.alwaysShowToolbar": "Mostra sempre la barra degli strumenti",
"action.inlineSuggest.hide": "Nascondi suggerimento inline",
"action.inlineSuggest.showNext": "Mostrare suggerimento inline successivo",
"action.inlineSuggest.showPrevious": "Mostrare suggerimento inline precedente",
"action.inlineSuggest.trigger": "Trigger del suggerimento inline",
"action.inlineSuggest.undo": "Annullare Accetta parola",
"action.inlineSuggest.trigger": "Trigger del suggerimento inline"
},
"vs/editor/contrib/inlineCompletions/browser/hoverParticipant": {
"inlineSuggestionFollows": "Suggerimento:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys": {
"alwaysShowInlineSuggestionToolbar": "Indica se la barra degli strumenti dei suggerimenti in linea deve essere sempre visibile",
"canUndoInlineSuggestion": "Indica se l'annullamento annullerebbe un suggerimento inline",
"inlineSuggestionHasIndentation": "Se il suggerimento in linea inizia con spazi vuoti",
"inlineSuggestionHasIndentationLessThanTabSize": "Indica se il suggerimento inline inizia con uno spazio vuoto minore di quello che verrebbe inserito dalla tabulazione",
"inlineSuggestionVisible": "Se è visibile un suggerimento inline",
"undoAcceptWord": "Annulla Accetta parola"
"suppressSuggestions": "Indica se i suggerimenti devono essere eliminati per il suggerimento corrente"
},
"vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant": {
"inlineSuggestionFollows": "Suggerimento:"
},
"vs/editor/contrib/inlineCompletions/browser/inlineSuggestionHintsWidget": {
"vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget": {
"content": "{0} ({1})",
"next": "Avanti",
"parameterHintsNextIcon": "Icona per visualizzare il suggerimento del parametro successivo.",
@ -1237,8 +1268,14 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"WednesdayShort": "Mer"
},
"vs/editor/contrib/stickyScroll/browser/stickyScrollActions": {
"focusStickyScroll": "Sposta stato attivo su Scorrimento permanente",
"goToFocusedStickyScrollLine.title": "Vai alla linea di scorrimento permanente attiva",
"miStickyScroll": "&&Scorrimento permanente",
"mifocusStickyScroll": "&&Sposta stato attivo su Scorrimento permanente",
"mitoggleStickyScroll": "&&Alternanza scorrimento permanente",
"selectEditor.title": "Selezionare l'editor",
"selectNextStickyScrollLine.title": "Seleziona la riga di scorrimento permanente successiva",
"selectPreviousStickyScrollLine.title": "Seleziona riga di scorrimento permanente precedente",
"stickyScroll": "Scorrimento permanente",
"toggleStickyScroll": "Alternanza scorrimento permanente"
},
@ -1343,6 +1380,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"unicodeHighlight.adjustSettings": "Modificare impostazioni",
"unicodeHighlight.allowCommonCharactersInLanguage": "Consentire i caratteri Unicode più comuni nel linguaggio \"{0}\".",
"unicodeHighlight.characterIsAmbiguous": "Il carattere {0} potrebbe essere confuso con il carattere {1}, che è più comune nel codice sorgente.",
"unicodeHighlight.characterIsAmbiguousASCII": "Il carattere {0} potrebbe essere confuso con il carattere ASCII {1}, che è più comune nel codice sorgente.",
"unicodeHighlight.characterIsInvisible": "Il carattere {0} è invisibile.",
"unicodeHighlight.characterIsNonBasicAscii": "Il carattere {0} non è un carattere ASCII di base.",
"unicodeHighlight.configureUnicodeHighlightOptions": "Configurare opzioni evidenziazione Unicode",
@ -1386,6 +1424,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/action/common/actionCommonCategories": {
"developer": "Sviluppatore",
"file": "FILE",
"help": "Guida",
"preferences": "Preferenze",
"test": "Test",
@ -1448,6 +1487,19 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"vs/platform/contextkey/browser/contextKeyService": {
"getContextKeyInfo": "Comando che restituisce informazioni sulle chiavi di contesto"
},
"vs/platform/contextkey/common/contextkey": {
"contextkey.parser.error.closingParenthesis": "Parentesi chiusa ')'",
"contextkey.parser.error.emptyString": "Espressione chiave di contesto vuota",
"contextkey.parser.error.emptyString.hint": "Si è dimenticato di scrivere un'espressione? È anche possibile inserire 'false' o 'true' per restituire sempre rispettivamente false o true.",
"contextkey.parser.error.expectedButGot": "Previsto: {0}\r\nRicevuto: '{1}'.",
"contextkey.parser.error.noInAfterNot": "'in' dopo 'not'.",
"contextkey.parser.error.unexpectedEOF": "Fine imprevista dell'espressione",
"contextkey.parser.error.unexpectedEOF.hint": "Si è dimenticato di inserire una chiave di contesto?",
"contextkey.parser.error.unexpectedToken": "Token imprevisto",
"contextkey.parser.error.unexpectedToken.hint": "Si è dimenticato di inserire && o || prima del token?",
"contextkey.scanner.errorForLinter": "Token imprevisto.",
"contextkey.scanner.errorForLinterWithHint": "Token imprevisto. Suggerimento: {0}"
},
"vs/platform/contextkey/common/contextkeys": {
"inputFocus": "Indica se lo stato attivo della tastiera si trova all'interno di una casella di input",
"isIOS": "Indica se il sistema operativo è iOS",
@ -1459,6 +1511,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"isWindows": "Indica se il sistema operativo è Windows",
"productQualityType": "Tipo di qualità del VS Code"
},
"vs/platform/contextkey/common/scanner": {
"contextkey.scanner.hint.didYouForgetToEscapeSlash": "Si è dimenticato di eseguire il carattere di escape '/' (slash)? Inserire due barre rovesciate prima del carattere di escape, ad esempio '\\\\/'.",
"contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote": "Si è dimenticato di aprire o chiudere la citazione?",
"contextkey.scanner.hint.didYouMean1": "Si intendeva {0}?",
"contextkey.scanner.hint.didYouMean2": "Si intendeva {0} o {1}?",
"contextkey.scanner.hint.didYouMean3": "Si intendeva {0}, {1} o {2}?"
},
"vs/platform/dialogs/common/dialogs": {
"cancelButton": "Annulla",
"moreFile": "...1 altro file non visualizzato",
@ -1482,7 +1541,8 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
},
"vs/platform/keybinding/common/abstractKeybindingService": {
"first.chord": "È stato premuto ({0}). In attesa del secondo tasto...",
"missing.chord": "La combinazione di tasti ({0}, {1}) non è un comando."
"missing.chord": "La combinazione di tasti ({0}, {1}) non è un comando.",
"next.chord": "È stato premuto ({0}). In attesa del prossimo tasto..."
},
"vs/platform/list/browser/listService": {
"Fast Scroll Sensitivity": "Moltiplicatore della velocità di scorrimento quando si preme `Alt`.",
@ -1624,7 +1684,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"editorWidgetBorder": "Colore del bordo dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo e se il colore non è sottoposto a override da un widget.",
"editorWidgetForeground": "Colore primo piano dei widget dell'editor, ad esempio Trova/Sostituisci.",
"editorWidgetResizeBorder": "Colore del bordo della barra di ridimensionamento dei widget dell'editor. Il colore viene usato solo se il widget sceglie di avere un bordo di ridimensionamento e se il colore non è sostituito da quello di un widget.",
"errorBorder": "Colore del bordo delle caselle di errore nell'editor.",
"errorBorder": "Se impostato, colore delle doppie sottolineature per gli errori nell'editor.",
"errorForeground": "Colore primo piano globale per i messaggi di errore. Questo colore viene usato solo se non è sostituito da quello di un componente.",
"findMatchHighlight": "Colore degli altri risultati della ricerca. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.",
"findMatchHighlightBorder": "Colore del bordo delle altre corrispondenze della ricerca.",
@ -1633,13 +1693,13 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"focusBorder": "Colore del bordo globale per gli elementi evidenziati. Questo colore viene usato solo se non è sostituito da quello di un componente.",
"foreground": "Colore primo piano generale. Questo colore viene usato solo se non è sostituito da quello di un componente.",
"highlight": "Colore primo piano Elenco/Struttura ad albero delle occorrenze trovate durante la ricerca nell'Elenco/Struttura ad albero.",
"hintBorder": "Colore del bordo delle caselle dei suggerimenti nell'editor.",
"hintBorder": "Se impostato, colore delle doppie sottolineature per i suggerimenti nell'editor.",
"hoverBackground": "Colore di sfondo dell'area sensibile al passaggio del mouse dell'editor.",
"hoverBorder": "Colore del bordo dell'area sensibile al passaggio del mouse dell'editor.",
"hoverForeground": "Colore primo piano dell'area sensibile al passaggio del mouse dell'editor.",
"hoverHighlight": "Evidenziazione sotto la parola per cui è visualizzata un'area sensibile al passaggio del mouse. Il colore non deve essere opaco per evitare di nascondere le decorazioni sottostanti.",
"iconForeground": "Colore predefinito per le icone nel workbench.",
"infoBorder": "Colore del bordo delle caselle informative nell'editor.",
"infoBorder": "Se impostato, colore delle doppie sottolineature per i messaggi informativi nell'editor.",
"inputBoxActiveOptionBorder": "Colore del bordo di opzioni attivate nei campi di input.",
"inputBoxBackground": "Sfondo della casella di input.",
"inputBoxBorder": "Bordo della casella di input.",
@ -1673,7 +1733,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"listFilterWidgetBackground": "Colore di sfondo del widget del filtro per tipo in elenchi e alberi.",
"listFilterWidgetNoMatchesOutline": "Colore del contorno del widget del filtro per tipo in elenchi e alberi quando non sono presenti corrispondenze.",
"listFilterWidgetOutline": "Colore del contorno del widget del filtro per tipo in elenchi e alberi.",
"listFilterWidgetShadow": "Colore ombreggiatura del widget del filtro in elenchi e alberi.",
"listFilterWidgetShadow": "Shadow color of the type filter widget in lists and trees.",
"listFocusAndSelectionOutline": "Colore del contorno dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero è attivo e selezionato. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.",
"listFocusBackground": "Colore di sfondo dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero è attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.",
"listFocusForeground": "Colore primo piano dell'elenco/albero per l'elemento con lo stato attivo quando l'elenco/albero è attivo. Un elenco/albero attivo ha lo stato attivo della tastiera, a differenza di uno inattivo.",
@ -1734,6 +1794,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"scrollbarSliderActiveBackground": "Colore di sfondo del cursore della barra di scorrimento quando si fa clic con il mouse.",
"scrollbarSliderBackground": "Colore di sfondo del cursore della barra di scorrimento.",
"scrollbarSliderHoverBackground": "Colore di sfondo del cursore della barra di scorrimento al passaggio del mouse.",
"search.resultsInfoForeground": "Colore del testo nel messaggio di completamento del viewlet di ricerca.",
"searchEditor.editorFindMatchBorder": "Colore del bordo delle corrispondenze query dell'editor della ricerca.",
"searchEditor.queryMatch": "Colore delle corrispondenze query dell'editor della ricerca.",
"selectionBackground": "Il colore di sfondo delle selezioni di testo in workbench (ad esempio per i campi di input o aree di testo). Si noti che questo non si applica alle selezioni all'interno dell'editor.",
@ -1756,7 +1817,7 @@ window.MonacoEnvironment.Locale = window.MonacoLocale = {
"toolbarHoverOutline": "Contorno della barra degli strumenti al passaggio del mouse sulle azioni",
"treeInactiveIndentGuidesStroke": "Colore del tratto dell'albero per le guide di rientro non attive.",
"treeIndentGuidesStroke": "Colore del tratto dell'albero per le guide per i rientri.",
"warningBorder": "Colore del bordo delle caselle di avviso nell'editor.",
"warningBorder": "Se impostato, colore delle doppie sottolineature per gli avvisi nell'editor.",
"widgetBorder": "Colore del bordo dei widget, ad es. Trova/Sostituisci all'interno dell'editor.",
"widgetShadow": "Colore ombreggiatura dei widget, ad es. Trova/Sostituisci all'interno dell'editor."
},

Some files were not shown because too many files have changed in this diff Show More