diff --git a/.eslintrc.js b/.eslintrc.js index ba733c94..603ad788 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,66 +1,66 @@ module.exports = { - parser: '@typescript-eslint/parser', // Specifies the ESLint parser - parserOptions: { - ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features - sourceType: 'module', // Allows for the use of imports - ecmaFeatures: { - jsx: true, // Allows for the parsing of JSX - }, + parser: '@typescript-eslint/parser', // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + ecmaFeatures: { + jsx: true, // Allows for the parsing of JSX }, - ignorePatterns: [ - 'node_modules/*', - '**/node_modules/*', - '.node_modules/*', - '.github/*', - '.browser_modules/*', - 'docs/*', - 'scripts/*', - 'electron-app/lib/*', - 'electron-app/src-gen/*', - 'electron-app/gen-webpack*.js', - '!electron-app/webpack.config.js', - 'plugins/*', - 'arduino-ide-extension/src/node/cli-protocol', + }, + ignorePatterns: [ + 'node_modules/*', + '**/node_modules/*', + '.node_modules/*', + '.github/*', + '.browser_modules/*', + 'docs/*', + 'scripts/*', + 'electron-app/lib/*', + 'electron-app/src-gen/*', + 'electron-app/gen-webpack*.js', + '!electron-app/webpack.config.js', + 'plugins/*', + 'arduino-ide-extension/src/node/cli-protocol', + ], + settings: { + react: { + version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use + }, + }, + extends: [ + 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin + 'plugin:react/recommended', // Uses the recommended rules from @eslint-plugin-react + 'plugin:react-hooks/recommended', // Uses recommended rules from react hooks + 'plugin:prettier/recommended', + 'prettier', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + ], + plugins: ['prettier', 'unused-imports'], + rules: { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'warn', + '@typescript-eslint/no-empty-interface': 'warn', + 'no-unused-vars': 'off', + 'unused-imports/no-unused-imports': 'error', + 'unused-imports/no-unused-vars': [ + 'warn', + { + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', + }, ], - settings: { - react: { - version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use - }, - }, - extends: [ - 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin - 'plugin:react/recommended', // Uses the recommended rules from @eslint-plugin-react - 'plugin:react-hooks/recommended', // Uses recommended rules from react hooks - 'plugin:prettier/recommended', - 'prettier', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier - ], - plugins: ['prettier', 'unused-imports'], - rules: { - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/no-empty-function': 'warn', - '@typescript-eslint/no-empty-interface': 'warn', - 'no-unused-vars': 'off', - 'unused-imports/no-unused-imports': 'error', - 'unused-imports/no-unused-vars': [ - 'warn', - { - vars: 'all', - varsIgnorePattern: '^_', - args: 'after-used', - argsIgnorePattern: '^_', - }, - ], - 'react/display-name': 'warn', - eqeqeq: ['error', 'smart'], - 'guard-for-in': 'off', - 'id-blacklist': 'off', - 'id-match': 'off', - 'no-underscore-dangle': 'off', - 'no-unused-expressions': 'off', - 'no-var': 'error', - radix: 'error', - 'prettier/prettier': 'warn', - }, + 'react/display-name': 'warn', + eqeqeq: ['error', 'smart'], + 'guard-for-in': 'off', + 'id-blacklist': 'off', + 'id-match': 'off', + 'no-underscore-dangle': 'off', + 'no-unused-expressions': 'off', + 'no-var': 'error', + radix: 'error', + 'prettier/prettier': 'warn', + }, }; diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 62db515f..4e647d8d 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,7 +1,7 @@ name: Bug report description: Report a problem with the code or documentation in this repository. labels: - - "type: imperfection" + - 'type: imperfection' body: - type: textarea id: description diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index dbfc5785..955315a0 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,7 +1,7 @@ name: Feature request description: Suggest an enhancement to this project. labels: - - "type: enhancement" + - 'type: enhancement' body: - type: textarea id: description diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 43749222..b9e9f910 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,15 +1,18 @@ ### Motivation + ### Change description + ### Other information + ### Reviewer checklist -* [ ] PR addresses a single concern. -* [ ] The PR has no duplicates (please search among the [Pull Requests](https://github.com/arduino/arduino-ide/pulls) before creating one) -* [ ] PR title and description are properly filled. -* [ ] Docs have been added / updated (for bug fixes / features) \ No newline at end of file +- [ ] PR addresses a single concern. +- [ ] The PR has no duplicates (please search among the [Pull Requests](https://github.com/arduino/arduino-ide/pulls) before creating one) +- [ ] PR title and description are properly filled. +- [ ] Docs have been added / updated (for bug fixes / features) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f640b039..06f3449e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -12,4 +12,4 @@ updates: schedule: interval: daily labels: - - "topic: infrastructure" + - 'topic: infrastructure' diff --git a/.github/label-configuration-files/labels.yml b/.github/label-configuration-files/labels.yml index b0ae38dc..3b3e2785 100644 --- a/.github/label-configuration-files/labels.yml +++ b/.github/label-configuration-files/labels.yml @@ -1,27 +1,27 @@ # Used by the "Sync Labels" workflow # See: https://github.com/Financial-Times/github-label-sync#label-config-file -- name: "topic: accessibility" - color: "00ffff" +- name: 'topic: accessibility' + color: '00ffff' description: Enabling the use of the software by everyone -- name: "topic: CLI" - color: "00ffff" +- name: 'topic: CLI' + color: '00ffff' description: Related to Arduino CLI -- name: "topic: cloud" - color: "00ffff" +- name: 'topic: cloud' + color: '00ffff' description: Related to Arduino Cloud and cloud sketches -- name: "topic: debugger" - color: "00ffff" +- name: 'topic: debugger' + color: '00ffff' description: Related to the integrated debugger -- name: "topic: language server" - color: "00ffff" +- name: 'topic: language server' + color: '00ffff' description: Related to the Arduino Language Server -- name: "topic: serial monitor" - color: "00ffff" +- name: 'topic: serial monitor' + color: '00ffff' description: Related to the Serial Monitor -- name: "topic: theia" - color: "00ffff" +- name: 'topic: theia' + color: '00ffff' description: Related to the Theia IDE framework -- name: "topic: theme" - color: "00ffff" +- name: 'topic: theme' + color: '00ffff' description: Related to GUI theming diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5b780017..222e0054 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ on: env: # See vars.GO_VERSION field of https://github.com/arduino/arduino-cli/blob/master/DistTasks.yml - GO_VERSION: "1.19" + GO_VERSION: '1.19' JOB_TRANSFER_ARTIFACT: build-artifacts CHANGELOG_ARTIFACTS: changelog diff --git a/.github/workflows/check-i18n-task.yml b/.github/workflows/check-i18n-task.yml index fcbecf28..bf50d762 100644 --- a/.github/workflows/check-i18n-task.yml +++ b/.github/workflows/check-i18n-task.yml @@ -2,7 +2,7 @@ name: Check Internationalization env: # See vars.GO_VERSION field of https://github.com/arduino/arduino-cli/blob/master/DistTasks.yml - GO_VERSION: "1.19" + GO_VERSION: '1.19' # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: diff --git a/.github/workflows/i18n-nightly-push.yml b/.github/workflows/i18n-nightly-push.yml index 08a2741b..303ad511 100644 --- a/.github/workflows/i18n-nightly-push.yml +++ b/.github/workflows/i18n-nightly-push.yml @@ -2,7 +2,7 @@ name: i18n-nightly-push env: # See vars.GO_VERSION field of https://github.com/arduino/arduino-cli/blob/master/DistTasks.yml - GO_VERSION: "1.19" + GO_VERSION: '1.19' on: schedule: diff --git a/.github/workflows/i18n-weekly-pull.yml b/.github/workflows/i18n-weekly-pull.yml index e2196476..ac4d4580 100644 --- a/.github/workflows/i18n-weekly-pull.yml +++ b/.github/workflows/i18n-weekly-pull.yml @@ -2,7 +2,7 @@ name: i18n-weekly-pull env: # See vars.GO_VERSION field of https://github.com/arduino/arduino-cli/blob/master/DistTasks.yml - GO_VERSION: "1.19" + GO_VERSION: '1.19' on: schedule: diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 9ecf638e..0ec11e7f 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -5,15 +5,15 @@ name: Sync Labels on: push: paths: - - ".github/workflows/sync-labels.ya?ml" - - ".github/label-configuration-files/*.ya?ml" + - '.github/workflows/sync-labels.ya?ml' + - '.github/label-configuration-files/*.ya?ml' pull_request: paths: - - ".github/workflows/sync-labels.ya?ml" - - ".github/label-configuration-files/*.ya?ml" + - '.github/workflows/sync-labels.ya?ml' + - '.github/label-configuration-files/*.ya?ml' schedule: # Run daily at 8 AM UTC to sync with changes to shared label configurations. - - cron: "0 8 * * *" + - cron: '0 8 * * *' workflow_dispatch: repository_dispatch: diff --git a/.github/workflows/themes-weekly-pull.yml b/.github/workflows/themes-weekly-pull.yml index 4990e1a3..78261389 100644 --- a/.github/workflows/themes-weekly-pull.yml +++ b/.github/workflows/themes-weekly-pull.yml @@ -8,8 +8,8 @@ on: env: # See vars.GO_VERSION field of https://github.com/arduino/arduino-cli/blob/master/DistTasks.yml - GO_VERSION: "1.19" - NODE_VERSION: 16.x + GO_VERSION: '1.19' + NODE_VERSION: '18.17' jobs: pull-from-jsonbin: diff --git a/.vscode/launch.json b/.vscode/launch.json index 11c11555..2a8081fb 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,7 +7,7 @@ "name": "App", "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", "windows": { - "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" }, "cwd": "${workspaceFolder}/electron-app", "args": [ @@ -19,7 +19,7 @@ "--no-app-auto-install", "--plugins=local-dir:./plugins", "--hosted-plugin-inspect=9339", - "--no-ping-timeout", + "--no-ping-timeout" ], "env": { "NODE_ENV": "development" @@ -42,7 +42,7 @@ "name": "App [Dev]", "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", "windows": { - "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" }, "cwd": "${workspaceFolder}/electron-app", "args": [ @@ -56,7 +56,7 @@ "--hosted-plugin-inspect=9339", "--content-trace", "--open-devtools", - "--no-ping-timeout", + "--no-ping-timeout" ], "env": { "NODE_ENV": "development" @@ -115,15 +115,12 @@ "request": "attach", "name": "Attach by Process ID", "processId": "${command:PickProcess}" - }, + } ], "compounds": [ { "name": "Launch Electron Backend & Frontend", - "configurations": [ - "App", - "Attach to Electron Frontend" - ] + "configurations": ["App", "Attach to Electron Frontend"] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 848b9a2d..0d8f3bbd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,5 +8,5 @@ "typescript.tsdk": "node_modules/typescript/lib", "editor.codeActionsOnSave": { "source.fixAll.eslint": true - }, + } } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index acc9e168..b53773f8 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -40,10 +40,7 @@ { "label": "Watch All", "type": "shell", - "dependsOn": [ - "Watch Extension", - "Watch App" - ] + "dependsOn": ["Watch Extension", "Watch App"] } ] } diff --git a/arduino-ide-extension/README.md b/arduino-ide-extension/README.md index db9cff8b..e6cd0f8b 100644 --- a/arduino-ide-extension/README.md +++ b/arduino-ide-extension/README.md @@ -55,12 +55,14 @@ The Config Service knows about your system, like for example the default sketch - checking whether a file is in a data or sketch directory ### `"arduino"` configuration in the `package.json`: - - `"cli"`: - - `"version"` type `string` | `{ owner: string, repo: string, commitish?: string }`: if the type is a `string` and is a valid semver, it will get the corresponding [released](https://github.com/arduino/arduino-cli/releases) CLI. If the type is `string` and is a [date in `YYYYMMDD`](https://arduino.github.io/arduino-cli/latest/installation/#nightly-builds) format, it will get a nightly CLI. If the type is an object, a CLI, build from the sources in the `owner/repo` will be used. If `commitish` is not defined, the HEAD of the default branch will be used. In any other cases an error is thrown. + +- `"cli"`: + - `"version"` type `string` | `{ owner: string, repo: string, commitish?: string }`: if the type is a `string` and is a valid semver, it will get the corresponding [released](https://github.com/arduino/arduino-cli/releases) CLI. If the type is `string` and is a [date in `YYYYMMDD`](https://arduino.github.io/arduino-cli/latest/installation/#nightly-builds) format, it will get a nightly CLI. If the type is an object, a CLI, build from the sources in the `owner/repo` will be used. If `commitish` is not defined, the HEAD of the default branch will be used. In any other cases an error is thrown. #### Rebuild gRPC protocol interfaces - - Some CLI updates can bring changes to the gRPC interfaces, as the API might change. gRPC interfaces can be updated running the command - `yarn --cwd arduino-ide-extension generate-protocol` + +- Some CLI updates can bring changes to the gRPC interfaces, as the API might change. gRPC interfaces can be updated running the command + `yarn --cwd arduino-ide-extension generate-protocol` ### Update **clangd** and **ClangFormat** @@ -72,11 +74,13 @@ The [**clangd** C++ language server](https://clangd.llvm.org/) and the [**ClangF 1. Submit a pull request in [the `arduino/tooling-project-assets` repository](https://github.com/arduino/tooling-project-assets) to update the version in the `vars.DEFAULT_CLANG_FORMAT_VERSION` field of [`Taskfile.yml`](https://github.com/arduino/tooling-project-assets/blob/main/Taskfile.yml). ### Customize Icons + ArduinoIde uses a customized version of FontAwesome. In order to update/replace icons follow the following steps: - - import the file `arduino-icons.json` in [Icomoon](https://icomoon.io/app/#/projects) - - load it - - edit the icons as needed - - !! download the **new** `arduino-icons.json` file and put it in this repo - - Click on "Generate Font" in Icomoon, then download - - place the updated fonts in the `src/style/fonts` directory + +- import the file `arduino-icons.json` in [Icomoon](https://icomoon.io/app/#/projects) +- load it +- edit the icons as needed +- !! download the **new** `arduino-icons.json` file and put it in this repo +- Click on "Generate Font" in Icomoon, then download +- place the updated fonts in the `src/style/fonts` directory diff --git a/arduino-ide-extension/src/browser/arduino-preferences.ts b/arduino-ide-extension/src/browser/arduino-preferences.ts index ebe525d6..f2c83a7f 100644 --- a/arduino-ide-extension/src/browser/arduino-preferences.ts +++ b/arduino-ide-extension/src/browser/arduino-preferences.ts @@ -58,7 +58,9 @@ type StrictPreferenceSchemaProperties = { [p in keyof T]: PreferenceSchemaProperty; }; type ArduinoPreferenceSchemaProperties = - StrictPreferenceSchemaProperties & { 'arduino.window.zoomLevel': PreferenceSchemaProperty }; + StrictPreferenceSchemaProperties & { + 'arduino.window.zoomLevel': PreferenceSchemaProperty; + }; const properties: ArduinoPreferenceSchemaProperties = { 'arduino.language.log': { diff --git a/arduino-ide-extension/src/browser/contributions/upload-firmware.ts b/arduino-ide-extension/src/browser/contributions/upload-firmware.ts index e01a8fb5..7ed85c99 100644 --- a/arduino-ide-extension/src/browser/contributions/upload-firmware.ts +++ b/arduino-ide-extension/src/browser/contributions/upload-firmware.ts @@ -45,10 +45,7 @@ export namespace UploadFirmware { export namespace Commands { export const OPEN: Command = { id: 'arduino-upload-firmware-open', - label: nls.localize( - 'arduino/firmware/updater', - 'Firmware Updater' - ), + label: nls.localize('arduino/firmware/updater', 'Firmware Updater'), category: 'Arduino', }; } diff --git a/arduino-ide-extension/src/browser/style/arduino-select.css b/arduino-ide-extension/src/browser/style/arduino-select.css index 25b4989b..8bd53b04 100644 --- a/arduino-ide-extension/src/browser/style/arduino-select.css +++ b/arduino-ide-extension/src/browser/style/arduino-select.css @@ -38,7 +38,9 @@ .arduino-select__control.arduino-select__control--menu-is-open { border: 1px solid !important; border-color: var(--theia-focusBorder) !important; - border-bottom-color: var(--theia-sideBar-background) !important; /* if the bottom border color has the same color as the background of the control, we make the border "invisible" */ + border-bottom-color: var( + --theia-sideBar-background + ) !important; /* if the bottom border color has the same color as the background of the control, we make the border "invisible" */ } .arduino-select__value-container .arduino-select__single-value { diff --git a/arduino-ide-extension/src/browser/style/boards-config-dialog.css b/arduino-ide-extension/src/browser/style/boards-config-dialog.css index ad18afc7..cc86271e 100644 --- a/arduino-ide-extension/src/browser/style/boards-config-dialog.css +++ b/arduino-ide-extension/src/browser/style/boards-config-dialog.css @@ -1,324 +1,324 @@ #select-board-dialog-container > .dialogBlock { - width: 640px; - height: 500px; + width: 640px; + height: 500px; } div#select-board-dialog { - margin: 5px; - height: 100%; + margin: 5px; + height: 100%; } div#select-board-dialog .selectBoardContainer { - display: flex; - gap: 10px; - overflow: hidden; - max-height: 100%; - height: 100%; + display: flex; + gap: 10px; + overflow: hidden; + max-height: 100%; + height: 100%; } .select-board-dialog .head { - margin: 5px; + margin: 5px; } .dialogContent.select-board-dialog { - height: 100%; + height: 100%; } div.dialogContent.select-board-dialog > div.head .title { - font-weight: 400; - letter-spacing: 0.02em; - font-size: 1.2em; - color: var(--theia-editorWidget-foreground); - margin-bottom: 10px; + font-weight: 400; + letter-spacing: 0.02em; + font-size: 1.2em; + color: var(--theia-editorWidget-foreground); + margin-bottom: 10px; } - div#select-board-dialog .selectBoardContainer .list .item.selected { - background: var(--theia-secondaryButton-hoverBackground); + background: var(--theia-secondaryButton-hoverBackground); } div#select-board-dialog .selectBoardContainer .list .item.selected i { - color: var(--theia-arduino-branding-primary); + color: var(--theia-arduino-branding-primary); } #select-board-dialog .selectBoardContainer .search, #select-board-dialog .selectBoardContainer .search input, #select-board-dialog .selectBoardContainer .list, #select-board-dialog .selectBoardContainer .list { - background: var(--theia-editor-background); + background: var(--theia-editor-background); } #select-board-dialog .selectBoardContainer .search input { - border: none; - width: 100%; - height: auto; - max-height: 37px; - padding: 10px 5px 10px 10px; - margin: 0; - vertical-align: top; - display: flex; - color: var(--theia-input-foreground); + border: none; + width: 100%; + height: auto; + max-height: 37px; + padding: 10px 5px 10px 10px; + margin: 0; + vertical-align: top; + display: flex; + color: var(--theia-input-foreground); } #select-board-dialog .selectBoardContainer .search input:focus { - box-shadow: none; + box-shadow: none; } #select-board-dialog .selectBoardContainer .container { - flex: 1; - overflow: hidden; - max-height: 100%; + flex: 1; + overflow: hidden; + max-height: 100%; } #select-board-dialog .selectBoardContainer .container .content { - display: flex; - flex-direction: column; - max-height: 100%; - height: 100%; + display: flex; + flex-direction: column; + max-height: 100%; + height: 100%; } #select-board-dialog .selectBoardContainer .left.container .content { - margin: 0 5px 0 0; + margin: 0 5px 0 0; } #select-board-dialog .selectBoardContainer .right.container .content { - margin: 0 0 0 5px; + margin: 0 0 0 5px; } #select-board-dialog .selectBoardContainer .container .content .title { - color: var(--theia-editorWidget-foreground); - padding: 0px 0px 10px 0px; - text-transform: uppercase; + color: var(--theia-editorWidget-foreground); + padding: 0px 0px 10px 0px; + text-transform: uppercase; } #select-board-dialog .selectBoardContainer .container .content .footer { - padding: 10px 5px 10px 0px; + padding: 10px 5px 10px 0px; } #select-board-dialog .selectBoardContainer .container .content .loading { - font-size: var(--theia-ui-font-size1); - color: var(--theia-editorWidget-foreground); - padding: 10px 5px 10px 10px; - text-transform: uppercase; - /* The max, min-height comes from `.list` 200px + 47px top padding - 2 * 10px top padding */ - max-height: 227px; - min-height: 227px; + font-size: var(--theia-ui-font-size1); + color: var(--theia-editorWidget-foreground); + padding: 10px 5px 10px 10px; + text-transform: uppercase; + /* The max, min-height comes from `.list` 200px + 47px top padding - 2 * 10px top padding */ + max-height: 227px; + min-height: 227px; } #select-board-dialog .selectBoardContainer .list .item { - padding: 10px 5px 10px 10px; - display: flex; - white-space: nowrap; - overflow-x: hidden; - flex: 1 0; + padding: 10px 5px 10px 10px; + display: flex; + white-space: nowrap; + overflow-x: hidden; + flex: 1 0; } #select-board-dialog .selectBoardContainer .list .item .selected-icon { - margin-left: auto; + margin-left: auto; } #select-board-dialog .selectBoardContainer .list .item .details { - font-size: var(--theia-ui-font-size1); - opacity: var(--theia-mod-disabled-opacity); - width: 155px; /* used heuristics for the calculation */ - white-space: pre; - overflow: hidden; - text-overflow: ellipsis; + font-size: var(--theia-ui-font-size1); + opacity: var(--theia-mod-disabled-opacity); + width: 155px; /* used heuristics for the calculation */ + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; } #select-board-dialog .selectBoardContainer .list .item.missing { - opacity: var(--theia-mod-disabled-opacity); + opacity: var(--theia-mod-disabled-opacity); } #select-board-dialog .selectBoardContainer .list .item:hover { - background: var(--theia-secondaryButton-hoverBackground); + background: var(--theia-secondaryButton-hoverBackground); } #select-board-dialog .selectBoardContainer .list .label { - white-space: pre; - overflow: hidden; - text-overflow: ellipsis; + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; } #select-board-dialog .selectBoardContainer .list { - max-height: 200px; - overflow-y: auto; - flex: 1; + max-height: 200px; + overflow-y: auto; + flex: 1; } #select-board-dialog .selectBoardContainer .ports.list { - margin: 47px 0px 0px 0px; /* 47 is 37 as input height for the `Boards`, plus 10 margin bottom. */ + margin: 47px 0px 0px 0px; /* 47 is 37 as input height for the `Boards`, plus 10 margin bottom. */ } #select-board-dialog .selectBoardContainer .search { - margin-bottom: 10px; - display: flex; - align-items: center; - padding-right: 5px; + margin-bottom: 10px; + display: flex; + align-items: center; + padding-right: 5px; } .arduino-boards-toolbar-item-container { - align-items: center; - background: var(--theia-arduino-toolbar-dropdown-background); - border-radius: 1px; - color: var(--theia-arduino-toolbar-dropdown-label); - border: 1px solid var(--theia-arduino-toolbar-dropdown-border); - display: flex; - gap: 10px; - height: var(--arduino-button-height); - margin: 0 4px; - overflow: hidden; - padding: 0 10px; - width: 210px; + align-items: center; + background: var(--theia-arduino-toolbar-dropdown-background); + border-radius: 1px; + color: var(--theia-arduino-toolbar-dropdown-label); + border: 1px solid var(--theia-arduino-toolbar-dropdown-border); + display: flex; + gap: 10px; + height: var(--arduino-button-height); + margin: 0 4px; + overflow: hidden; + padding: 0 10px; + width: 210px; } .arduino-boards-toolbar-item--protocol, .arduino-boards-dropdown-item--protocol { - align-items: center; - display: flex; - font-size: 16px; + align-items: center; + display: flex; + font-size: 16px; } .arduino-boards-toolbar-item--protocol, .arduino-boards-dropdown-item--protocol { - color: var(--theia-arduino-toolbar-dropdown-label); + color: var(--theia-arduino-toolbar-dropdown-label); } .arduino-boards-toolbar-item-container .arduino-boards-toolbar-item { - display: flex; - align-items: baseline; - width: 100%; + display: flex; + align-items: baseline; + width: 100%; } .arduino-boards-toolbar-item--label { - width: 100%; + width: 100%; } .arduino-boards-toolbar-item--label-connected { - font-family: 'Open Sans Bold'; - font-style: normal; - font-weight: 700; - font-size: 14px; + font-family: "Open Sans Bold"; + font-style: normal; + font-weight: 700; + font-size: 14px; } .arduino-boards-toolbar-item-container .caret { - width: 10px; - margin-right: 5px; + width: 10px; + margin-right: 5px; } .arduino-boards-dropdown-list { - margin: -1px; - z-index: 1; - border: 1px solid var(--theia-arduino-toolbar-dropdown-border); - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - font-size: 12px; + margin: -1px; + z-index: 1; + border: 1px solid var(--theia-arduino-toolbar-dropdown-border); + font-family: "Open Sans"; + font-style: normal; + font-weight: 400; + font-size: 12px; } .arduino-boards-dropdown-list:focus { - border: 1px solid var(--theia-arduino-toolbar-dropdown-borderActive); + border: 1px solid var(--theia-arduino-toolbar-dropdown-borderActive); } .arduino-boards-dropdown-list--items-container { - overflow: auto; - max-height: 404px; - background: var(--theia-arduino-toolbar-dropdown-background); + overflow: auto; + max-height: 404px; + background: var(--theia-arduino-toolbar-dropdown-background); } .arduino-boards-dropdown-list--items-container::-webkit-scrollbar { - background: var(--theia-arduino-toolbar-dropdown-background); + background: var(--theia-arduino-toolbar-dropdown-background); } .arduino-boards-dropdown-item { - background: var(--theia-arduino-toolbar-dropdown-background); - color: var(--theia-arduino-toolbar-dropdown-label); - cursor: default; - display: flex; - font-size: var(--theia-ui-font-size1); - justify-content: space-between; - padding: 10px; + background: var(--theia-arduino-toolbar-dropdown-background); + color: var(--theia-arduino-toolbar-dropdown-label); + cursor: default; + display: flex; + font-size: var(--theia-ui-font-size1); + justify-content: space-between; + padding: 10px; } .arduino-boards-dropdown-item--board-header { - display: flex; - align-items: center; + display: flex; + align-items: center; } .arduino-boards-dropdown-item--label { - overflow: hidden; - flex: 1; + overflow: hidden; + flex: 1; } /* Redefine default codicon size https://github.com/microsoft/vscode/commit/38cd0a377b7abef34fb07fe770fc633e68819ba6 */ -.arduino-boards-dropdown-item .codicon[class*='codicon-'] { - font-size: 14px; +.arduino-boards-dropdown-item .codicon[class*="codicon-"] { + font-size: 14px; } .arduino-boards-dropdown-item .p-TabBar-toolbar { - padding: 0px; - margin: 0px; - flex-direction: column; + padding: 0px; + margin: 0px; + flex-direction: column; } .arduino-boards-dropdown-item .p-TabBar-toolbar .item { - margin: 0px; + margin: 0px; } .arduino-boards-dropdown-item .p-TabBar-toolbar .item .action-label { - padding: 0px; + padding: 0px; } .arduino-boards-dropdown-item--board-label { - font-size: 14px; + font-size: 14px; } .arduino-boards-dropdown-item .arduino-boards-dropdown-item--protocol { - margin-right: 10px; + margin-right: 10px; } .arduino-boards-dropdown-item--port-label { - font-size: 12px; + font-size: 12px; } .arduino-boards-dropdown-item:hover { - background: var(--theia-arduino-toolbar-dropdown-option-backgroundHover); + background: var(--theia-arduino-toolbar-dropdown-option-backgroundHover); } .arduino-boards-dropdown-item--selected, .arduino-boards-dropdown-item--selected:hover { - background: var(--theia-arduino-toolbar-dropdown-option-backgroundSelected); - border: 1px solid var(--theia-arduino-toolbar-dropdown-option-backgroundSelected); + background: var(--theia-arduino-toolbar-dropdown-option-backgroundSelected); + border: 1px solid + var(--theia-arduino-toolbar-dropdown-option-backgroundSelected); } .arduino-boards-dropdown-item--selected -.arduino-boards-dropdown-item--port-label { - color: var(--theia-arduino-toolbar-dropdown-label); + .arduino-boards-dropdown-item--port-label { + color: var(--theia-arduino-toolbar-dropdown-label); } .arduino-boards-dropdown-item--selected .fa { - color: var(--theia-arduino-toolbar-dropdown-iconSelected); + color: var(--theia-arduino-toolbar-dropdown-iconSelected); } .arduino-board-dropdown-footer { - color: var(--theia-secondaryButton-foreground); - border-top: 1px solid var(--theia-dropdown-border); + color: var(--theia-secondaryButton-foreground); + border-top: 1px solid var(--theia-dropdown-border); } @media only screen and (max-height: 400px) { - div.dialogContent.select-board-dialog > div.head { - display: none; - } + div.dialogContent.select-board-dialog > div.head { + display: none; + } - #select-board-dialog .selectBoardContainer .container .content .title { - display: none; - } + #select-board-dialog .selectBoardContainer .container .content .title { + display: none; + } } #select-board-dialog .no-result { - text-transform: uppercase; - height: 100%; - user-select: none; - padding: 10px 5px; - overflow-wrap: break-word; + text-transform: uppercase; + height: 100%; + user-select: none; + padding: 10px 5px; + overflow-wrap: break-word; } diff --git a/arduino-ide-extension/src/browser/style/browser-menu.css b/arduino-ide-extension/src/browser/style/browser-menu.css index b5ecc530..85fb053a 100644 --- a/arduino-ide-extension/src/browser/style/browser-menu.css +++ b/arduino-ide-extension/src/browser/style/browser-menu.css @@ -12,4 +12,4 @@ .p-MenuBar-item.p-mod-active { color: var(--theia-menubar-selectionForeground); -} \ No newline at end of file +} diff --git a/arduino-ide-extension/src/browser/style/certificate-uploader-dialog.css b/arduino-ide-extension/src/browser/style/certificate-uploader-dialog.css index 18216a78..1b57cab4 100644 --- a/arduino-ide-extension/src/browser/style/certificate-uploader-dialog.css +++ b/arduino-ide-extension/src/browser/style/certificate-uploader-dialog.css @@ -1,76 +1,75 @@ #certificate-uploader-dialog-container > .dialogBlock { - width: 600px; + width: 600px; } .certificate-uploader-dialog .theia-select { - border: none !important; + border: none !important; } .certificate-uploader-dialog .arduino-select__control { - height: 31px; - background: var(--theia-dropdown-background) !important; + height: 31px; + background: var(--theia-dropdown-background) !important; } -.certificate-uploader-dialog .dialogRow > button{ - margin-right: 3px; +.certificate-uploader-dialog .dialogRow > button { + margin-right: 3px; } .certificate-uploader-dialog .certificate-list { - border: 1px solid var(--theia-editorWidget-border); - border-radius: 2px;; - color: var(--theia-editor-foreground); - background-color: var(--theia-editor-background); - overflow: auto; - height: 120px; - flex: 1; + border: 1px solid var(--theia-editorWidget-border); + border-radius: 2px; + color: var(--theia-editor-foreground); + background-color: var(--theia-editor-background); + overflow: auto; + height: 120px; + flex: 1; } .certificate-uploader-dialog .certificate-list .certificate-row { - display: flex; - padding: 6px 10px 5px 10px + display: flex; + padding: 6px 10px 5px 10px; } .certificate-uploader-dialog .certificate-list .certificate-row:hover { - background-color: var(--theia-list-activeSelectionBackground); + background-color: var(--theia-list-activeSelectionBackground); } .certificate-uploader-dialog .upload-status { - display: flex; - align-items: center; - flex: 1; + display: flex; + align-items: center; + flex: 1; } -.certificate-uploader-dialog .success { - display: flex; - align-items: center; - color: #1DA086; +.certificate-uploader-dialog .success { + display: flex; + align-items: center; + color: #1da086; } -.certificate-uploader-dialog .warn { - color: #C11F09; +.certificate-uploader-dialog .warn { + color: #c11f09; } -.certificate-uploader-dialog .status-icon { - margin-right: 10px; +.certificate-uploader-dialog .status-icon { + margin-right: 10px; } .certificate-uploader-dialog .add-cert-btn { - display: flex; - align-items: center; - justify-content: space-between; + display: flex; + align-items: center; + justify-content: space-between; } .certificate-uploader-dialog .add-cert-btn .caret { - margin-left: 6px; + margin-left: 6px; } .certificate-add { - padding: 16px; - border-radius: 3px; - border: 1px solid var(--theia-editorWidget-border); - color: var(--theia-editorWidget-foreground); - background-color: var(--theia-editorWidget-background); + padding: 16px; + border-radius: 3px; + border: 1px solid var(--theia-editorWidget-border); + color: var(--theia-editorWidget-foreground); + background-color: var(--theia-editorWidget-background); } .certificate-add input { - margin-top: 12px; - padding: 0 12px; - width: 100%; - box-sizing: border-box; - + margin-top: 12px; + padding: 0 12px; + width: 100%; + box-sizing: border-box; } diff --git a/arduino-ide-extension/src/browser/style/cloud-sketchbook.css b/arduino-ide-extension/src/browser/style/cloud-sketchbook.css index 8982aaf3..62938e21 100644 --- a/arduino-ide-extension/src/browser/style/cloud-sketchbook.css +++ b/arduino-ide-extension/src/browser/style/cloud-sketchbook.css @@ -23,8 +23,7 @@ -webkit-mask-size: 100%; } -.p-mod-current -.cloud-sketchbook-tree-icon { +.p-mod-current .cloud-sketchbook-tree-icon { background-color: var(--theia-foreground); -webkit-mask: url(../icons/arduino-cloud-filled.svg); -webkit-mask-position: center; @@ -33,49 +32,49 @@ } .sketchbook-trees-container -.p-TabBar[data-orientation="horizontal"] -> .p-TabBar-content { + .p-TabBar[data-orientation="horizontal"] + > .p-TabBar-content { justify-content: center; border-bottom: 1px solid var(--theia-tree-indentGuidesStroke); } .sketchbook-trees-container -.p-Widget.p-TabBar.p-DockPanel-tabBar -> ul -> li.p-TabBar-tab -> div.p-TabBar-tabLabel { + .p-Widget.p-TabBar.p-DockPanel-tabBar + > ul + > li.p-TabBar-tab + > div.p-TabBar-tabLabel { display: none; width: 0px; max-width: 0px; } .sketchbook-trees-container -.p-Widget.p-TabBar.p-DockPanel-tabBar -> ul -> li.p-TabBar-tab -> div.p-TabBar-tabCloseIcon { + .p-Widget.p-TabBar.p-DockPanel-tabBar + > ul + > li.p-TabBar-tab + > div.p-TabBar-tabCloseIcon { display: none; width: 0px; max-width: 0px; } .sketchbook-trees-container -.p-TabBar[data-orientation="horizontal"] -.p-TabBar-tab { + .p-TabBar[data-orientation="horizontal"] + .p-TabBar-tab { min-width: 55px; } .sketchbook-trees-container -.p-Widget.p-TabBar.p-DockPanel-tabBar -> ul -> li.p-TabBar-tab { + .p-Widget.p-TabBar.p-DockPanel-tabBar + > ul + > li.p-TabBar-tab { padding-left: 20px; } .sketchbook-trees-container -.p-Widget.p-TabBar.p-DockPanel-tabBar -> ul -> li.p-TabBar-tab.p-mod-current { + .p-Widget.p-TabBar.p-DockPanel-tabBar + > ul + > li.p-TabBar-tab.p-mod-current { border-bottom: 2px solid var(--theia-activityBar-activeBorder); } diff --git a/arduino-ide-extension/src/browser/style/custom-codicon.css b/arduino-ide-extension/src/browser/style/custom-codicon.css index 48542e4f..4acf3731 100644 --- a/arduino-ide-extension/src/browser/style/custom-codicon.css +++ b/arduino-ide-extension/src/browser/style/custom-codicon.css @@ -1,4 +1,4 @@ -.codicon-debug-alt:before { - font-family: 'FontAwesome' !important; - content: "\e905" !important -} \ No newline at end of file +.codicon-debug-alt:before { + font-family: "FontAwesome" !important; + content: "\e905" !important; +} diff --git a/arduino-ide-extension/src/browser/style/dialogs.css b/arduino-ide-extension/src/browser/style/dialogs.css index cb73abd6..1592057a 100644 --- a/arduino-ide-extension/src/browser/style/dialogs.css +++ b/arduino-ide-extension/src/browser/style/dialogs.css @@ -9,7 +9,7 @@ total = padding + margin = 96px */ max-width: calc(100% - 96px) !important; - + min-width: 424px; max-height: 560px; padding: 0 var(--arduino-button-height); @@ -56,14 +56,23 @@ } .p-Widget.dialogOverlay .dialogControl .spinner, -.p-Widget.dialogOverlay .dialogBlock .dialogContent .dialogSection .dialogRow .spinner { +.p-Widget.dialogOverlay + .dialogBlock + .dialogContent + .dialogSection + .dialogRow + .spinner { background: var(--theia-icon-loading) center center no-repeat; animation: theia-spin 1.25s linear infinite; width: 30px; height: 30px; } -.p-Widget.dialogOverlay .dialogBlock .dialogContent .dialogSection .dialogRow:first-child { +.p-Widget.dialogOverlay + .dialogBlock + .dialogContent + .dialogSection + .dialogRow:first-child { margin-top: 0px; height: 32px; } @@ -78,7 +87,7 @@ } .fa.disabled { - opacity: .4; + opacity: 0.4; } @media only screen and (max-height: 560px) { diff --git a/arduino-ide-extension/src/browser/style/editor.css b/arduino-ide-extension/src/browser/style/editor.css index 81c3a3fd..db426656 100644 --- a/arduino-ide-extension/src/browser/style/editor.css +++ b/arduino-ide-extension/src/browser/style/editor.css @@ -1,7 +1,9 @@ /* Show the dirty indicator on unclosable widgets. On hover, it should still show the dot instead of the X. */ /* https://github.com/arduino/arduino-pro-ide/issues/380 */ -.p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.a-mod-uncloseable.theia-mod-dirty > .p-TabBar-tabCloseIcon:before { - content: "\ea71"; +.p-TabBar.theia-app-centers + .p-TabBar-tab.p-mod-closable.a-mod-uncloseable.theia-mod-dirty + > .p-TabBar-tabCloseIcon:before { + content: "\ea71"; } .monaco-list-row.show-file-icons.focused { diff --git a/arduino-ide-extension/src/browser/style/firmware-uploader-dialog.css b/arduino-ide-extension/src/browser/style/firmware-uploader-dialog.css index e49f5e5a..718d840e 100644 --- a/arduino-ide-extension/src/browser/style/firmware-uploader-dialog.css +++ b/arduino-ide-extension/src/browser/style/firmware-uploader-dialog.css @@ -1,31 +1,31 @@ #firmware-uploader-dialog-container > .dialogBlock { - width: 600px; + width: 600px; } .firmware-uploader-dialog .theia-select { - border: none !important; + border: none !important; } .firmware-uploader-dialog .arduino-select__control { - height: 31px; - background: var(--theia-input-background) !important; + height: 31px; + background: var(--theia-input-background) !important; } -.firmware-uploader-dialog .dialogRow > button{ - margin-right: 3px; +.firmware-uploader-dialog .dialogRow > button { + margin-right: 3px; } .firmware-uploader-dialog #firmware-select { - flex: unset; + flex: unset; } -.firmware-uploader-dialog .success { - color: #1DA086; +.firmware-uploader-dialog .success { + color: #1da086; } -.firmware-uploader-dialog .warn { - color: #C11F09; +.firmware-uploader-dialog .warn { + color: #c11f09; } -.firmware-uploader-dialog .status-icon { - margin-right: 10px; +.firmware-uploader-dialog .status-icon { + margin-right: 10px; } diff --git a/arduino-ide-extension/src/browser/style/fonts.css b/arduino-ide-extension/src/browser/style/fonts.css index 93a85591..806b6f04 100644 --- a/arduino-ide-extension/src/browser/style/fonts.css +++ b/arduino-ide-extension/src/browser/style/fonts.css @@ -1,699 +1,698 @@ @font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Regular-webfont.woff') format('woff'); + font-family: "Open Sans"; + src: url("fonts/OpenSans-Regular-webfont.woff") format("woff"); } @font-face { - font-family: 'Open Sans Bold'; - src: url('fonts/OpenSans-Bold-webfont.woff') format('woff'); + font-family: "Open Sans Bold"; + src: url("fonts/OpenSans-Bold-webfont.woff") format("woff"); } @font-face { - font-family: 'FontAwesome'; - src: - url('fonts/FontAwesome.ttf?h959em') format('truetype'), - url('fonts/FontAwesome.woff?h959em') format('woff'), - url('fonts/FontAwesome.svg?h959em#FontAwesome') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; + font-family: "FontAwesome"; + src: url("fonts/FontAwesome.ttf?h959em") format("truetype"), + url("fonts/FontAwesome.woff?h959em") format("woff"), + url("fonts/FontAwesome.svg?h959em#FontAwesome") format("svg"); + font-weight: normal; + font-style: normal; + font-display: block; } .fa { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'FontAwesome' !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: "FontAwesome" !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } .fa-arduino-verify:before { - content: "\e90b"; + content: "\e90b"; } .fa-arduino-upload:before { - content: "\e90c"; + content: "\e90c"; } .fa-arduino-monitor:before { - content: "\e90d"; + content: "\e90d"; } .fa-arduino-sketch-tabs-menu:before { - content: "\e90e"; + content: "\e90e"; } .fa-arduino-plotter:before { - content: "\e90f"; + content: "\e90f"; } .fa-fa-check:before { - content: "\e90a"; + content: "\e90a"; } .fa-arduino-technology-3dimensionscube:before { - content: "\e906"; + content: "\e906"; } .fa-arduino-technology-usb:before { - content: "\e907"; + content: "\e907"; } .fa-arduino-technology-connection:before { - content: "\e908"; + content: "\e908"; } .fa-arduino-technology-bluetooth:before { - content: "\e909"; + content: "\e909"; } .fa-arduino-debugger:before { - content: "\e905"; + content: "\e905"; } .fa-arduino-search:before { - content: "\e901"; + content: "\e901"; } .fa-arduino-boards:before { - content: "\e902"; + content: "\e902"; } .fa-arduino-library:before { - content: "\e903"; + content: "\e903"; } .fa-arduino-folder:before { - content: "\e904"; + content: "\e904"; } .fa-reload:before { - content: "\e900"; + content: "\e900"; } .fa-asterisk:before { - content: "\f069"; + content: "\f069"; } .fa-plus:before { - content: "\f067"; + content: "\f067"; } .fa-question:before { - content: "\f128"; + content: "\f128"; } .fa-minus:before { - content: "\f068"; + content: "\f068"; } .fa-music:before { - content: "\f001"; + content: "\f001"; } .fa-search:before { - content: "\f002"; + content: "\f002"; } .fa-envelope-o:before { - content: "\f003"; + content: "\f003"; } .fa-heart:before { - content: "\f004"; + content: "\f004"; } .fa-star:before { - content: "\f005"; + content: "\f005"; } .fa-star-o:before { - content: "\f006"; + content: "\f006"; } .fa-user:before { - content: "\f007"; + content: "\f007"; } .fa-film:before { - content: "\f008"; + content: "\f008"; } .fa-th-large:before { - content: "\f009"; + content: "\f009"; } .fa-th:before { - content: "\f00a"; + content: "\f00a"; } .fa-th-list:before { - content: "\f00b"; + content: "\f00b"; } .fa-close:before { - content: "\f00d"; + content: "\f00d"; } .fa-remove:before { - content: "\f00d"; + content: "\f00d"; } .fa-times:before { - content: "\f00d"; + content: "\f00d"; } .fa-search-plus:before { - content: "\f00e"; + content: "\f00e"; } .fa-search-minus:before { - content: "\f010"; + content: "\f010"; } .fa-power-off:before { - content: "\f011"; + content: "\f011"; } .fa-signal:before { - content: "\f012"; + content: "\f012"; } .fa-cog:before { - content: "\f013"; + content: "\f013"; } .fa-gear:before { - content: "\f013"; + content: "\f013"; } .fa-trash-o:before { - content: "\f014"; + content: "\f014"; } .fa-home:before { - content: "\f015"; + content: "\f015"; } .fa-file-o:before { - content: "\f016"; + content: "\f016"; } .fa-clock-o:before { - content: "\f017"; + content: "\f017"; } .fa-download:before { - content: "\f019"; + content: "\f019"; } .fa-arrow-circle-o-down:before { - content: "\f01a"; + content: "\f01a"; } .fa-arrow-circle-o-up:before { - content: "\f01b"; + content: "\f01b"; } .fa-inbox:before { - content: "\f01c"; + content: "\f01c"; } .fa-play-circle-o:before { - content: "\f01d"; + content: "\f01d"; } .fa-repeat:before { - content: "\f01e"; + content: "\f01e"; } .fa-rotate-right:before { - content: "\f01e"; + content: "\f01e"; } .fa-refresh:before { - content: "\f021"; + content: "\f021"; } .fa-list-alt:before { - content: "\f022"; + content: "\f022"; } .fa-lock:before { - content: "\f023"; + content: "\f023"; } .fa-volume-off:before { - content: "\f026"; + content: "\f026"; } .fa-volume-down:before { - content: "\f027"; + content: "\f027"; } .fa-volume-up:before { - content: "\f028"; + content: "\f028"; } .fa-qrcode:before { - content: "\f029"; + content: "\f029"; } .fa-tag:before { - content: "\f02b"; + content: "\f02b"; } .fa-tags:before { - content: "\f02c"; + content: "\f02c"; } .fa-book:before { - content: "\f02d"; + content: "\f02d"; } .fa-print:before { - content: "\f02f"; + content: "\f02f"; } .fa-text-height:before { - content: "\f034"; + content: "\f034"; } .fa-text-width:before { - content: "\f035"; + content: "\f035"; } .fa-align-left:before { - content: "\f036"; + content: "\f036"; } .fa-align-center:before { - content: "\f037"; + content: "\f037"; } .fa-align-right:before { - content: "\f038"; + content: "\f038"; } .fa-align-justify:before { - content: "\f039"; + content: "\f039"; } .fa-list:before { - content: "\f03a"; + content: "\f03a"; } .fa-dedent:before { - content: "\f03b"; + content: "\f03b"; } .fa-outdent:before { - content: "\f03b"; + content: "\f03b"; } .fa-indent:before { - content: "\f03c"; + content: "\f03c"; } .fa-pencil:before { - content: "\f040"; + content: "\f040"; } .fa-adjust:before { - content: "\f042"; + content: "\f042"; } .fa-edit:before { - content: "\f044"; + content: "\f044"; } .fa-pencil-square-o:before { - content: "\f044"; + content: "\f044"; } .fa-share-square-o:before { - content: "\f045"; + content: "\f045"; } .fa-check-square-o:before { - content: "\f046"; + content: "\f046"; } .fa-arrows:before { - content: "\f047"; + content: "\f047"; } .fa-step-backward:before { - content: "\f048"; + content: "\f048"; } .fa-fast-backward:before { - content: "\f049"; + content: "\f049"; } .fa-backward:before { - content: "\f04a"; + content: "\f04a"; } .fa-play:before { - content: "\f04b"; + content: "\f04b"; } .fa-pause:before { - content: "\f04c"; + content: "\f04c"; } .fa-stop:before { - content: "\f04d"; + content: "\f04d"; } .fa-forward:before { - content: "\f04e"; + content: "\f04e"; } .fa-fast-forward:before { - content: "\f050"; + content: "\f050"; } .fa-step-forward:before { - content: "\f051"; + content: "\f051"; } .fa-eject:before { - content: "\f052"; + content: "\f052"; } .fa-chevron-left:before { - content: "\f053"; + content: "\f053"; } .fa-chevron-right:before { - content: "\f054"; + content: "\f054"; } .fa-plus-circle:before { - content: "\f055"; + content: "\f055"; } .fa-minus-circle:before { - content: "\f056"; + content: "\f056"; } .fa-times-circle:before { - content: "\f057"; + content: "\f057"; } .fa-check-circle:before { - content: "\f058"; + content: "\f058"; } .fa-question-circle:before { - content: "\f059"; + content: "\f059"; } .fa-info-circle:before { - content: "\f05a"; + content: "\f05a"; } .fa-crosshairs:before { - content: "\f05b"; + content: "\f05b"; } .fa-times-circle-o:before { - content: "\f05c"; + content: "\f05c"; } .fa-check-circle-o:before { - content: "\f05d"; + content: "\f05d"; } .fa-ban:before { - content: "\f05e"; + content: "\f05e"; } .fa-arrow-left:before { - content: "\f060"; + content: "\f060"; } .fa-arrow-right:before { - content: "\f061"; + content: "\f061"; } .fa-arrow-up:before { - content: "\f062"; + content: "\f062"; } .fa-arrow-down:before { - content: "\f063"; + content: "\f063"; } .fa-mail-forward:before { - content: "\f064"; + content: "\f064"; } .fa-share:before { - content: "\f064"; + content: "\f064"; } .fa-expand:before { - content: "\f065"; + content: "\f065"; } .fa-compress:before { - content: "\f066"; + content: "\f066"; } .fa-exclamation-circle:before { - content: "\f06a"; + content: "\f06a"; } .fa-eye:before { - content: "\f06e"; + content: "\f06e"; } .fa-eye-slash:before { - content: "\f070"; + content: "\f070"; } .fa-exclamation-triangle:before { - content: "\f071"; + content: "\f071"; } .fa-warning:before { - content: "\f071"; + content: "\f071"; } .fa-calendar:before { - content: "\f073"; + content: "\f073"; } .fa-random:before { - content: "\f074"; + content: "\f074"; } .fa-comment:before { - content: "\f075"; + content: "\f075"; } .fa-chevron-up:before { - content: "\f077"; + content: "\f077"; } .fa-chevron-down:before { - content: "\f078"; + content: "\f078"; } .fa-retweet:before { - content: "\f079"; + content: "\f079"; } .fa-folder:before { - content: "\f07b"; + content: "\f07b"; } .fa-folder-open:before { - content: "\f07c"; + content: "\f07c"; } .fa-arrows-v:before { - content: "\f07d"; + content: "\f07d"; } .fa-arrows-h:before { - content: "\f07e"; + content: "\f07e"; } .fa-cogs:before { - content: "\f085"; + content: "\f085"; } .fa-gears:before { - content: "\f085"; + content: "\f085"; } .fa-star-half:before { - content: "\f089"; + content: "\f089"; } .fa-heart-o:before { - content: "\f08a"; + content: "\f08a"; } .fa-sign-out:before { - content: "\f08b"; + content: "\f08b"; } .fa-thumb-tack:before { - content: "\f08d"; + content: "\f08d"; } .fa-external-link:before { - content: "\f08e"; + content: "\f08e"; } .fa-sign-in:before { - content: "\f090"; + content: "\f090"; } .fa-upload:before { - content: "\f093"; + content: "\f093"; } .fa-square-o:before { - content: "\f096"; + content: "\f096"; } .fa-bookmark-o:before { - content: "\f097"; + content: "\f097"; } .fa-hdd-o:before { - content: "\f0a0"; + content: "\f0a0"; } .fa-bell-o:before { - content: "\f0a2"; + content: "\f0a2"; } .fa-certificate:before { - content: "\f0a3"; + content: "\f0a3"; } .fa-arrow-circle-left:before { - content: "\f0a8"; + content: "\f0a8"; } .fa-arrow-circle-right:before { - content: "\f0a9"; + content: "\f0a9"; } .fa-arrow-circle-up:before { - content: "\f0aa"; + content: "\f0aa"; } .fa-arrow-circle-down:before { - content: "\f0ab"; + content: "\f0ab"; } .fa-wrench:before { - content: "\f0ad"; + content: "\f0ad"; } .fa-tasks:before { - content: "\f0ae"; + content: "\f0ae"; } .fa-filter:before { - content: "\f0b0"; + content: "\f0b0"; } .fa-briefcase:before { - content: "\f0b1"; + content: "\f0b1"; } .fa-arrows-alt:before { - content: "\f0b2"; + content: "\f0b2"; } .fa-cloud:before { - content: "\f0c2"; + content: "\f0c2"; } .fa-copy:before { - content: "\f0c5"; + content: "\f0c5"; } .fa-files-o:before { - content: "\f0c5"; + content: "\f0c5"; } .fa-floppy-o:before { - content: "\f0c7"; + content: "\f0c7"; } .fa-save:before { - content: "\f0c7"; + content: "\f0c7"; } .fa-square:before { - content: "\f0c8"; + content: "\f0c8"; } .fa-bars:before { - content: "\f0c9"; + content: "\f0c9"; } .fa-navicon:before { - content: "\f0c9"; + content: "\f0c9"; } .fa-reorder:before { - content: "\f0c9"; + content: "\f0c9"; } .fa-list-ul:before { - content: "\f0ca"; + content: "\f0ca"; } .fa-list-ol:before { - content: "\f0cb"; + content: "\f0cb"; } .fa-table:before { - content: "\f0ce"; + content: "\f0ce"; } .fa-caret-down:before { - content: "\f0d7"; + content: "\f0d7"; } .fa-caret-up:before { - content: "\f0d8"; + content: "\f0d8"; } .fa-caret-left:before { - content: "\f0d9"; + content: "\f0d9"; } .fa-caret-right:before { - content: "\f0da"; + content: "\f0da"; } .fa-columns:before { - content: "\f0db"; + content: "\f0db"; } .fa-sort:before { - content: "\f0dc"; + content: "\f0dc"; } .fa-unsorted:before { - content: "\f0dc"; + content: "\f0dc"; } .fa-sort-desc:before { - content: "\f0dd"; + content: "\f0dd"; } .fa-sort-down:before { - content: "\f0dd"; + content: "\f0dd"; } .fa-sort-asc:before { - content: "\f0de"; + content: "\f0de"; } .fa-sort-up:before { - content: "\f0de"; + content: "\f0de"; } .fa-rotate-left:before { - content: "\f0e2"; + content: "\f0e2"; } .fa-undo:before { - content: "\f0e2"; + content: "\f0e2"; } .fa-file-text-o:before { - content: "\f0f6"; + content: "\f0f6"; } .fa-plus-square:before { - content: "\f0fe"; + content: "\f0fe"; } .fa-angle-double-left:before { - content: "\f100"; + content: "\f100"; } .fa-angle-double-right:before { - content: "\f101"; + content: "\f101"; } .fa-angle-double-up:before { - content: "\f102"; + content: "\f102"; } .fa-angle-double-down:before { - content: "\f103"; + content: "\f103"; } .fa-angle-left:before { - content: "\f104"; + content: "\f104"; } .fa-angle-right:before { - content: "\f105"; + content: "\f105"; } .fa-angle-up:before { - content: "\f106"; + content: "\f106"; } .fa-angle-down:before { - content: "\f107"; + content: "\f107"; } .fa-circle-o:before { - content: "\f10c"; + content: "\f10c"; } .fa-spinner:before { - content: "\f110"; + content: "\f110"; } .fa-circle:before { - content: "\f111"; + content: "\f111"; } .fa-mail-reply:before { - content: "\f112"; + content: "\f112"; } .fa-reply:before { - content: "\f112"; + content: "\f112"; } .fa-folder-o:before { - content: "\f114"; + content: "\f114"; } .fa-folder-open-o:before { - content: "\f115"; + content: "\f115"; } .fa-keyboard-o:before { - content: "\f11c"; + content: "\f11c"; } .fa-terminal:before { - content: "\f120"; + content: "\f120"; } .fa-code:before { - content: "\f121"; + content: "\f121"; } .fa-mail-reply-all:before { - content: "\f122"; + content: "\f122"; } .fa-reply-all:before { - content: "\f122"; + content: "\f122"; } .fa-star-half-empty:before { - content: "\f123"; + content: "\f123"; } .fa-star-half-full:before { - content: "\f123"; + content: "\f123"; } .fa-star-half-o:before { - content: "\f123"; + content: "\f123"; } .fa-crop:before { - content: "\f125"; + content: "\f125"; } .fa-code-fork:before { - content: "\f126"; + content: "\f126"; } .fa-chain-broken:before { - content: "\f127"; + content: "\f127"; } .fa-unlink:before { - content: "\f127"; + content: "\f127"; } .fa-info:before { - content: "\f129"; + content: "\f129"; } .fa-exclamation:before { - content: "\f12a"; + content: "\f12a"; } .fa-rocket:before { - content: "\f135"; + content: "\f135"; } .fa-maxcdn:before { - content: "\f136"; + content: "\f136"; } .fa-chevron-circle-left:before { - content: "\f137"; + content: "\f137"; } .fa-chevron-circle-right:before { - content: "\f138"; + content: "\f138"; } .fa-chevron-circle-up:before { - content: "\f139"; + content: "\f139"; } .fa-chevron-circle-down:before { - content: "\f13a"; + content: "\f13a"; } .fa-ellipsis-h:before { - content: "\f141"; + content: "\f141"; } .fa-long-arrow-down:before { - content: "\f175"; + content: "\f175"; } .fa-long-arrow-up:before { - content: "\f176"; + content: "\f176"; } .fa-long-arrow-left:before { - content: "\f177"; + content: "\f177"; } .fa-long-arrow-right:before { - content: "\f178"; + content: "\f178"; } .fa-microchip:before { - content: "\f2db"; + content: "\f2db"; } .fa-arduino-cloud-download:before { - content: "\e910"; + content: "\e910"; } .fa-arduino-cloud-upload:before { - content: "\e914"; + content: "\e914"; } .fa-arduino-cloud:before { - content: "\e915"; + content: "\e915"; } .fa-arduino-cloud-filled:before { - content: "\e912"; + content: "\e912"; } .fa-arduino-cloud-offline:before { - content: "\e913"; + content: "\e913"; } .fa-arduino-cloud-filled-offline:before { - content: "\e911"; + content: "\e911"; } diff --git a/arduino-ide-extension/src/browser/style/ide-updater-dialog.css b/arduino-ide-extension/src/browser/style/ide-updater-dialog.css index 9282a5b1..5d5592ba 100644 --- a/arduino-ide-extension/src/browser/style/ide-updater-dialog.css +++ b/arduino-ide-extension/src/browser/style/ide-updater-dialog.css @@ -1,124 +1,124 @@ #ide-updater-dialog-container > .dialogBlock { - width: 546px; + width: 546px; } .ide-updater-dialog .bold { - font-weight: bold; + font-weight: bold; } .ide-updater-dialog--pre-download { - display: flex; + display: flex; } .ide-updater-dialog--downloading { - flex: 1; + flex: 1; } .ide-updater-dialog--logo-container { - margin-right: var(--arduino-button-height); + margin-right: var(--arduino-button-height); } .ide-updater-dialog--logo { - background: url('./ide-logo.png') round; - width: 52px; - height: 52px; + background: url("./ide-logo.png") round; + width: 52px; + height: 52px; } .dialogContent.ide-updater-dialog - .ide-updater-dialog--content - .ide-updater-dialog--new-version-text.dialogSection { - display: flex; - flex: 1; - flex-direction: column; - margin-top: 0; - min-width: 0; + .ide-updater-dialog--content + .ide-updater-dialog--new-version-text.dialogSection { + display: flex; + flex: 1; + flex-direction: column; + margin-top: 0; + min-width: 0; } .ide-updater-dialog .changelog { - color: var(--theia-editor-foreground); - background-color: var(--theia-editor-background); - font-size: 12px; - overflow: auto; - padding: 0 12px; - cursor: text; - width: 100%; + color: var(--theia-editor-foreground); + background-color: var(--theia-editor-background); + font-size: 12px; + overflow: auto; + padding: 0 12px; + cursor: text; + width: 100%; } .ide-updater-dialog .changelog .fallback { - min-height: 180px; - width: 100%; - display: flex; + min-height: 180px; + width: 100%; + display: flex; } .ide-updater-dialog .changelog .fallback .spinner { - align-self: center; + align-self: center; } .dialogContent.ide-updater-dialog - .ide-updater-dialog--content - .ide-updater-dialog--new-version-text - .dialogRow.changelog-container { - align-items: flex-start; - border: 1px solid var(--theia-editorWidget-border); - border-radius: 2px; - overflow: auto; - max-height: 180px; + .ide-updater-dialog--content + .ide-updater-dialog--new-version-text + .dialogRow.changelog-container { + align-items: flex-start; + border: 1px solid var(--theia-editorWidget-border); + border-radius: 2px; + overflow: auto; + max-height: 180px; } .ide-updater-dialog .changelog a { - color: var(--theia-textLink-foreground); + color: var(--theia-textLink-foreground); } .ide-updater-dialog .changelog a:hover { - text-decoration: underline; - cursor: pointer; + text-decoration: underline; + cursor: pointer; } .ide-updater-dialog .changelog code { - background: var(--theia-textBlockQuote-background); - border-radius: 2px; - padding: 0 2px; + background: var(--theia-textBlockQuote-background); + border-radius: 2px; + padding: 0 2px; } .ide-updater-dialog .changelog a code { - color: var(--theia-textLink-foreground); + color: var(--theia-textLink-foreground); } .ide-updater-dialog .buttons-container { - display: flex; - justify-content: flex-end; - margin-top: var(--arduino-button-height); + display: flex; + justify-content: flex-end; + margin-top: var(--arduino-button-height); } .ide-updater-dialog .buttons-container a.theia-button { - text-decoration: none; - display: flex; - align-items: center; - justify-content: center; + text-decoration: none; + display: flex; + align-items: center; + justify-content: center; } .ide-updater-dialog .buttons-container a.theia-button:hover { - color: var(--theia-button-foreground); + color: var(--theia-button-foreground); } .ide-updater-dialog .buttons-container .push { - margin-right: auto; + margin-right: auto; } .ide-updater-dialog--content { - max-height: 100%; - overflow: hidden; - display: flex; + max-height: 100%; + overflow: hidden; + display: flex; } #ide-updater-dialog-container .skip-version-button { - margin-left: 79px; - margin-right: auto; + margin-left: 79px; + margin-right: auto; } /* https://github.com/arduino/arduino-ide/pull/2027#issuecomment-1533174638 */ /* https://github.com/eclipse-theia/theia/commit/1b5ff9ee459df14cedc0e8266dd02dae93fcd1bf#diff-d8d45a890507a01141c010ad4a6891edf2ae727cfa6dfe604cebbd667812cccbR68 */ /* Use normal whitespace handling for the changelog content in the update dialog. */ .p-Widget.dialogOverlay .dialogContent.ide-updater-dialog { - white-space: normal; + white-space: normal; } diff --git a/arduino-ide-extension/src/browser/style/index.css b/arduino-ide-extension/src/browser/style/index.css index 4f9422aa..fd7887ae 100644 --- a/arduino-ide-extension/src/browser/style/index.css +++ b/arduino-ide-extension/src/browser/style/index.css @@ -1,175 +1,177 @@ -@import './list-widget.css'; -@import './boards-config-dialog.css'; -@import './main.css'; -@import './dialogs.css'; -@import './monitor.css'; -@import './arduino-select.css'; -@import './status-bar.css'; -@import './terminal.css'; -@import './editor.css'; -@import './settings-dialog.css'; -@import './firmware-uploader-dialog.css'; -@import './ide-updater-dialog.css'; -@import './certificate-uploader-dialog.css'; -@import './user-fields-dialog.css'; -@import './debug.css'; -@import './sketchbook.css'; -@import './cloud-sketchbook.css'; -@import './fonts.css'; -@import './custom-codicon.css'; -@import './progress-bar.css'; -@import './settings-step-input.css'; +@import "./list-widget.css"; +@import "./boards-config-dialog.css"; +@import "./main.css"; +@import "./dialogs.css"; +@import "./monitor.css"; +@import "./arduino-select.css"; +@import "./status-bar.css"; +@import "./terminal.css"; +@import "./editor.css"; +@import "./settings-dialog.css"; +@import "./firmware-uploader-dialog.css"; +@import "./ide-updater-dialog.css"; +@import "./certificate-uploader-dialog.css"; +@import "./user-fields-dialog.css"; +@import "./debug.css"; +@import "./sketchbook.css"; +@import "./cloud-sketchbook.css"; +@import "./fonts.css"; +@import "./custom-codicon.css"; +@import "./progress-bar.css"; +@import "./settings-step-input.css"; :root { - --arduino-button-height: 28px; + --arduino-button-height: 28px; } /* Revive of the `--theia-icon-loading`. The variable has been removed from Theia while IDE2 still uses is. */ /* The SVG icons are still part of Theia (1.31.1) */ /* https://github.com/arduino/arduino-ide/pull/1662#issuecomment-1324997134 */ body { - --theia-icon-loading: url(../icons/loading-light.svg); - --theia-icon-loading-warning: url(../icons/loading-dark.svg); + --theia-icon-loading: url(../icons/loading-light.svg); + --theia-icon-loading-warning: url(../icons/loading-dark.svg); } body.theia-dark { - --theia-icon-loading: url(../icons/loading-dark.svg); - --theia-icon-loading-warning: url(../icons/loading-light.svg); + --theia-icon-loading: url(../icons/loading-dark.svg); + --theia-icon-loading-warning: url(../icons/loading-light.svg); } .theia-input.warning:focus { - outline-width: 1px; - outline-style: solid; - outline-offset: -1px; - opacity: 1 !important; - color: var(--theia-warningForeground); - background-color: var(--theia-warningBackground); + outline-width: 1px; + outline-style: solid; + outline-offset: -1px; + opacity: 1 !important; + color: var(--theia-warningForeground); + background-color: var(--theia-warningBackground); } .theia-input.warning { - background-color: var(--theia-warningBackground); + background-color: var(--theia-warningBackground); } .theia-input.warning::placeholder { - color: var(--theia-warningForeground); - background-color: var(--theia-warningBackground); + color: var(--theia-warningForeground); + background-color: var(--theia-warningBackground); } .theia-input.error:focus { - outline-width: 1px; - outline-style: solid; - outline-offset: -1px; - opacity: 1 !important; - color: var(--theia-errorForeground); - background-color: var(--theia-errorBackground); + outline-width: 1px; + outline-style: solid; + outline-offset: -1px; + opacity: 1 !important; + color: var(--theia-errorForeground); + background-color: var(--theia-errorBackground); } .theia-input.error { - background-color: var(--theia-errorBackground); + background-color: var(--theia-errorBackground); } .theia-input.error::placeholder { - color: var(--theia-errorForeground); - background-color: var(--theia-errorBackground); + color: var(--theia-errorForeground); + background-color: var(--theia-errorBackground); } /* Makes the sidepanel a bit wider when opening the widget */ .p-DockPanel-widget { - min-width: 220px; - min-height: 20px; - height: 220px; + min-width: 220px; + min-height: 20px; + height: 220px; } /* Overrule the default Theia CSS button styles. */ button.theia-button, .theia-button { - align-items: center; - display: flex; - font-family: 'Open Sans Bold',sans-serif; - font-style: normal; - font-weight: 700; - font-size: 14px; - justify-content: center; - cursor: pointer; - letter-spacing: .01em; - line-height: 24px; - outline: none; - padding: 0 16px; - position: relative; - text-align: center; - text-decoration: none; - border-width: 2px; - border-radius: 32px; - text-transform: uppercase; - transition: none; - box-shadow: none; + align-items: center; + display: flex; + font-family: "Open Sans Bold", sans-serif; + font-style: normal; + font-weight: 700; + font-size: 14px; + justify-content: center; + cursor: pointer; + letter-spacing: 0.01em; + line-height: 24px; + outline: none; + padding: 0 16px; + position: relative; + text-align: center; + text-decoration: none; + border-width: 2px; + border-radius: 32px; + text-transform: uppercase; + transition: none; + box-shadow: none; } button.theia-button { - height: var(--arduino-button-height); - max-width: none; + height: var(--arduino-button-height); + max-width: none; } .theia-button:active, .theia-button:focus { - box-shadow: 0 0 0 2px var(--theia-focusBorder); + box-shadow: 0 0 0 2px var(--theia-focusBorder); } button.theia-button.secondary { - border: 2px solid var(--theia-secondaryButton-foreground); + border: 2px solid var(--theia-secondaryButton-foreground); } -button.theia-button[disabled], .theia-button[disabled] { - opacity: 0.5; - color: var(--theia-button-foreground); - background-color: var(--theia-button-background); +button.theia-button[disabled], +.theia-button[disabled] { + opacity: 0.5; + color: var(--theia-button-foreground); + background-color: var(--theia-button-background); } -button.secondary[disabled], .theia-button.secondary[disabled] { - color: var(--theia-secondaryButton-foreground); - background-color: var(--theia-secondaryButton-background); +button.secondary[disabled], +.theia-button.secondary[disabled] { + color: var(--theia-secondaryButton-foreground); + background-color: var(--theia-secondaryButton-background); } button.theia-button.message-box-dialog-button { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; } /* To make the progress-bar slightly thicker, and use the color from the status bar */ .theia-progress-bar-container { - width: 100%; - height: 4px; + width: 100%; + height: 4px; } .theia-progress-bar { - height: 4px; - width: 3%; - animation: progress-animation 1.3s 0s infinite - cubic-bezier(0.645, 0.045, 0.355, 1); + height: 4px; + width: 3%; + animation: progress-animation 1.3s 0s infinite + cubic-bezier(0.645, 0.045, 0.355, 1); } .theia-notification-item-progressbar { - height: 4px; - width: 66%; + height: 4px; + width: 66%; } .flex-line { - display: flex; - align-items: center; - white-space: nowrap; + display: flex; + align-items: center; + white-space: nowrap; } .fa-reload { - font-size: 14px; + font-size: 14px; } -.debug-toolbar .debug-action>div { - font-family: var(--theia-ui-font-family); - font-size: var(--theia-ui-font-size0); - display: flex; - align-items: center; - align-self: center; - justify-content: center; - min-height: inherit; +.debug-toolbar .debug-action > div { + font-family: var(--theia-ui-font-family); + font-size: var(--theia-ui-font-size0); + display: flex; + align-items: center; + align-self: center; + justify-content: center; + min-height: inherit; } diff --git a/arduino-ide-extension/src/browser/style/list-widget.css b/arduino-ide-extension/src/browser/style/list-widget.css index 19bd4515..2c74ec86 100644 --- a/arduino-ide-extension/src/browser/style/list-widget.css +++ b/arduino-ide-extension/src/browser/style/list-widget.css @@ -1,6 +1,6 @@ .library-tab-icon { - -webkit-mask: url('../icons/library-tab-icon.svg'); - mask: url('../icons/library-tab-icon.svg'); + -webkit-mask: url("../icons/library-tab-icon.svg"); + mask: url("../icons/library-tab-icon.svg"); } .arduino-list-widget { @@ -82,7 +82,7 @@ } .component-list-item .header .title .name { - font-family: 'Open Sans Bold'; + font-family: "Open Sans Bold"; font-style: normal; font-weight: 700; font-size: 14px; @@ -112,7 +112,9 @@ display: inline-block; justify-self: end; text-align: center; - background-color: var(--theia-arduino-toolbar-dropdown-option-backgroundHover); + background-color: var( + --theia-arduino-toolbar-dropdown-option-backgroundHover + ); padding: 2px 4px 2px 4px; font-size: 12px; max-height: calc(1em + 4px); @@ -131,7 +133,7 @@ display: flex; flex-direction: column; padding-top: 4px; - font-family: 'Open Sans'; + font-family: "Open Sans"; font-style: normal; font-weight: 400; font-size: 12px; @@ -175,8 +177,20 @@ max-width: 8px; } -div.filterable-list-container > div > div > div > div:nth-child(1) > div.separator :first-child, -div.filterable-list-container > div > div > div > div:nth-child(1) > div.separator :last-child { +div.filterable-list-container + > div + > div + > div + > div:nth-child(1) + > div.separator + :first-child, +div.filterable-list-container + > div + > div + > div + > div:nth-child(1) + > div.separator + :last-child { display: none; } @@ -202,11 +216,11 @@ div.filterable-list-container > div > div > div > div:nth-child(1) > div.separat } .component-list-item .theia-button.secondary.no-border { - border: 2px solid var(--theia-button-foreground) + border: 2px solid var(--theia-button-foreground); } .component-list-item .theia-button.secondary.no-border:hover { - border: 2px solid var(--theia-secondaryButton-foreground) + border: 2px solid var(--theia-secondaryButton-foreground); } .component-list-item .theia-button { diff --git a/arduino-ide-extension/src/browser/style/main.css b/arduino-ide-extension/src/browser/style/main.css index 2e310e21..942d3c68 100644 --- a/arduino-ide-extension/src/browser/style/main.css +++ b/arduino-ide-extension/src/browser/style/main.css @@ -1,11 +1,12 @@ -#theia-bottom-content-panel .p-TabBar[data-orientation='horizontal'].theia-app-bottom { +#theia-bottom-content-panel + .p-TabBar[data-orientation="horizontal"].theia-app-bottom { background: var(--theia-editorGroupHeader-tabsBackground); } /* Avoid the Intellisense widget may be cover by the bottom panel partially. TODO: This issue may be resolved after monaco-editor upgrade */ #theia-main-content-panel { - z-index: auto + z-index: auto; } #theia-main-content-panel div[id^="code-editor-opener"] { @@ -23,7 +24,6 @@ border-radius: 1px; } - .p-TabBar-toolbar .item.arduino-tool-item > div { display: flex; justify-content: center; @@ -42,9 +42,15 @@ background: var(--theia-arduino-toolbar-button-hoverBackground); } -.p-TabBar-toolbar .item.arduino-tool-item.enabled:hover > div.toggle-serial-monitor, -.p-TabBar-toolbar .item.arduino-tool-item.enabled:hover > div.toggle-serial-plotter { - background-color: var(--theia-arduino-toolbar-button-secondary-hoverBackground); +.p-TabBar-toolbar + .item.arduino-tool-item.enabled:hover + > div.toggle-serial-monitor, +.p-TabBar-toolbar + .item.arduino-tool-item.enabled:hover + > div.toggle-serial-plotter { + background-color: var( + --theia-arduino-toolbar-button-secondary-hoverBackground + ); border-radius: 14px; } @@ -55,14 +61,14 @@ } .item.arduino-tool-item.toggled { - background-color: unset; - opacity: 1; - border: none; + background-color: unset; + opacity: 1; + border: none; } .item.arduino-tool-item.toggled .arduino-verify-sketch--toolbar, .item.arduino-tool-item.toggled .arduino-upload-sketch--toolbar { - background-color: var(--theia-arduino-toolbar-toggleBackground) !important; + background-color: var(--theia-arduino-toolbar-toggleBackground) !important; } .arduino-tool-icon { @@ -91,7 +97,7 @@ } .arduino-start-debug-icon { - -webkit-mask: url('../icons/debug-dark.svg') 50% 60%; + -webkit-mask: url("../icons/debug-dark.svg") 50% 60%; -webkit-mask-size: 70%; -webkit-mask-repeat: no-repeat; display: flex; @@ -175,7 +181,12 @@ background-color: var(--theia-terminal-background); } -.theia-output .monaco-editor .lines-content.monaco-editor-background .view-lines .view-line .mtk1:not(.theia-output-error):not(.theia-output-warning) { +.theia-output + .monaco-editor + .lines-content.monaco-editor-background + .view-lines + .view-line + .mtk1:not(.theia-output-error):not(.theia-output-warning) { color: var(--theia-terminal-foreground); } diff --git a/arduino-ide-extension/src/browser/style/monitor.css b/arduino-ide-extension/src/browser/style/monitor.css index dfbed12a..3ee6e65c 100644 --- a/arduino-ide-extension/src/browser/style/monitor.css +++ b/arduino-ide-extension/src/browser/style/monitor.css @@ -1,6 +1,6 @@ .monitor-tab-icon { - -webkit-mask: url('../icons/monitor-tab-icon.svg'); - mask: url('../icons/monitor-tab-icon.svg'); + -webkit-mask: url("../icons/monitor-tab-icon.svg"); + mask: url("../icons/monitor-tab-icon.svg"); } .serial-monitor { @@ -10,8 +10,8 @@ } .serial-monitor-messages { - white-space: 'pre'; - font-family: monospace + white-space: "pre"; + font-family: monospace; } .serial-monitor-messages pre { diff --git a/arduino-ide-extension/src/browser/style/progress-bar.css b/arduino-ide-extension/src/browser/style/progress-bar.css index d395ece9..7ccc816f 100644 --- a/arduino-ide-extension/src/browser/style/progress-bar.css +++ b/arduino-ide-extension/src/browser/style/progress-bar.css @@ -1,32 +1,32 @@ .progress-bar { - margin-top: 20px; + margin-top: 20px; } .progress-bar--outer { - background: var(--theia-editorWidget-background); - border-radius: 11px; - height: 6px; - position: relative; - overflow: hidden; + background: var(--theia-editorWidget-background); + border-radius: 11px; + height: 6px; + position: relative; + overflow: hidden; } .progress-bar--inner { - transition: width 1s; - height: 100%; - background: var(--theia-progressBar-background); - border-radius: 11px; + transition: width 1s; + height: 100%; + background: var(--theia-progressBar-background); + border-radius: 11px; } .progress-bar--percentage { - align-items: flex-end; - display: flex; - height: 40px; - justify-content: center; - margin-top: 10px; - width: 100%; + align-items: flex-end; + display: flex; + height: 40px; + justify-content: center; + margin-top: 10px; + width: 100%; } .progress-bar--percentage-text { - font-size: 14px; - line-height: 24px; + font-size: 14px; + line-height: 24px; } diff --git a/arduino-ide-extension/src/browser/style/settings-dialog.css b/arduino-ide-extension/src/browser/style/settings-dialog.css index 61e806ec..6702e736 100644 --- a/arduino-ide-extension/src/browser/style/settings-dialog.css +++ b/arduino-ide-extension/src/browser/style/settings-dialog.css @@ -1,5 +1,5 @@ #arduino-settings-dialog-container > .dialogBlock { - height: 531px;; + height: 531px; max-width: 740px !important; width: calc(100% - 96px); } diff --git a/arduino-ide-extension/src/browser/style/settings-step-input.css b/arduino-ide-extension/src/browser/style/settings-step-input.css index 194dadc3..e7a07f5f 100644 --- a/arduino-ide-extension/src/browser/style/settings-step-input.css +++ b/arduino-ide-extension/src/browser/style/settings-step-input.css @@ -1,5 +1,5 @@ .settings-step-input-container { - position: relative + position: relative; } .settings-step-input-element::-webkit-inner-spin-button, @@ -25,7 +25,7 @@ right: 14px; } -.settings-step-input-container:hover>.settings-step-input-buttons-container { +.settings-step-input-container:hover > .settings-step-input-buttons-container { display: flex; } @@ -47,4 +47,4 @@ .settings-step-input-button:hover { background: rgba(128, 128, 128, 0.8); -} \ No newline at end of file +} diff --git a/arduino-ide-extension/src/browser/style/sketchbook.css b/arduino-ide-extension/src/browser/style/sketchbook.css index 3ff64000..33363bc6 100644 --- a/arduino-ide-extension/src/browser/style/sketchbook.css +++ b/arduino-ide-extension/src/browser/style/sketchbook.css @@ -1,37 +1,36 @@ .sketchbook-tab-icon { - -webkit-mask: url('./sketchbook.svg'); - mask: url('./sketchbook.svg'); + -webkit-mask: url("./sketchbook.svg"); + mask: url("./sketchbook.svg"); } .p-TabBar-tabIcon.sketchbook-tree-icon { - background-color: var(--theia-foreground); - -webkit-mask: url(./sketchbook-tree-icon.svg); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - width: 19px !important; - height: var(--theia-icon-size); - -webkit-mask-size: 100%; + background-color: var(--theia-foreground); + -webkit-mask: url(./sketchbook-tree-icon.svg); + -webkit-mask-position: center; + -webkit-mask-repeat: no-repeat; + width: 19px !important; + height: var(--theia-icon-size); + -webkit-mask-size: 100%; } -.p-mod-current -.sketchbook-tree-icon { - background-color: var(--theia-foreground); - -webkit-mask: url(./sketchbook-tree-icon-filled.svg); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-size: 100%; +.p-mod-current .sketchbook-tree-icon { + background-color: var(--theia-foreground); + -webkit-mask: url(./sketchbook-tree-icon-filled.svg); + -webkit-mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: 100%; } .sketchbook-trees-container { - height: 100%; + height: 100%; } .sketchbook-trees-container .create-new { - min-height: 58px; - height: 58px; - display: flex; - align-items: center; - justify-content: center; + min-height: 58px; + height: 58px; + display: flex; + align-items: center; + justify-content: center; } /* By default, theia-button has a left-margin. IDE2 does not need the left margin @@ -39,44 +38,43 @@ for the _New Remote? Sketch_. Otherwise, the button does not fit the default widget width. */ .sketchbook-trees-container .create-new .theia-button { - margin-left: unset; + margin-left: unset; } .sketchbook-tree__opts { - background-color: var(--theia-foreground); - -webkit-mask: url(./sketchbook-opts-icon.svg); - -webkit-mask-position: center; - -webkit-mask-repeat: no-repeat; - width: var(--theia-icon-size); - height: var(--theia-icon-size); + background-color: var(--theia-foreground); + -webkit-mask: url(./sketchbook-opts-icon.svg); + -webkit-mask-position: center; + -webkit-mask-repeat: no-repeat; + width: var(--theia-icon-size); + height: var(--theia-icon-size); } .active-sketch { - font-weight: 500; - background-color: var(--theia-list-activeSelectionBackground) !important; - color: var(--theia-list-activeSelectionForeground) !important; - + font-weight: 500; + background-color: var(--theia-list-activeSelectionBackground) !important; + color: var(--theia-list-activeSelectionForeground) !important; } #arduino-sketchbook-tree-widget .theia-TreeNode { - line-height: 30px; + line-height: 30px; } #arduino-sketchbook-tree-widget .theia-TreeNodeSegmentGrow { - flex: 1; + flex: 1; } .theia-TreeNode .sketchbook-commands-icons { - display: none; + display: none; } .theia-TreeNode:hover .sketchbook-commands-icons, .theia-TreeNode.theia-mod-selected .sketchbook-commands-icons { - display: block; + display: block; } .theia-Tree:focus .theia-TreeNode.theia-mod-selected, .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected { - background: var(--theia-list-inactiveSelectionBackground); - color: var(--theia-list-inactiveSelectionForeground) !important; + background: var(--theia-list-inactiveSelectionBackground); + color: var(--theia-list-inactiveSelectionForeground) !important; } diff --git a/arduino-ide-extension/src/browser/style/user-fields-dialog.css b/arduino-ide-extension/src/browser/style/user-fields-dialog.css index 89a7b149..19e97b7a 100644 --- a/arduino-ide-extension/src/browser/style/user-fields-dialog.css +++ b/arduino-ide-extension/src/browser/style/user-fields-dialog.css @@ -1,32 +1,32 @@ .user-fields-container { - max-height: 332px; - overflow: auto; - padding: 2px; + max-height: 332px; + overflow: auto; + padding: 2px; } .user-fields-list { - margin: 16px 0; + margin: 16px 0; } .user-fields-dialog-content { - width: 408px; - max-height: 491px; + width: 408px; + max-height: 491px; } .user-fields-dialog-content .field-label { - color: var(--theia-editorWidget-foreground); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 21px; - letter-spacing: 0.01em; - text-align: left; + color: var(--theia-editorWidget-foreground); + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 21px; + letter-spacing: 0.01em; + text-align: left; } .user-fields-dialog-content .theia-input { - flex-grow: 1; + flex-grow: 1; } .user-fields-dialog-content .button-container { - justify-content: flex-end; + justify-content: flex-end; } diff --git a/arduino-ide-extension/src/browser/theia/core/tab-bar-decorator.ts b/arduino-ide-extension/src/browser/theia/core/tab-bar-decorator.ts index 0ecf1a37..0f5728d9 100644 --- a/arduino-ide-extension/src/browser/theia/core/tab-bar-decorator.ts +++ b/arduino-ide-extension/src/browser/theia/core/tab-bar-decorator.ts @@ -1,4 +1,8 @@ -import { inject, injectable, postConstruct } from '@theia/core/shared/inversify'; +import { + inject, + injectable, + postConstruct, +} from '@theia/core/shared/inversify'; import URI from '@theia/core/lib/common/uri'; import { Title, Widget } from '@theia/core/shared/@phosphor/widgets'; import { EditorWidget } from '@theia/editor/lib/browser'; diff --git a/arduino-ide-extension/src/browser/theia/monaco/monaco-editor-provider.ts b/arduino-ide-extension/src/browser/theia/monaco/monaco-editor-provider.ts index 2718b057..524461b5 100644 --- a/arduino-ide-extension/src/browser/theia/monaco/monaco-editor-provider.ts +++ b/arduino-ide-extension/src/browser/theia/monaco/monaco-editor-provider.ts @@ -4,13 +4,15 @@ import { Disposable, DisposableCollection, } from '@theia/core/lib/common/disposable'; -import { EditorServiceOverrides, MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor'; +import { + EditorServiceOverrides, + MonacoEditor, +} from '@theia/monaco/lib/browser/monaco-editor'; import { MonacoEditorProvider as TheiaMonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider'; import { SketchesServiceClientImpl } from '../../sketches-service-client-impl'; import * as monaco from '@theia/monaco-editor-core'; import type { ReferencesModel } from '@theia/monaco-editor-core/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel'; - type CancelablePromise = Promise & { cancel: () => void; }; @@ -39,7 +41,9 @@ export class MonacoEditorProvider extends TheiaMonacoEditorProvider { private installCustomReferencesController(editor: MonacoEditor): Disposable { const control = editor.getControl(); - const referencesController: any = control.getContribution('editor.contrib.referencesController'); + const referencesController: any = control.getContribution( + 'editor.contrib.referencesController' + ); const originalToggleWidget = referencesController.toggleWidget; const toDispose = new DisposableCollection(); const toDisposeBeforeToggleWidget = new DisposableCollection(); diff --git a/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts b/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts index 23d46aaa..eb508fc0 100644 --- a/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts @@ -14,7 +14,8 @@ export class FileNavigatorContribution extends TheiaFileNavigatorContribution { constructor( @inject(FileNavigatorPreferences) protected override readonly fileNavigatorPreferences: FileNavigatorPreferences, - @inject(OpenerService) protected override readonly openerService: OpenerService, + @inject(OpenerService) + protected override readonly openerService: OpenerService, @inject(FileNavigatorFilter) protected override readonly fileNavigatorFilter: FileNavigatorFilter, @inject(WorkspaceService) diff --git a/arduino-ide-extension/src/browser/theia/output/output-toolbar-contribution.ts b/arduino-ide-extension/src/browser/theia/output/output-toolbar-contribution.ts index cf0e524a..660c93dd 100644 --- a/arduino-ide-extension/src/browser/theia/output/output-toolbar-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/output/output-toolbar-contribution.ts @@ -8,7 +8,9 @@ import { OutputToolbarContribution as TheiaOutputToolbarContribution } from '@th @injectable() export class OutputToolbarContribution extends TheiaOutputToolbarContribution { - override async registerToolbarItems(registry: TabBarToolbarRegistry): Promise { + override async registerToolbarItems( + registry: TabBarToolbarRegistry + ): Promise { await super.registerToolbarItems(registry); // Why is it async? // It's a hack. Currently, it's not possible to unregister a toolbar contribution via API. ( diff --git a/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts b/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts index cc759db5..cda8bd58 100644 --- a/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts @@ -8,7 +8,10 @@ export class ScmContribution extends TheiaScmContribution { // NOOP } - protected override setStatusBarEntry(id: string, entry: StatusBarEntry): void { + protected override setStatusBarEntry( + id: string, + entry: StatusBarEntry + ): void { // NOOP } } diff --git a/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/README.md b/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/README.md index c5de38c9..e80c20c5 100644 --- a/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/README.md +++ b/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/README.md @@ -1 +1 @@ -Sketchcache = is a cache that holds sketches and fileStat objects. \ No newline at end of file +Sketchcache = is a cache that holds sketches and fileStat objects. diff --git a/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-widget.ts b/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-widget.ts index 6e112eef..528aab2a 100644 --- a/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-widget.ts +++ b/arduino-ide-extension/src/browser/widgets/cloud-sketchbook/cloud-sketchbook-widget.ts @@ -1,4 +1,8 @@ -import { inject, injectable, postConstruct } from '@theia/core/shared/inversify'; +import { + inject, + injectable, + postConstruct, +} from '@theia/core/shared/inversify'; import { CloudSketchbookCompositeWidget } from './cloud-sketchbook-composite-widget'; import { SketchbookWidget } from '../sketchbook/sketchbook-widget'; import { ArduinoPreferences } from '../../arduino-preferences'; diff --git a/arduino-ide-extension/src/common/protocol/library-service.ts b/arduino-ide-extension/src/common/protocol/library-service.ts index e8a32d90..a45b9757 100644 --- a/arduino-ide-extension/src/common/protocol/library-service.ts +++ b/arduino-ide-extension/src/common/protocol/library-service.ts @@ -67,7 +67,7 @@ export namespace LibrarySearch { 'Contributed', 'Retired', ] as const; - export type Type = typeof TypeLiterals[number]; + export type Type = (typeof TypeLiterals)[number]; export namespace Type { export function is(arg: unknown): arg is Type { return typeof arg === 'string' && TypeLiterals.includes(arg as Type); @@ -96,7 +96,7 @@ export namespace LibrarySearch { 'Timing', 'Uncategorized', ] as const; - export type Topic = typeof TopicLiterals[number]; + export type Topic = (typeof TopicLiterals)[number]; export namespace Topic { export function is(arg: unknown): arg is Topic { return typeof arg === 'string' && TopicLiterals.includes(arg as Topic); diff --git a/arduino-ide-extension/tsconfig.json b/arduino-ide-extension/tsconfig.json index 222831ac..35c42601 100644 --- a/arduino-ide-extension/tsconfig.json +++ b/arduino-ide-extension/tsconfig.json @@ -14,18 +14,11 @@ "resolveJsonModule": true, "target": "ES2017", "outDir": "lib", - "lib": [ - "ES2017", - "dom" - ], + "lib": ["ES2017", "dom"], "jsx": "react", "sourceMap": true, "skipLibCheck": true }, - "include": [ - "src" - ], - "files": [ - "../node_modules/nsfw/index.d.ts" - ] + "include": ["src"], + "files": ["../node_modules/nsfw/index.d.ts"] } diff --git a/docs/README.md b/docs/README.md index 80244158..391c6626 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,41 +3,45 @@ Arduino IDE provides a Cloud Sketchbook feature that can be used to upload sketches to Arduino Cloud. ![](assets/remote.png) - - In order to use this feature, a user must be registered on [Arduino Cloud](https://store.arduino.cc/digital/create) and logged in. This feature is completely optional and can be disabled in the IDE via the _"File > Advanced > Hide Cloud Sketchbook"_ menu item. ## Developer guide + A developer could use the content of this repo to create a customized version of this feature and implement a different remote storage as follows: ### 1. Changing remote connection parameters in the Preferences panel (be careful while editing the Preferences panel!) + Here a screenshot of the Preferences panel ![](assets/preferences.png) + - The settings under _Arduino > Auth_ should be edited to match the OAuth2 configuration of your custom cloud sketchbook storage - The setting under _Arduino > Sketch Sync Endpoint_ should be edited to point to your custom cloud sketchbook storage service + ### 2. Implementing the Arduino Cloud Store APIs for your custom cloud sketchbook storage + Following the API Reference below: -| API Call | OpenAPI documentation | -| ------------- | ------------- | -| DELETE create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletedir | -| DELETE create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletefile | -| GET create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_list | -| GET create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_read | -| GET create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_search | -| GET create/v2/sketches/byID/{id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byID | -| GET create/v2/sketches/byPath{path} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byPath | -| POST create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_mkdir | -| POST create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_write | -| POST create/v2/sketches/{sketch.id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_edit | -| POST create/v3/files/cp | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_copy | -| POST create/v3/files/mv | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_move | -| PUT create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_create | +| API Call | OpenAPI documentation | +| ----------------------------------------------------- | --------------------------------------------------------------------- | +| DELETE create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletedir | +| DELETE create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletefile | +| GET create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_list | +| GET create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_read | +| GET create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_search | +| GET create/v2/sketches/byID/{id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byID | +| GET create/v2/sketches/byPath{path} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byPath | +| POST create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_mkdir | +| POST create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_write | +| POST create/v2/sketches/{sketch.id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_edit | +| POST create/v3/files/cp | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_copy | +| POST create/v3/files/mv | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_move | +| PUT create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_create | ## Build the Arduino IDE with this extension To build the Arduino IDE with this extension, run the following in a terminal. On Windows, use _Git Bash_. + ```sh ./bootstrap.sh -``` \ No newline at end of file +``` diff --git a/docs/internal/Arm.md b/docs/internal/Arm.md index c36e16fb..2c6e711d 100644 --- a/docs/internal/Arm.md +++ b/docs/internal/Arm.md @@ -3,56 +3,69 @@ Building the Pro IDE on Linux `armv7l` (aka `armhf`) and `aarch64` (aka `arm64`): 1. Install Node.js 16.x with [nvm](https://github.com/nvm-sh/nvm#install--update-script): - ``` - wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash - ``` - Restart your shell then: - ``` - nvm install 16 - nvm use 16 - ``` - Verify: - ``` - node -v - ``` + + ``` + wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash + ``` + + Restart your shell then: + + ``` + nvm install 16 + nvm use 16 + ``` + + Verify: + + ``` + node -v + ``` 2. Install [Yarn](https://classic.yarnpkg.com/en/docs/install/#debian-stable): - Configure the Debian package repository; otherwise, you will pull a different `yarn`. - ``` - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - ``` - Install: - ``` - sudo apt update && sudo apt install --no-install-recommends yarn - ``` - Verify: - ``` - yarn -v - 1.22.4 - ``` + Configure the Debian package repository; otherwise, you will pull a different `yarn`. + + ``` + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - + echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list + ``` + + Install: + + ``` + sudo apt update && sudo apt install --no-install-recommends yarn + ``` + + Verify: + + ``` + yarn -v + 1.22.4 + ``` 3. Other native [dependencies](https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#prerequisites): - - `make`, - - `gcc`, - - `pkg-config`, - - `build-essential`, - - `libx11-dev`, and - - `libxkbfile-dev` + + - `make`, + - `gcc`, + - `pkg-config`, + - `build-essential`, + - `libx11-dev`, and + - `libxkbfile-dev` 4. [Build it](../development.md#build-from-source) from the source: - ``` - git clone https://github.com/arduino/arduino-ide.git \ - && cd arduino-ide \ - && yarn \ - && yarn rebuild:electron \ - && yarn --cwd ./electron-app start - ``` + + ``` + git clone https://github.com/arduino/arduino-ide.git \ + && cd arduino-ide \ + && yarn \ + && yarn rebuild:electron \ + && yarn --cwd ./electron-app start + ``` 5. Troubleshoot - If you see [`ENOSPC` errors](https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#linux) at runtime, increase the default `inotify` watches: - ``` - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - ``` + If you see [`ENOSPC` errors](https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#linux) at runtime, increase the default `inotify` watches: + + ``` + echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p + ``` diff --git a/electron-app/resources/preload.html b/electron-app/resources/preload.html index 9843ac97..e11e1c6b 100644 --- a/electron-app/resources/preload.html +++ b/electron-app/resources/preload.html @@ -57,7 +57,7 @@ @keyframes preload-spinner { 0% { - transform: scale(1.0); + transform: scale(1); } 50% { @@ -65,48 +65,127 @@ } 100% { - transform: scale(1.0); + transform: scale(1); } } -
-
- - - +
+
+ + + - - - - - - + + + + + + - + - - - - - - + + + + + + - + + d="M947.959 931.196c-12.909 0-26.127-.929-39.127-2.864-108.978-15.554-181.848-93.822-222.665-153.989-40.946 60.166-113.811 138.512-222.74 154.045a275.864 275.864 0 0 1-39.133 2.785c-67.753 0-131.358-25.217-179.201-71.003-48.299-46.165-74.951-108.114-74.951-174.171 0-66.14 26.651-128.004 75.021-174.253 47.797-45.793 111.449-70.936 179.231-70.936 12.918 0 26.067.928 39.023 2.783 108.932 15.535 181.794 93.813 222.743 153.99 40.825-60.177 113.689-138.432 222.658-153.99 13-1.863 26.148-2.783 39.066-2.783 67.753 0 131.401 25.208 179.197 70.936 48.345 46.249 74.937 108.113 74.937 174.253 0 66.057-26.524 128.006-74.868 174.171-47.881 45.785-111.434 71.026-179.191 71.026M734.42 686.024c21.283 40.534 84.067 141.676 186.692 156.375 8.984 1.236 18.028 1.923 26.839 1.923 92.185 0 167.225-71.002 167.225-158.322s-75.023-158.321-167.291-158.321c-8.812 0-17.853.629-26.753 1.921-102.644 14.664-165.428 115.806-186.712 156.424M424.393 527.702c-92.308 0-167.36 70.998-167.36 158.321 0 87.305 75.021 158.322 167.245 158.322 8.852 0 17.897-.688 26.879-1.922 102.629-14.697 165.394-115.783 186.689-156.375-21.237-40.535-84.061-141.761-186.689-156.376-8.877-1.341-17.945-1.97-26.764-1.97" + /> + d="M354.37 662.051h152.625v49.181H354.37zM1016.484 662.051h-51.671v-51.747h-49.348v51.747h-51.648v49.181h51.648v51.737h49.348v-51.737h51.671z" + />
diff --git a/lerna.json b/lerna.json index 3b455fab..13216973 100644 --- a/lerna.json +++ b/lerna.json @@ -7,4 +7,4 @@ "stream": true } } -} \ No newline at end of file +} diff --git a/scripts/themes/theme-tokens-pull.js b/scripts/themes/theme-tokens-pull.js index b0e9238c..117a4a19 100644 --- a/scripts/themes/theme-tokens-pull.js +++ b/scripts/themes/theme-tokens-pull.js @@ -6,13 +6,13 @@ const JSONBIN_ID = process.env.JSONBIN_ID; const destFolder = './scripts/themes/tokens'; -if (!fs.existsSync(destFolder)){ +if (!fs.existsSync(destFolder)) { fs.mkdirSync(destFolder); } let req = new XMLHttpRequest(); -req.open('GET', 'https://api.jsonbin.io/v3/b/'+ JSONBIN_ID +'/latest', true); +req.open('GET', 'https://api.jsonbin.io/v3/b/' + JSONBIN_ID + '/latest', true); req.setRequestHeader('X-Master-Key', JSONBIN_MASTER_KEY); req.send(); diff --git a/scripts/update-version.js b/scripts/update-version.js index fea65ed2..e787dba4 100644 --- a/scripts/update-version.js +++ b/scripts/update-version.js @@ -6,41 +6,54 @@ const semver = require('semver'); const targetVersion = process.argv.slice(2).shift(); const repoRootPath = path.join(__dirname, '..'); -const { version: currentVersion } = require(path.join(repoRootPath, 'package.json')); +const { version: currentVersion } = require(path.join( + repoRootPath, + 'package.json' +)); if (!targetVersion) { - console.error('Target version was not specified. Target version must be a valid semver. Use: `yarn update:version x.y.z` to update the versions.'); - process.exit(1); + console.error( + 'Target version was not specified. Target version must be a valid semver. Use: `yarn update:version x.y.z` to update the versions.' + ); + process.exit(1); } if (!semver.valid(targetVersion)) { - console.error(`Target version '${targetVersion}' is not a valid semver. Use: \`yarn update:version x.y.z\` to update the versions.`); - process.exit(1); + console.error( + `Target version '${targetVersion}' is not a valid semver. Use: \`yarn update:version x.y.z\` to update the versions.` + ); + process.exit(1); } if (!semver.gt(targetVersion, currentVersion)) { - console.error(`Target version '${targetVersion}' must be greater than the current version '${currentVersion}'.`); - process.exit(1); + console.error( + `Target version '${targetVersion}' must be greater than the current version '${currentVersion}'.` + ); + process.exit(1); } -console.log(`🛠️ Updating current version from '${currentVersion}' to '${targetVersion}':`); +console.log( + `🛠️ Updating current version from '${currentVersion}' to '${targetVersion}':` +); for (const toUpdate of [ - path.join(repoRootPath, 'package.json'), - path.join(repoRootPath, 'electron-app', 'package.json'), - path.join(repoRootPath, 'arduino-ide-extension', 'package.json') + path.join(repoRootPath, 'package.json'), + path.join(repoRootPath, 'electron-app', 'package.json'), + path.join(repoRootPath, 'arduino-ide-extension', 'package.json'), ]) { - process.stdout.write(` Updating ${toUpdate}'...`); - const pkg = require(toUpdate); - pkg.version = targetVersion; - if ('dependencies' in pkg) { - for (const dep of Object.keys(pkg['dependencies'])) { - if (dep.startsWith('arduino-ide-')) { - pkg['dependencies'][dep] = targetVersion; - } - } + process.stdout.write(` Updating ${toUpdate}'...`); + const pkg = require(toUpdate); + pkg.version = targetVersion; + if ('dependencies' in pkg) { + for (const dep of Object.keys(pkg['dependencies'])) { + if (dep.startsWith('arduino-ide-')) { + pkg['dependencies'][dep] = targetVersion; + } } - fs.writeFileSync(toUpdate, JSON.stringify(pkg, null, 2) + '\n'); - process.stdout.write(` ✅ Done.\n`); + } + fs.writeFileSync(toUpdate, JSON.stringify(pkg, null, 2) + '\n'); + process.stdout.write(` ✅ Done.\n`); } -console.log(`Done. The new version is '${targetVersion}' now. Commit your changes and tag the code for the release. 🚢`); +console.log( + `Done. The new version is '${targetVersion}' now. Commit your changes and tag the code for the release. 🚢` +);