├── .travis.yml ├── LICENSE ├── README.md ├── docs ├── .env.enc ├── .firebase │ └── hosting.LnZ1ZXByZXNzXGRpc3Q.cache ├── .firebaserc ├── .gitignore ├── .vuepress │ ├── admonition.styl │ ├── analytics.js │ ├── body-styles.styl │ ├── buildAssets │ │ ├── api │ │ │ ├── api.png │ │ │ ├── references.png │ │ │ └── structures.png │ │ ├── arrow-up.svg │ │ ├── command-palette.png │ │ ├── examples-activity-monitor.mp4 │ │ ├── examples-activity-monitor.png │ │ ├── examples-hash.png │ │ ├── examples-price.png │ │ ├── getting-started │ │ │ ├── project-start-demo.jpg │ │ │ └── project-start-demo.mp4 │ │ ├── guide │ │ │ ├── getting-started.png │ │ │ ├── getting-started │ │ │ │ ├── enter-project-name.png │ │ │ │ ├── open-project.png │ │ │ │ └── start-new-project.png │ │ │ ├── hello-world-intro.mp4 │ │ │ ├── hello-world-intro.png │ │ │ ├── intro │ │ │ │ ├── build-focus.png │ │ │ │ ├── build.png │ │ │ │ ├── new-project.png │ │ │ │ ├── run.png │ │ │ │ └── setup-editor.png │ │ │ ├── introduction.png │ │ │ ├── quark-ide.png │ │ │ ├── quark-ide │ │ │ │ ├── changed-settings-markers.png │ │ │ │ ├── explorer.png │ │ │ │ ├── extensible.mp4 │ │ │ │ ├── extensible.png │ │ │ │ ├── introduction.mp4 │ │ │ │ ├── introduction.png │ │ │ │ ├── multiple-terminals.png │ │ │ │ ├── setting-group.png │ │ │ │ ├── settings.mp4 │ │ │ │ ├── settings.png │ │ │ │ ├── terminal.mp4 │ │ │ │ ├── terminal.png │ │ │ │ ├── themes.mp4 │ │ │ │ ├── themes.png │ │ │ │ └── ui-overview.png │ │ │ ├── setting-up-quark.png │ │ │ ├── showcase.png │ │ │ └── showcase │ │ │ │ ├── control-system-1.mp4 │ │ │ │ ├── control-system-1.png │ │ │ │ ├── control-system-2.mp4 │ │ │ │ ├── control-system-2.png │ │ │ │ ├── news-app.mp4 │ │ │ │ ├── news-app.png │ │ │ │ ├── scientific-charts.mp4 │ │ │ │ ├── scientific-charts.png │ │ │ │ ├── stock.mp4 │ │ │ │ ├── stock.png │ │ │ │ ├── system-monitor.mp4 │ │ │ │ ├── system-monitor.png │ │ │ │ ├── web-browser.mp4 │ │ │ │ └── web-browser.png │ │ ├── hello-world-app │ │ │ └── directory-structure.png │ │ ├── key-binding-component.png │ │ ├── landing-page-svgs │ │ │ ├── configuration-ui.svg │ │ │ ├── control-hardware.svg │ │ │ ├── cross-platform.svg │ │ │ ├── error-overlay.svg │ │ │ ├── find-and-replace.svg │ │ │ ├── integrated-terminal.svg │ │ │ ├── key-binding.svg │ │ │ ├── monaco-editor.svg │ │ │ ├── multiple-themes.svg │ │ │ ├── nodejs.svg │ │ │ ├── npm-support.svg │ │ │ ├── smart-autoCompletion.svg │ │ │ ├── typescript.svg │ │ │ ├── under-the-hood.svg │ │ │ ├── web-technologies.svg │ │ │ └── webpack-build.svg │ │ ├── libraries │ │ │ ├── create-vue-web-component-example.png │ │ │ ├── installed-libs-list.png │ │ │ ├── npm-client-search.png │ │ │ ├── npm-install-status.png │ │ │ ├── react-functional-component-view.png │ │ │ ├── serial-port-in-dom.png │ │ │ ├── serial-port-list.png │ │ │ └── view-preinstalled-libs-menu.png │ │ ├── quick-open.png │ │ ├── release-channel.png │ │ └── signature │ │ │ ├── github.svg │ │ │ ├── instagram.svg │ │ │ ├── linkedin.svg │ │ │ ├── mail.svg │ │ │ ├── twitter.svg │ │ │ └── website.svg │ ├── components │ │ ├── Breadcrumbs.vue │ │ ├── CarbonAds.vue │ │ ├── Download.vue │ │ ├── DropDown.vue │ │ ├── Header.vue │ │ ├── Landing.vue │ │ ├── Landing2.vue │ │ ├── Message.vue │ │ ├── MetaCard.vue │ │ ├── ReleaseNotes.vue │ │ ├── SocialIcons.vue │ │ ├── Tag.vue │ │ ├── landing-components │ │ │ ├── companyLogos.vue │ │ │ ├── floaters.vue │ │ │ ├── hero-download.vue │ │ │ ├── hero-features.vue │ │ │ ├── hero-section.vue │ │ │ ├── hero-top.vue │ │ │ ├── svg.js │ │ │ └── util.js │ │ ├── mermaid.vue │ │ └── signature.vue │ ├── config.js │ ├── enhanceApp.js │ ├── fly-annoying.styl │ ├── fly-mixin.styl │ ├── landing.scss │ ├── override.styl │ ├── public │ │ ├── assets │ │ │ ├── custom.css │ │ │ ├── eina-700.woff2 │ │ │ ├── ionic-prism.css │ │ │ ├── ionic.css │ │ │ └── material-icons.woff2 │ │ ├── images │ │ │ ├── apple-logo.svg │ │ │ ├── arrow.svg │ │ │ ├── background-base.svg │ │ │ ├── background.svg │ │ │ ├── download.svg │ │ │ ├── icon-svg.svg │ │ │ ├── icon.png │ │ │ ├── linux-logo.png │ │ │ ├── old-icon.png │ │ │ └── windows-logo.png │ │ ├── logos │ │ │ ├── css.svg │ │ │ ├── javascript.svg │ │ │ ├── nodejs.svg │ │ │ ├── npm.svg │ │ │ ├── react_ts.svg │ │ │ ├── stylus.svg │ │ │ ├── typescript.svg │ │ │ └── webpack.svg │ │ ├── pwa │ │ │ ├── images │ │ │ │ └── icons │ │ │ │ │ ├── icon-128x128.png │ │ │ │ │ ├── icon-144x144.png │ │ │ │ │ ├── icon-152x152.png │ │ │ │ │ ├── icon-192x192.png │ │ │ │ │ ├── icon-384x384.png │ │ │ │ │ ├── icon-512x512.png │ │ │ │ │ ├── icon-72x72.png │ │ │ │ │ └── icon-96x96.png │ │ │ └── manifest.json │ │ └── references │ │ │ └── commands │ │ │ └── registered-command.png │ ├── scoped-containers.scss │ ├── sidebar.styl │ ├── style.styl │ └── theme │ │ ├── Disqus.vue │ │ ├── Layout.vue │ │ ├── Layouttt.vue │ │ └── PageBottom.vue ├── FAQ │ ├── about.md │ ├── glossary.md │ ├── license.md │ └── terms-of-service.md ├── README.md ├── azure-pipelines.yml ├── cloud-storage-key.json.enc ├── cloudbuild.yaml ├── devtime.md ├── download │ ├── README.md │ └── insiders.md ├── examples │ ├── activity-monitor.md │ ├── arduino-dashboard.md │ ├── hash.md │ ├── mirror.md │ └── prices.md ├── firebase.json ├── guide │ ├── getting-started.md │ ├── hello-world-app.md │ ├── intro.md │ ├── quark-ide.md │ ├── setup.md │ └── showcase.md ├── libraries │ ├── electron-js.md │ ├── intro.md │ ├── react-js.md │ ├── serialport.md │ └── vue-js.md ├── package-lock.json ├── package.json ├── references │ ├── app.md │ ├── clipboard.md │ ├── commands.md │ ├── icons.md │ ├── storage.md │ ├── util.md │ ├── views.md │ └── window.md ├── releases │ ├── Quark-v0.1.md │ ├── Quark-v0.2.md │ ├── Quark-v0.3.md │ ├── Quark-v0.4.md │ ├── Quark-v0.5.md │ └── current-release.md ├── scripts │ ├── check-files.ts │ ├── cloud-storage-hosting.ts │ ├── convert-images.ts │ ├── convert-videos.ts │ ├── create-site-map.ts │ ├── download-raw-content.ts │ ├── electron-dependent.ts │ ├── fix-shasum.ts │ ├── generate-service-worker.ts │ ├── make-release-dir.ts │ ├── non-electron-dependent.ts │ ├── open-links.ts │ ├── post-build.ts │ ├── purge-cache.ts │ ├── send-build-notification.ts │ ├── sw.js │ ├── types.js │ ├── util.ts │ ├── versions.json │ └── video-speed-defaults.ts ├── snippets │ ├── auto-update.md │ ├── configuring-build.md │ └── convert-existing-electron-app.md ├── structures │ ├── ICommand.md │ ├── IKeyBindingRegister.md │ ├── ISnackbarButton.md │ ├── MemoryStore.md │ ├── PersistantStore.md │ ├── SnackbarItem.md │ ├── bottomview-controller.md │ ├── button-field.md │ ├── context-menu-ref.md │ ├── icon.md │ ├── input-field.md │ ├── menu-item.md │ ├── menu-ref.md │ ├── select-field.md │ ├── sideview-controller.md │ ├── tabsview-controller.md │ └── view-provider.md ├── style-guide │ ├── README.md │ └── creating-templates.md ├── travis-secrets.tar.enc ├── tsconfig.json └── version-assets │ ├── insiders │ ├── __broken-releases.json │ ├── __downloads.json │ ├── __package.json │ ├── __shasum.json │ └── __versions.json │ └── stable │ ├── __broken-releases.json │ ├── __downloads.json │ ├── __package.json │ ├── __shasum.json │ └── __versions.json └── images ├── control-system.gif ├── hello-world.gif ├── news-app.gif ├── plot-charts.gif ├── stock-analyzing-app.gif ├── system-monitor.gif └── web-browser.gif /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | dist: trusty 3 | language: node_js 4 | cache: 5 | - npm 6 | notifications: 7 | slack: 8 | secure: ymYswTlnKqLE/s8fbI3EJ4iRPPn3Jqr7YYJOnIFaDUpI3COD8Qce3VJ1barYTF1HVW9sfm95VSnYes7JajgQSf8YHzohIarxPDvTJTN3FvKH0c+7b32reBLHbiWbK5T1dnT6OAQ1GNeXMOsBZHxdkMeIIbRQdwUGO4qlt4X0RGcsZjhY7zZhrp+4ACb0r6eaGAUEaJpkVkSor1M3WUmY848aw1UMvBuioaYWTrX8KLGAaKfIxrnNSQnNUVCMcBQqzSsJTcdifD9oZFJoCu00oGrR9x+Yk6Iw8gEolwXuTWcNI2pgN2IFfzKOJFRWdOKoSmaOV39MJY4Y/Wy+Ht51ig4wYKBBYO+NqcJ0QYItRO7hde/hb2rHaONpAjDkrEIMqN/TlIBOFXfFCJvXfFi5uksappYRWcYeKiXVaxVXloqMt8Do+fXyw2x67QLJ3Kkb9FgK3ur6WO0FLIwy7jA+wkINgzlQjYD8Iu2QRvbGmnyL5xlph8MBouLrDb90aDRQEvFZ76kAjs43o2rVDmWQtsvgrKK2ZaUsoYzigu2j78PFN0Hbi4NFLe8oHV6upC7ymPwuCt2Z4H2Fh2B73X6BdKTtRWfn69Wx/954FK5lkHQ5JH+KiTXSGtH4fe4GxOPwlMG7D1+w9Xlq5J8LeN4cKZCL4fUnPZIrR8A04gi0ImI= 9 | email: 10 | on_success: never 11 | on_failure: change 12 | matrix: 13 | include: 14 | - os: linux 15 | node_js: lts/* 16 | before_install: 17 | - cd docs 18 | - openssl aes-256-cbc -K $encrypted_4afc4fad916e_key -iv $encrypted_4afc4fad916e_iv 19 | -in travis-secrets.tar.enc -out travis-secrets.tar -d 20 | - tar xvf travis-secrets.tar -C ./ 21 | - npm i -g firebase-tools 22 | install: 23 | - npm install 24 | script: 25 | - npm run cloud-build 26 | - npm run post-build 27 | - npm run deploy-to-bucket 28 | deploy: 29 | provider: firebase 30 | token: 31 | secure: LF/KYTxiB8tcvwpBlg5z0W/BHk868uTZGLDFgD48ajEM7rRMBmKrPlZx9tV8xFCHsXEmBTGThDGXGzvPZsXD6m8kSM+fRZuf5Hz97R2aFYwwi0HpE/mtbBedClhDCxX2hA8/2fJ9avitjXGCf3ZrBBYJ55du0pf55iQyybQAtgZV3AMbtcUg5NZZvTGm4L2xfCLUtloAw7YnpYDndtfEa/1Mne0rYP+aQTN/NgL9xTK2uDeLqi2HHH9wWjg2X16DfiQzeB24v9pv/AgfIk0X0gEi1NpdQwpmS2zYJzl0Re9J9npxWajUCSmHv1Mi5pKypxudTi5Pn6VcDydfdE3/4gJx7KHXjueyzpGaCkM3GhsJbggEWWE2gOcEyNB98TLNl/v5nM2zjEPxOytkwgHGgNZEc7xFV4BTnujQLaGdhtzHdxP4Joqd4YmRPTgD2MpqtLnm+H9aXs1D8gkpJ0US2AunqZYdUGoodI/YNhUeJBzZtEcZFhv2gtYjuAHsCqAUgBqYZyb7ai6CbOSuGgBAbvwOGXrLdS/X/nlXVgN4plNHrbR9h8I63GH2KyR6jiG/rH0x1M0CpvMsEddUzynXTVXLkJiEHpuCj9F6AHe1sy1cp/ZUH+c2nnQh5lXTasrCCZCnx4u+BHgjTd2qzcWOX273Syhn6paLpwcL/AndMbU= 32 | project: diy-mechatronics 33 | local_dir: "./.vuepress/dist" 34 | skip_cleanup: true 35 | env: 36 | global: 37 | secure: tuHY+rHarKQ2vz5NBUWGqNbWM65Nkd6blCGCQPwA2mwSpFj6P34sjPeBfP/ugtLX93oBXs3upkRFgdjwELYO82TC+0guRkvP+fQVqHCkkhvZkgZwbixTVbiryS1/TRffjY94tB3gRhaTT4rlk1f7pCskSVNo9xMMSrl67DV8iodbjnlXai+FI6TLmipX20pda3Ln3dA2HuOOk2CPf6b5BZeR5W6VQkWoPye+EX3zQSIu3zNwwbwyQIRQ7QOHNbpBcvHMexSYuJaqxZwSybg+8uMokNaP7rxy5cSnibveP20KzUkwK06fms6q7Wi3KZhcCqq3bc0Pv4JY95wQJe07rux5Vh9ri/Ss4ozckXAP2Af88nR6Xchke0bFCjfHMZ5Q7glfh5WqE6B+x8N13lSSUt4zEE7/LTnJpShIe8EfRB+ZP3c/VvMfnokbEJWpx/KHYiOhoHVBPUZUbs6Sy7SyHo7XX7XRDXKhNLC/f5YrS8sec5pZfz9aRnM+7IAsjJTIwmrK50E8q9UIDnlx1qLm6j+6k0JHIi3OQLwessXVJthScWon0XOwkza4x+QN1QbhE/Io/12Hc2I1h974IAMad+jMGgqOKImnzIRqr9aA68jllU4WpuF66jYC/CyTk2NKgpjD6HFA7YzP6wZRXg2vk1480FGm/59CvvRVpRA/hgg= 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Nishkalkashyap 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Repository 2 | 3 | [![Build Status](https://travis-ci.org/Nishkalkashyap/Quark-docs.svg?branch=master)](https://travis-ci.org/Nishkalkashyap/Quark-docs) 4 | [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/Nishkalkashyap/Quark-docs) 5 | 6 | 7 | This repo contains the website and documentation for the [Quark](https://quarkjs.io) product. 8 | 9 | ## Quark 10 | 11 | ![Hello World](./images/hello-world.gif) 12 | 13 | Quark is a general purpose software tool specifically designed to help you create projects written in HTML, CSS and JavaScript with native desktop app like capabilities. 14 | 15 | ## Goals 16 | 17 | #### ⚡ Rapid prototyping and project development 18 | Projects build with Quark should be easy and quick to setup. 19 | 20 | #### 💻 Cross-platform 21 | Projects build with Quark should run on all platforms such as Windows, Linux and Mac, sharing the same code base. 22 | 23 | #### 🐱 Simplicity 24 | Quark is built with simplicity in mind, so that creating projects with Quark is enjoyable, easy to learn, and accessible to just about anyone with basic programming skills. 25 | 26 | ## Showcase 27 | 28 | #### System resource monitor 29 | Monitors system resources. View CPU loads, memory usage, process explorer. 30 | 31 | ![System Information](./images/system-monitor.gif) 32 | 33 | #### Digital control systems 34 | Digital control system made with Arduino UNO using pre-installed serialport library. 35 | 36 | ![Control System](./images/control-system.gif) 37 | 38 | 39 | #### Plot Charts 40 | Plot charts using plotly.js 41 | 42 | ![Plot Charts](./images/plot-charts.gif) 43 | 44 | #### Stock analyzing app 45 | Analyze historic/real-time stock data. 46 | 47 | ![Stock analyzing app](./images/stock-analyzing-app.gif) 48 | 49 | #### News App 50 | News app with multiple country and source filter. 51 | 52 | ![News App](./images/news-app.gif) 53 | 54 | #### Web Browser 55 | Web browser with multiple split view support. 56 | 57 | ![Web Browser](./images/web-browser.gif) 58 | 59 | 60 | ## Feedback 61 | 62 | * Ask a question on Stack Overflow 63 | * [File an issue](https://github.com/Nishkalkashyap/Quark-docs/issues) -------------------------------------------------------------------------------- /docs/.env.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.env.enc -------------------------------------------------------------------------------- /docs/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "diy-mechatronics" 4 | }, 5 | "targets": { 6 | "diy-mechatronics": { 7 | "hosting": { 8 | "docs": [ 9 | "quark-documentation" 10 | ] 11 | } 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | .env.test 60 | 61 | # parcel-bundler cache (https://parceljs.org/) 62 | .cache 63 | 64 | # next.js build output 65 | .next 66 | 67 | # nuxt.js build output 68 | .nuxt 69 | 70 | # vuepress build output 71 | .vuepress/dist 72 | 73 | # Serverless directories 74 | .serverless/ 75 | 76 | # FuseBox cache 77 | .fusebox/ 78 | 79 | # DynamoDB Local files 80 | .dynamodb/ 81 | 82 | videos/ 83 | videos/output 84 | # .vuepress/public/c-assets/ 85 | dist-previous/ 86 | tags/ 87 | snippets/README.md 88 | FAQ/README.md 89 | guide/README.md 90 | references/README.md 91 | structures/README.md 92 | all/README.md 93 | releases/README.md 94 | libraries/README.md 95 | examples/README.md 96 | 97 | .vuepress/public/g-images/ 98 | cloud-storage-key.json 99 | routes.json 100 | travis-secrets.tar -------------------------------------------------------------------------------- /docs/.vuepress/analytics.js: -------------------------------------------------------------------------------- 1 | module.exports = addAnalytics = (router, GA_ID) => { 2 | if (process.env.NODE_ENV === 'production' && GA_ID && typeof window !== 'undefined') { 3 | (function (i, s, o, g, r, a, m) { 4 | i['GoogleAnalyticsObject'] = r 5 | i[r] = i[r] || function () { 6 | (i[r].q = i[r].q || []).push(arguments) 7 | } 8 | i[r].l = 1 * new Date() 9 | a = s.createElement(o) 10 | m = s.getElementsByTagName(o)[0] 11 | a.async = 1 12 | a.src = g 13 | m.parentNode.insertBefore(a, m) 14 | })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga') 15 | 16 | ga('create', GA_ID, 'auto'); 17 | ga('set', 'anonymizeIp', true); 18 | 19 | let previous; 20 | router.afterEach(function (to) { 21 | if (previous != to.path) { 22 | previous = to.path; 23 | ga('send', 'pageview', to.path); 24 | } 25 | }); 26 | } 27 | } -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/api/api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/api/api.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/api/references.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/api/references.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/api/structures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/api/structures.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/command-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/command-palette.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/examples-activity-monitor.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/examples-activity-monitor.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/examples-activity-monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/examples-activity-monitor.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/examples-hash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/examples-hash.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/examples-price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/examples-price.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/getting-started/project-start-demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/getting-started/project-start-demo.jpg -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/getting-started/project-start-demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/getting-started/project-start-demo.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/getting-started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/getting-started.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/getting-started/enter-project-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/getting-started/enter-project-name.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/getting-started/open-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/getting-started/open-project.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/getting-started/start-new-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/getting-started/start-new-project.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/hello-world-intro.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/hello-world-intro.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/hello-world-intro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/hello-world-intro.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/intro/build-focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/intro/build-focus.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/intro/build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/intro/build.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/intro/new-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/intro/new-project.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/intro/run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/intro/run.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/intro/setup-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/intro/setup-editor.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/introduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/introduction.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/changed-settings-markers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/changed-settings-markers.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/explorer.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/extensible.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/extensible.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/extensible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/extensible.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/introduction.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/introduction.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/introduction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/introduction.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/multiple-terminals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/multiple-terminals.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/setting-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/setting-group.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/settings.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/settings.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/settings.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/terminal.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/terminal.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/terminal.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/themes.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/themes.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/themes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/themes.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/quark-ide/ui-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/quark-ide/ui-overview.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/setting-up-quark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/setting-up-quark.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/control-system-1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/control-system-1.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/control-system-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/control-system-1.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/control-system-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/control-system-2.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/control-system-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/control-system-2.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/news-app.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/news-app.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/news-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/news-app.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/scientific-charts.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/scientific-charts.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/scientific-charts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/scientific-charts.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/stock.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/stock.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/stock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/stock.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/system-monitor.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/system-monitor.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/system-monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/system-monitor.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/web-browser.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/web-browser.mp4 -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/guide/showcase/web-browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/guide/showcase/web-browser.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/hello-world-app/directory-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/hello-world-app/directory-structure.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/key-binding-component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/key-binding-component.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/configuration-ui.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/cross-platform.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/error-overlay.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/find-and-replace.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/integrated-terminal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/key-binding.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/monaco-editor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/multiple-themes.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/nodejs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/npm-support.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/smart-autoCompletion.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/typescript.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/under-the-hood.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/web-technologies.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/landing-page-svgs/webpack-build.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/create-vue-web-component-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/create-vue-web-component-example.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/installed-libs-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/installed-libs-list.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/npm-client-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/npm-client-search.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/npm-install-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/npm-install-status.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/react-functional-component-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/react-functional-component-view.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/serial-port-in-dom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/serial-port-in-dom.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/serial-port-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/serial-port-list.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/libraries/view-preinstalled-libs-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/libraries/view-preinstalled-libs-menu.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/quick-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/quick-open.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/release-channel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/buildAssets/release-channel.png -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/instagram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/linkedin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/mail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/buildAssets/signature/website.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/components/Breadcrumbs.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 31 | 32 | 34 | -------------------------------------------------------------------------------- /docs/.vuepress/components/CarbonAds.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /docs/.vuepress/components/DropDown.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 34 | 35 | 64 | -------------------------------------------------------------------------------- /docs/.vuepress/components/Header.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | 12 | 22 | -------------------------------------------------------------------------------- /docs/.vuepress/components/Landing2.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 52 | 53 | 120 | -------------------------------------------------------------------------------- /docs/.vuepress/components/Message.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 31 | 32 | 84 | -------------------------------------------------------------------------------- /docs/.vuepress/components/ReleaseNotes.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 35 | 36 | 56 | -------------------------------------------------------------------------------- /docs/.vuepress/components/SocialIcons.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 46 | 47 | 56 | -------------------------------------------------------------------------------- /docs/.vuepress/components/Tag.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 36 | 37 | 55 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/companyLogos.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 55 | 56 | 72 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/floaters.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 43 | 44 | 82 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/hero-download.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 26 | 27 | 83 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/hero-section.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 39 | 40 | 142 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/hero-top.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 23 | 24 | 80 | -------------------------------------------------------------------------------- /docs/.vuepress/components/landing-components/util.js: -------------------------------------------------------------------------------- 1 | export function isInViewport(el) { 2 | 3 | if (!el) { 4 | return true; 5 | } 6 | 7 | var rect = el.getBoundingClientRect(); 8 | 9 | return rect.bottom > 0 && 10 | rect.right > 0 && 11 | rect.left < (window.innerWidth || document.documentElement.clientWidth) /* or $(window).width() */ && 12 | rect.top < (window.innerHeight || document.documentElement.clientHeight) /* or $(window).height() */; 13 | } -------------------------------------------------------------------------------- /docs/.vuepress/components/mermaid.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /docs/.vuepress/components/signature.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 34 | 35 | 86 | -------------------------------------------------------------------------------- /docs/.vuepress/enhanceApp.js: -------------------------------------------------------------------------------- 1 | import json from './routes.json'; 2 | import addAnalytics from './analytics'; 3 | 4 | export default ({ 5 | Vue, // the version of Vue being used in the VuePress app 6 | // options, // the options for the root Vue instance 7 | router, // the router instance for the app 8 | // siteData // site metadata 9 | }) => { 10 | router.addRoutes(json); 11 | addAnalytics(router, 'UA-112064718-3'); 12 | } -------------------------------------------------------------------------------- /docs/.vuepress/fly-annoying.styl: -------------------------------------------------------------------------------- 1 | random(a,b) 2 | return math(math(0, 'random')*(b - a + 1) + a, 'floor') 3 | 4 | makeMeFly(duration=5s, delay=0s, negative=-50px, positive=50px) 5 | animation-duration: duration; 6 | animation-timing-function: ease-in-out; 7 | animation-delay: delay; 8 | animation-iteration-count: infinite; 9 | animation-direction: alternate; 10 | animation-fill-mode: none; 11 | animation-play-state: running; 12 | $rand = myMove + random(10,1000000); 13 | animation-name: $rand; 14 | @keyframes {$rand} 15 | 0% 16 | transform: translateY(negative); 17 | // transform: translateY(- + negative); 18 | -webkit-transform: translateY(negative); 19 | // -webkit-transform: translateY(- + negative); 20 | -moz-transform: translateY(negative); 21 | // -moz-transform: translateY(- + negative); 22 | -o-transform: translateY(negative); 23 | // -o-transform: translateY(- + negative); 24 | 100% 25 | transform: translateY(positive); 26 | -webkit-transform: translateY(positive); 27 | -moz-transform: translateY(positive); 28 | -o-transform: translateY(positive); 29 | 30 | makeMeRotate(duration=5s, delay=0s, deg1=0deg, deg2=359deg) 31 | $rand = myMove + random(10,1000000); 32 | animation-name: $rand; 33 | animation: duration linear delay infinite normal none running $rand; 34 | animation-timing-function: ease-in-out; 35 | 36 | @keyframes {$rand} 37 | from { 38 | transform: rotate(deg1); 39 | } 40 | to { 41 | transform: rotate(deg2); 42 | } 43 | 44 | 45 | @media only screen and (min-width:450px) 46 | .landing-page-background:before, 47 | .landing-page-background:after 48 | makeMeFly(12s, 0s, -90px, 90px) 49 | 50 | .landing-page-background video 51 | makeMeFly(10s, 3s) 52 | 53 | .landing-page-background .random-svgs-container 54 | makeMeFly(8s, 0s, -40px, 40px) 55 | 56 | .landing-page-background img.logo 57 | makeMeFly(6s, 0s, -20px) 58 | 59 | .landing-page-background.hero h1 60 | makeMeFly(6s, 0s, -20px, 15px) 61 | 62 | 63 | .landing-page-background .hero-features-component h1, 64 | .landing-page-background .hero-features-component .features-container, 65 | .landing-page-background.downloads-container h1, 66 | .landing-page-background.downloads-container h3, 67 | .landing-page-background .download-page-component .container 68 | makeMeFly(8s, 0s, -20px, 20px) 69 | 70 | 71 | @media only screen and (max-width:600px) and (min-width:450px) 72 | .landing-page-background video 73 | makeMeFly(10s, 3s, -20px, 30px) 74 | 75 | .landing-page-background img.logo 76 | makeMeFly(6s, 0s, 0px, 55px) 77 | 78 | .landing-page-background .random-svg.hexa 79 | makeMeRotate(12s, 0s, 0deg, 360deg) 80 | 81 | .landing-page-background .random-svg.triangle 82 | makeMeRotate(10s, 0s, 0deg, 360deg) -------------------------------------------------------------------------------- /docs/.vuepress/fly-mixin.styl: -------------------------------------------------------------------------------- 1 | random(a,b) 2 | return math(math(0, 'random')*(b - a + 1) + a, 'floor') 3 | 4 | makeMeFly(duration=5s, delay=0s, negative=-50px, positive=50px) 5 | animation-duration: duration; 6 | animation-timing-function: ease-in-out; 7 | animation-delay: delay; 8 | animation-iteration-count: infinite; 9 | animation-direction: alternate; 10 | animation-fill-mode: none; 11 | animation-play-state: running; 12 | $rand = myMove + random(10,1000000); 13 | animation-name: $rand; 14 | @keyframes {$rand} 15 | 0% 16 | transform: translateY(negative); 17 | // transform: translateY(- + negative); 18 | -webkit-transform: translateY(negative); 19 | // -webkit-transform: translateY(- + negative); 20 | -moz-transform: translateY(negative); 21 | // -moz-transform: translateY(- + negative); 22 | -o-transform: translateY(negative); 23 | // -o-transform: translateY(- + negative); 24 | 100% 25 | transform: translateY(positive); 26 | -webkit-transform: translateY(positive); 27 | -moz-transform: translateY(positive); 28 | -o-transform: translateY(positive); 29 | 30 | makeMeRotate(duration=5s, delay=0s, deg1=0deg, deg2=359deg) 31 | $rand = myMove + random(10,1000000); 32 | animation-name: $rand; 33 | animation: duration linear delay infinite normal none running $rand; 34 | animation-timing-function: ease-in-out; 35 | 36 | @keyframes {$rand} 37 | from { 38 | transform: rotate(deg1); 39 | } 40 | to { 41 | transform: rotate(deg2); 42 | } 43 | 44 | // @media only screen and (min-width:450px) 45 | // .landing-page-background:before, 46 | // .landing-page-background:after 47 | // makeMeFly(12s, 0s, -10px, 10px) 48 | 49 | // .landing-page-background .random-svgs-container 50 | // makeMeFly(8s, 0s, -10px, 10px) 51 | 52 | 53 | // @media only screen and (min-width:450px) and (max-width: 2000px) 54 | // .landing-page-background .random-svg.box.right 55 | // makeMeRotate(12s, 0s, 0deg, 360deg) 56 | 57 | // .landing-page-background .random-svg.hexa 58 | // makeMeRotate(12s, 0s, 0deg, 360deg) 59 | 60 | // .landing-page-background .random-svg.triangle 61 | // makeMeRotate(10s, 0s, 0deg, 360deg) -------------------------------------------------------------------------------- /docs/.vuepress/override.styl: -------------------------------------------------------------------------------- 1 | $accentColor = #055af9 2 | $borderColor = #edf2f6 3 | $codeBgColor = #000000 4 | $textLightColor = #777777 5 | 6 | // colors 7 | // $accentColor = #3eaf7c 8 | // $textColor = #2c3e50 9 | // $borderColor = #eaecef 10 | // $codeBgColor = #282c34 11 | // $arrowBgColor = #ccc 12 | 13 | // // layout 14 | // $navbarHeight = 3.6rem 15 | // $sidebarWidth = 20rem 16 | // $contentWidth = 740px 17 | 18 | // // responsive breakpoints 19 | // $MQNarrow = 959px 20 | // $MQMobile = 719px 21 | // $MQMobileNarrow = 419px 22 | 23 | 24 | // // code 25 | // $lineNumbersWrapperWidth = 3.5rem 26 | // $codeLang = js ts html md vue css sass scss less stylus go java c sh yaml py 27 | 28 | -------------------------------------------------------------------------------- /docs/.vuepress/public/assets/custom.css: -------------------------------------------------------------------------------- 1 | /* sidebar stuff */ 2 | 3 | @media only screen and (min-width: 600px) { 4 | .no-sidebar-metacard-container .content { 5 | max-width: calc(100% - 20px); 6 | padding: 32px 100px; 7 | } 8 | 9 | .sidebar-metacard-container .content { 10 | max-width: calc(100% - 100px); 11 | padding: 32px 30px; 12 | } 13 | } 14 | 15 | .download-page a svg { 16 | display: none !important; 17 | } 18 | 19 | .download-page table { 20 | display: table; 21 | } 22 | 23 | .download-page table td, 24 | th { 25 | text-align: center; 26 | } 27 | 28 | .download-page .release-notes { 29 | font-weight: 500; 30 | margin-top: 20px; 31 | background-color: var(--code-background); 32 | padding: 10px 15px 9px; 33 | border-radius: 4px; 34 | font-size: 14px; 35 | text-align: center; 36 | } 37 | 38 | .download-page .release-notes a { 39 | color: var(--text-color--darker) !important; 40 | font-weight: 900; 41 | font-size: 16px; 42 | font-family: var(--heading-font-family); 43 | } 44 | 45 | .build-status { 46 | display: flex; 47 | justify-content: space-around; 48 | margin: 20px 0px; 49 | } 50 | 51 | 52 | .no-sidebar-metacard-container .tags-container, 53 | .sidebar-metacard-container .tags-container { 54 | display: flex; 55 | justify-content: left; 56 | flex-wrap: wrap; 57 | } 58 | 59 | 60 | /* Prism language js */ 61 | div[class*="language-"]:before { 62 | color: var(--accent-color); 63 | font-family: var(--heading-font-family); 64 | } 65 | 66 | .sw-update-popup { 67 | border: none; 68 | border-radius: 0px; 69 | background-color: var(--text-color--dark); 70 | color: var(--accent-color); 71 | font-family: var(--heading-font-family); 72 | } 73 | 74 | .sw-update-popup button { 75 | border: none; 76 | background-color: var(--accent-color); 77 | font-family: var(--heading-font-family); 78 | font-size: 16px; 79 | margin-top: 15px !important; 80 | cursor: pointer; 81 | } -------------------------------------------------------------------------------- /docs/.vuepress/public/assets/eina-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/assets/eina-700.woff2 -------------------------------------------------------------------------------- /docs/.vuepress/public/assets/ionic-prism.css: -------------------------------------------------------------------------------- 1 | div[class*="language-"] { 2 | background-color: transparent !important; 3 | } 4 | 5 | 6 | code[class*="language-"], 7 | pre[class*="language-"] { 8 | color: #4d4d4c !important; 9 | background: none; 10 | white-space: pre; 11 | word-spacing: normal; 12 | word-break: normal; 13 | word-wrap: normal; 14 | line-height: 1.5; 15 | 16 | -moz-tab-size: 4; 17 | -o-tab-size: 4; 18 | tab-size: 4; 19 | 20 | -webkit-hyphens: none; 21 | -moz-hyphens: none; 22 | -ms-hyphens: none; 23 | hyphens: none; 24 | } 25 | 26 | pre[class*="language-"], 27 | :not(pre)>code[class*="language-"] { 28 | background: hsl(30, 20%, 25%); 29 | } 30 | 31 | /* Code blocks */ 32 | pre[class*="language-"] { 33 | padding: 1em; 34 | margin: .5em 0; 35 | overflow: auto; 36 | border-radius: .5em; 37 | } 38 | 39 | /* Inline code */ 40 | :not(pre)>code[class*="language-"] { 41 | padding: .15em .2em .05em; 42 | border-radius: .3em; 43 | white-space: normal; 44 | } 45 | 46 | /* Tomorrow Comment */ 47 | .token.comment, 48 | .token.prolog, 49 | .token.doctype, 50 | .token.cdata { 51 | color: #8c9296; 52 | } 53 | 54 | .token.punctuation { 55 | opacity: .7; 56 | color: inherit !important; 57 | } 58 | 59 | .namespace { 60 | opacity: .7; 61 | } 62 | 63 | .token.tag { 64 | color: #91c5ff !important; 65 | } 66 | 67 | .token.tag .token.tag { 68 | color: #2b90ff !important; 69 | } 70 | 71 | .token.property, 72 | .token.attr-name, 73 | .token.boolean, 74 | .token.number, 75 | .token.constant, 76 | .token.symbol { 77 | color: #8454ff !important; 78 | } 79 | 80 | .token.selector, 81 | .token.char, 82 | .token.function, 83 | .token.builtin{ 84 | color: #ff6810 !important; 85 | } 86 | 87 | .token.inserted { 88 | color: #10dc60 !important; 89 | } 90 | 91 | .token.operator, 92 | .token.string, 93 | .token.entity, 94 | .token.url, 95 | .token.attr-value, 96 | .language-css .token.string, 97 | .style .token.string, 98 | .token.variable { 99 | color: #42b983 !important; 100 | } 101 | 102 | .token.atrule { 103 | color: #ffbb01 !important; 104 | } 105 | 106 | .token.regex, 107 | .token.keyword, 108 | .token.important { 109 | color: #f55073 !important; 110 | } 111 | 112 | .token.important, 113 | .token.bold { 114 | font-weight: bold; 115 | } 116 | 117 | .token.italic { 118 | font-style: italic; 119 | } 120 | 121 | .token.entity { 122 | cursor: help; 123 | } 124 | 125 | .token.deleted { 126 | color: red !important; 127 | } 128 | 129 | docs-code[language="shell"]>pre { 130 | background-color: var(--text-color--dark); 131 | border-radius: 7px; 132 | } 133 | 134 | docs-code[language="shell"]:before { 135 | display: none; 136 | } 137 | 138 | docs-code[language="shell"] code { 139 | color: rgba(255, 255, 255, 0.7); 140 | font-size: 13px; 141 | } 142 | 143 | docs-code[language="shell"] .token { 144 | color: inherit; 145 | } 146 | 147 | docs-code[language="shell"] .token.prompt { 148 | color: #fb96f9 !important; 149 | -webkit-user-select: none; 150 | -moz-user-select: none; 151 | -ms-user-select: none; 152 | user-select: none; 153 | } 154 | 155 | docs-code[language="shell"] .token.comment { 156 | color: rgba(255, 255, 255, 0.45) !important; 157 | } 158 | 159 | 160 | docs-code { 161 | display: block; 162 | position: relative; 163 | } 164 | 165 | docs-code:before { 166 | color: #bdc5d1; 167 | content: attr(language); 168 | font-family: var(--code-font-family); 169 | font-size: 10px; 170 | letter-spacing: 0.05em; 171 | line-height: 1; 172 | padding: 0.75em; 173 | position: absolute; 174 | right: 0; 175 | text-transform: uppercase; 176 | top: 0; 177 | } -------------------------------------------------------------------------------- /docs/.vuepress/public/assets/material-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/assets/material-icons.woff2 -------------------------------------------------------------------------------- /docs/.vuepress/public/images/apple-logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/public/images/arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/public/images/download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.vuepress/public/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/images/icon.png -------------------------------------------------------------------------------- /docs/.vuepress/public/images/linux-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/images/linux-logo.png -------------------------------------------------------------------------------- /docs/.vuepress/public/images/old-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/images/old-icon.png -------------------------------------------------------------------------------- /docs/.vuepress/public/images/windows-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/images/windows-logo.png -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/css.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/javascript.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/nodejs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/npm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | n 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/react_ts.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/stylus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/typescript.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/.vuepress/public/logos/webpack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-128x128.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-144x144.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-152x152.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-192x192.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-384x384.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-512x512.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-72x72.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/images/icons/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/pwa/images/icons/icon-96x96.png -------------------------------------------------------------------------------- /docs/.vuepress/public/pwa/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Quark", 3 | "short_name": "Quark", 4 | "theme_color": "#055af9", 5 | "background_color": "#ffffff", 6 | "display": "standalone", 7 | "Scope": "/", 8 | "start_url": "/", 9 | "icons": [ 10 | { 11 | "src": "/pwa/images/icons/icon-72x72.png", 12 | "sizes": "72x72", 13 | "type": "image/png" 14 | }, 15 | { 16 | "src": "/pwa/images/icons/icon-96x96.png", 17 | "sizes": "96x96", 18 | "type": "image/png" 19 | }, 20 | { 21 | "src": "/pwa/images/icons/icon-128x128.png", 22 | "sizes": "128x128", 23 | "type": "image/png" 24 | }, 25 | { 26 | "src": "/pwa/images/icons/icon-144x144.png", 27 | "sizes": "144x144", 28 | "type": "image/png" 29 | }, 30 | { 31 | "src": "/pwa/images/icons/icon-152x152.png", 32 | "sizes": "152x152", 33 | "type": "image/png" 34 | }, 35 | { 36 | "src": "/pwa/images/icons/icon-192x192.png", 37 | "sizes": "192x192", 38 | "type": "image/png" 39 | }, 40 | { 41 | "src": "/pwa/images/icons/icon-384x384.png", 42 | "sizes": "384x384", 43 | "type": "image/png" 44 | }, 45 | { 46 | "src": "/pwa/images/icons/icon-512x512.png", 47 | "sizes": "512x512", 48 | "type": "image/png" 49 | } 50 | ], 51 | "splash_pages": null 52 | } -------------------------------------------------------------------------------- /docs/.vuepress/public/references/commands/registered-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/.vuepress/public/references/commands/registered-command.png -------------------------------------------------------------------------------- /docs/.vuepress/scoped-containers.scss: -------------------------------------------------------------------------------- 1 | .home4-component { 2 | overflow: hidden; 3 | align-items: center; 4 | display: flex; 5 | flex-direction: column; 6 | position: relative; 7 | } 8 | 9 | .hero-section-component { 10 | position: relative; 11 | height: 100vh; 12 | display: flex; 13 | align-items: center; 14 | } 15 | 16 | .hero-features-component { 17 | position: relative; 18 | display: flex; 19 | align-items: center; 20 | justify-content: center; 21 | width: 100%; 22 | } 23 | 24 | .message-component { 25 | position: relative; 26 | } 27 | #app > div > div.page > div:nth-child(1){ 28 | position: relative; 29 | } -------------------------------------------------------------------------------- /docs/.vuepress/sidebar.styl: -------------------------------------------------------------------------------- 1 | .sidebar 2 | ul 3 | padding 0 4 | margin 0 5 | list-style-type none 6 | a 7 | display inline-block 8 | .nav-links 9 | display none 10 | border-bottom 1px solid $borderColor 11 | padding 0.5rem 0 0.75rem 0 12 | a 13 | font-weight 600 14 | .nav-item, .repo-link 15 | display block 16 | line-height 1.25rem 17 | font-size 1.1em 18 | padding 0.5rem 0 0.5rem 1.5rem 19 | & > .sidebar-links 20 | padding 1.5rem 0 21 | & > li > a.sidebar-link 22 | font-size 1.1em 23 | line-height 1.7 24 | font-weight bold 25 | & > li:not(:first-child) 26 | margin-top .75rem 27 | @media (max-width: 800px) 28 | .sidebar 29 | .nav-links 30 | display block 31 | .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active::after 32 | top calc(1rem - 2px) 33 | & > .sidebar-links 34 | padding 1rem 0 -------------------------------------------------------------------------------- /docs/.vuepress/style.styl: -------------------------------------------------------------------------------- 1 | @import "~@public/assets/ionic-prism.css" 2 | @import "~@public/assets/ionic.css" 3 | @import "~@public/assets/custom.css" 4 | 5 | @import '~@vuepress/override.styl' 6 | 7 | @import "~@vuepress/fly-mixin.styl" 8 | @import "~@vuepress/admonition.styl" 9 | @import "~@vuepress/body-styles.styl" 10 | @import "~@vuepress/sidebar.styl" 11 | 12 | @import "~@vuepress/landing.scss" 13 | @import "~@vuepress/scoped-containers.scss" 14 | 15 | @font-face { 16 | src: url("~@public/assets/eina-700.woff2") format("woff2"); 17 | font-family: "Eina"; 18 | font-style: normal; 19 | font-weight: 700; 20 | font-display: swap; 21 | } 22 | 23 | @font-face { 24 | src: url("~@public/assets/material-icons.woff2") format('woff2'); 25 | font-family: 'Material Icons'; 26 | font-style: normal; 27 | font-weight: 400; 28 | font-display: swap; 29 | } 30 | 31 | .material-icons { 32 | font-family: 'Material Icons'; 33 | font-weight: normal; 34 | font-style: normal; 35 | font-size: 24px; 36 | line-height: 1; 37 | letter-spacing: normal; 38 | text-transform: none; 39 | display: inline-block; 40 | white-space: nowrap; 41 | word-wrap: normal; 42 | direction: ltr; 43 | -webkit-font-feature-settings: 'liga'; 44 | -webkit-font-smoothing: antialiased; 45 | } 46 | 47 | 48 | -------------------------------------------------------------------------------- /docs/.vuepress/theme/Disqus.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 42 | 43 | 56 | -------------------------------------------------------------------------------- /docs/.vuepress/theme/Layout.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | -------------------------------------------------------------------------------- /docs/.vuepress/theme/PageBottom.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 18 | 19 | 48 | -------------------------------------------------------------------------------- /docs/FAQ/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : About 3 | description : About this project. 4 | author : nishkal 5 | tags : ['faq'] 6 | pageClass : about-page 7 | --- 8 | 9 | # About 10 | 11 | 12 | Hi, I'm your host 🎙️ Nishkal Kashyap and I'm the author of this project. 13 | 14 | The idea of this project started when I was pursuing my degree in Mechanical Engineering and felt a need for a software tool that would help me do things like - plot charts, IoT development, create dashboards/GUI's for my personal projects etc. To much of my own surprise, I could not find an easy way to do so. Hence, I decided to create this project. 15 | 16 | My mission is simple, that is to increases developer happiness and productivity 🚀 by providing them with the necessary tools 🔨 to do so. 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | # home: false 3 | # heroImage: /images/icon-svg.svg 4 | # heroText: Lightning fast app creation. 5 | # tagline: Ionic Studio is a powerful app builder that delivers a smooth developer experience for teams building with Ionic. Get started with the fastest and easiest way to create award-winning cross-platform apps, from a single tool. 6 | # actionText: Get Started → 7 | # actionLink: /guide/intro.html 8 | # footer: MIT Licensed | Copyright © 2019-present Nishkal Kashyap 9 | pageClass: landing-page 10 | layout: Landing 11 | --- -------------------------------------------------------------------------------- /docs/azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Node.js 2 | # Build a general Node.js project with npm. 3 | # Add steps that analyze code, save build artifacts, deploy, and more: 4 | # https://docs.microsoft.com/azure/devops/pipelines/languages/javascript 5 | 6 | trigger: 7 | - master 8 | 9 | pool: 10 | vmImage: 'ubuntu-latest' 11 | 12 | steps: 13 | - task: NodeTool@0 14 | inputs: 15 | versionSpec: '10.x' 16 | displayName: 'Install Node.js' 17 | 18 | - script: | 19 | npm install 20 | displayName: 'npm install and build' 21 | -------------------------------------------------------------------------------- /docs/cloud-storage-key.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/cloud-storage-key.json.enc -------------------------------------------------------------------------------- /docs/cloudbuild.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | # Decrypt 3 | - name: gcr.io/cloud-builders/gcloud 4 | args: 5 | - kms 6 | - decrypt 7 | - --ciphertext-file=.env.enc 8 | - --plaintext-file=.env 9 | - --location=global 10 | - --keyring=cloud-build 11 | - --key=cloud_build_docs-env 12 | 13 | # install 14 | - name: 'gcr.io/cloud-builders/npm' 15 | args : ['install'] 16 | 17 | # build 18 | - name: 'gcr.io/cloud-builders/npm' 19 | args : ['run','cloud-build'] 20 | 21 | # post-build 22 | - name: 'gcr.io/cloud-builders/npm' 23 | args : ['run','post-build'] 24 | 25 | # worker 26 | # - name: 'gcr.io/cloud-builders/npm' 27 | # args : ['run','worker'] 28 | 29 | # deploy 30 | - name: 'gcr.io/cloud-builders/npm' 31 | args : ['run','deploy-ci'] 32 | 33 | # build-notofication 34 | - name: 'gcr.io/cloud-builders/npm' 35 | args : ['run','ssn'] -------------------------------------------------------------------------------- /docs/devtime.md: -------------------------------------------------------------------------------- 1 | # Devtime References 2 | 3 | ::: tip 4 | This is a tip 5 | ::: 6 | 7 | ::: warning 8 | This is a warning 9 | ::: 10 | 11 | ::: danger 12 | This is a dangerous warning 13 | ::: 14 | 15 | ### Badge 16 | [Link](https://v0.vuepress.vuejs.org/guide/using-vue.html#badge) 17 | text : string 18 | type : 'tip' | 'warn' | 'error' 19 | vertical : "top"|"middle" default 'top' 20 | 21 | 22 | 23 | admonitions 24 | 25 | 28 | 29 | types = note abstract info tip success warning failure danger bug example quote 30 | 31 | 32 | note 33 | success 34 | warning 35 | danger 36 | 37 | !!! note Testing Notes 38 | Good Note 39 | !!! 40 | !!! abstract Testing Notes 41 | Good Note 42 | !!! 43 | !!! info Testing Notes 44 | Good Note 45 | !!! 46 | !!! tip Testing Notes 47 | Good Note 48 | !!! 49 | !!! success Testing Notes 50 | Good Note 51 | !!! 52 | !!! warning Testing Notes 53 | Good Note 54 | !!! 55 | !!! failure Testing Notes 56 | Good Note 57 | !!! 58 | !!! danger Testing Notes 59 | Good Note 60 | !!! 61 | !!! bug Testing Notes 62 | Good Note 63 | !!! 64 | !!! example Testing Notes 65 | Good Note 66 | !!! 67 | !!! quote Testing Notes 68 | Good Note 69 | !!! 70 | 71 | 72 | 73 | 74 | 75 |
76 | 77 | Like this? 78 | 79 | Useful Source 80 | 81 |

It's because the details block is html5. If you want to modify it your best bet is using html5.

82 |
83 | -------------------------------------------------------------------------------- /docs/download/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | pageClass: download-page 3 | --- 4 | 5 | # All Downloads 6 | | 🆕 Release type | ⚡ Latest Version | 📅 Release Date | 7 | | ------------------- | -------------------- | --------------- | 8 | | stable | 0.6.2 | September 29 2019, 11:51:37 AM | 9 | 12 | 13 |
View Release Notes
14 | 15 | !!! note See SHA-512 Hashes 16 | 17 | 18 | 19 | !!! 20 | 21 | -------------------------------------------------------------------------------- /docs/download/insiders.md: -------------------------------------------------------------------------------- 1 | --- 2 | pageClass: download-page 3 | --- 4 | 5 | # All Downloads 6 | | 🆕 Release type | ⚡ Latest Version | 📅 Release Date | 7 | | ------------------- | -------------------- | --------------- | 8 | | insiders | 0.6.4 | April 26 2020, 12:45:12 PM | 9 | 12 | 13 |
View Release Notes
14 | 15 | !!! note See SHA-512 Hashes 16 | 17 | 18 | 19 | !!! 20 | 21 | -------------------------------------------------------------------------------- /docs/examples/arduino-dashboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Create a dashboard and a data logger for Arduino using the serialport library.' 3 | author : nishkal 4 | tags : ['javascript', 'arduino'] 5 | sidebarDepth: 2 6 | --- 7 | 8 | # Arduino dashboard and data logger 9 | 10 |
11 | 12 | [[toc]] 13 | 14 | ##### The project that we are finally going to build, will look something like this: 15 | 16 | 20 | 21 | !!! note Note 22 | The complete project could be found [here](https://github.com/Nishkalkashyap/Quark-samples/tree/master/examples/arduino-dashboard) on the github repo. 23 | !!! 24 | 25 | ## Features 26 | __Serialport selector:__ A graphical user interface component that allows you to select the serialport for your Arduino. 27 | 28 | ![screenshot](https://i.imgur.com/fPOeavH.png =500x) 29 | 30 | __Dashboard:__ A dashboard that prints the real time values on the screen and also draws charts. 31 | 32 | ![screenshot](https://i.imgur.com/GuQHONO.png =500x) 33 | 34 | __Datalogger:__ A data logger that will read data from arduino and save it on your computer in csv format. 35 | 36 | ![screenshot](https://i.imgur.com/a7a4CmV.png =500x) 37 | 38 | ## Getting started 39 | * Clone [this repository](https://github.com/Nishkalkashyap/Quark-samples/tree/master/examples/arduino-dashboard) 40 | * cd `examples/arduino-dashboard` 41 | * Upload the `arduino.ino` file to the arduino. 42 | * Open project file `arduino-dashboard.qrk` to edit project, or build file `arduino-dashboard.build.qrk` to run the project in Quark. 43 | 44 | ## Running the project 45 | * Open the build file `arduino-dashboard.build.qrk` in Quark. 46 | * Press `ctrl+p` and select the COM port of your arduino from the serial port selector. 47 | * To start the data logger, open the [commands palette](/guide/quark-ide.html#command-palette) by pressing `ctrl+shift+p`, and select `Datalogger: Start` command. You will see a notification on the bottom right of your screen if the logger was started. 48 | * To stop the data logger, open the commands palette and select command `Datalogger: Stop`. This will open a save dialog where you can enter the path of the file where you want to save your data. 49 | -------------------------------------------------------------------------------- /docs/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": [{ 3 | "public": "./.vuepress/dist", 4 | "target": "docs", 5 | "ignore": [ 6 | "firebase.json", 7 | "**/.*", 8 | "**/node_modules/**" 9 | ], 10 | "rewrites": [{ 11 | "source": "/GetDashboardStats{,/**}", 12 | "function": "GetDashboardStats" 13 | }, 14 | { 15 | "source": "/downloadCount{,/**}", 16 | "function": "downloadCount" 17 | } 18 | ], 19 | "cleanUrls": false, 20 | "trailingSlash": false, 21 | "headers": [{ 22 | "source": "**/*.@(jpg|jpeg|gif|png|mp4)", 23 | "headers": [{ 24 | "key": "Cache-Control", 25 | "value": "max-age=2592000" 26 | }] 27 | }, 28 | { 29 | "source": "**/!(*worker).js", 30 | "headers": [{ 31 | "key": "Cache-Control", 32 | "value": "max-age=2592000" 33 | }] 34 | }, 35 | { 36 | "source": "**/*.@(woff|woff2|css)", 37 | "headers": [{ 38 | "key": "Cache-Control", 39 | "value": "max-age=2592000" 40 | }] 41 | } 42 | ] 43 | }] 44 | } -------------------------------------------------------------------------------- /docs/guide/showcase.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Following are some sample projects made with Quark.' 3 | author : nishkal 4 | tags : ['guide'] 5 | cover : ~@buildAssets/guide/showcase.png 6 | --- 7 | 8 | # Showcase 9 | 10 |
11 | 12 | [[toc]] 13 | 14 | ## System resource monitor 15 | * Monitors system resources. View CPU loads, memory usage, process explorer. 16 | 17 | 21 | 22 | ## Digital control systems 23 | * Digital control system made with Arduino UNO using pre-installed serialport library. 24 | 25 | 29 | 30 | 34 | 35 | ## Plot Charts 36 | * Plot charts using [plotly.js](https://plot.ly/javascript/) 37 | 38 | 42 | 43 | ## Stock analyzing app 44 | * Analyze historic/real-time stock data. 45 | 46 | 50 | 51 | ## News App 52 | * News app with multiple country and source filter. 53 | 54 | 58 | 59 | ## Web Browser 60 | * Web browser with multiple tabs, split view support. __(Written under 200 lines of code!!)__ 61 | 62 | 66 | 67 | !!! note Note 68 | Find these projects on [Github](https://github.com/Nishkalkashyap/quark-projects) 69 | !!! -------------------------------------------------------------------------------- /docs/libraries/electron-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS. This guide describes how you can use electron in your projects.' 3 | author : nishkal 4 | tags : [] 5 | --- 6 | 7 | # Electron 8 | 9 |
10 | 11 | #### Using the electron's renderer process api. 12 | In your sketches you have access to all of the electron's renderer process API's. Let's see how we can use the [`notifications`](https://electronjs.org/docs/tutorial/notifications) api in your sketches. 13 | ```js 14 | // setup.js 15 | import { remote } from 'electron'; 16 | import * as path from 'path'; 17 | 18 | // notificationWithImage 19 | const notificationWithImage = new remote.Notification({ 20 | title: 'Notification with image', 21 | body: 'Short message plus a custom image', 22 | icon: path.join(remote.app.getAppPath(), '/appAssets/32x32.png') 23 | }); 24 | 25 | notificationWithImage.addListener('click', (e, i) => { 26 | console.log('Notification clicked'); 27 | }); 28 | notificationWithImage.show(); 29 | 30 | 31 | 32 | // notificationWithoutImage 33 | const notificationWithoutImage = new remote.Notification({ 34 | title: 'Basic notification', 35 | body: 'Short message' 36 | }); 37 | 38 | notificationWithoutImage.addListener('click', (e, i) => { 39 | console.log('Notification clicked'); 40 | }); 41 | notificationWithoutImage.show(); 42 | ``` -------------------------------------------------------------------------------- /docs/libraries/intro.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'This section will cover how to use pre-installed libraries and how to install new libraries.' 3 | author : nishkal 4 | tags : [] 5 | --- 6 | 7 | # Introduction 8 | 9 |
10 | 11 | [[toc]] 12 | 13 | ## Using existing libraries 14 | Quark comes pre-installed with a few libraries. You can check which libraries are pre-installed by going to 15 | `Help > View Installed Libraries` from the main menu. 16 | 17 | ![Pre installed libraries](~@buildAssets/libraries/view-preinstalled-libs-menu.png =400x) 18 | 19 | __This will open a dialog listing all the pre-installed libraries.__ 20 | 21 | ![Pre installed libraries](~@buildAssets/libraries/installed-libs-list.png =400x) 22 | 23 | Some of these libraries are used internally by the software, some of these libraries are proxied and exposed as an API, and some are used by the build system. Nonetheless all of them can be used from your project. Find out specific tutorials of using some of those libraries [here.](/libraries/) 24 | 25 | ## Installing new libraries 26 | Once you are comfortable with the Quark software and using the built-in functions/features, you may want to extend the ability of your project with additional libraries. 27 | 28 | ##### Using the built-in npm client 29 | To install a new library in your project you can use the built-in npm client. Click on the `npm` logo in the sideview to open the client, and search for the library you want to use. 30 | 31 | ![Pre installed libraries](~@buildAssets/libraries/npm-client-search.png =400x) 32 | 33 | You can install the library by pressing on the `install` button, or first view the library repository by pressing on the `Repository` button. 34 | 35 | After hitting the install button, you will be presented with an install status snackbar. If installing the library fails, you can check the logs from the `Devtools` section in the `output-channel`. 36 | 37 | ![Pre installed libraries](~@buildAssets/libraries/npm-install-status.png) 38 | 39 | ##### Using systems package manager 40 | If you happen to have a package manager installed on your machine (e.g. `npm` or `yarn`) you can use that too. 41 | 42 | ```bash 43 | # e.g. npm 44 | npm install express 45 | 46 | # e.g. yarn 47 | yarn add express 48 | ``` 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /docs/libraries/react-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'React is a javascript library for building user interfaces. Examples below describe how you can use React to create views in your project.' 3 | author : nishkal 4 | tags : [] 5 | --- 6 | 7 | # React 8 | 9 |
10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | #### Creating and using a react functional component. 22 | ```jsx 23 | // setup.js 24 | import { render } from 'react-dom'; 25 | 26 | function App() { 27 | const greeting = 'Hello Functional Component!'; 28 | return

{greeting}

; 29 | } 30 | 31 | const view = quark.views.createTabsView('React view'); 32 | view.onDidConnectElement = () => { 33 | view.element.style.backgroundColor = '#f0f0f0'; 34 | view.element.style.height = '100%'; 35 | render(, view.element); 36 | }; 37 | 38 | view.focus(); 39 | ``` 40 | ##### Result 41 | ![](~@buildAssets/libraries/react-functional-component-view.png =350x) 42 | 43 | #### Render a react component inside another component 44 | ```jsx 45 | // setup.js 46 | import { render } from 'react-dom'; 47 | 48 | function App() { 49 | return ; 50 | } 51 | 52 | function Headline() { 53 | const greeting = 'Hello Functional Component!'; 54 | return

{greeting}

; 55 | } 56 | 57 | const view = quark.views.createTabsView('React view'); 58 | view.onDidConnectElement = () => { 59 | view.element.style.backgroundColor = '#f0f0f0'; 60 | view.element.style.height = '100%'; 61 | render(, view.element); 62 | }; 63 | 64 | view.focus(); 65 | ``` 66 | 67 | #### Using import/export statements 68 | ```jsx 69 | // headline.js 70 | function Headline() { 71 | const greeting = 'Hello Functional Component!'; 72 | return

{greeting}

; 73 | } 74 | 75 | export default Headline; 76 | ``` 77 | ```jsx 78 | // setup.js 79 | import { render } from 'react-dom'; 80 | import Headline from './headline'; 81 | 82 | function App() { 83 | return ; 84 | } 85 | 86 | const view = quark.views.createTabsView('React view'); 87 | view.onDidConnectElement = () => { 88 | view.element.style.backgroundColor = '#f0f0f0'; 89 | view.element.style.height = '100%'; 90 | render(, view.element); 91 | }; 92 | 93 | view.focus(); 94 | ``` 95 | 96 | #### Creating react class components 97 | ```jsx 98 | import { render } from 'react-dom'; 99 | import Headline from './import-export/headline'; 100 | import React from 'react'; 101 | 102 | class App extends React.Component { 103 | render() { 104 | return ( 105 |

{this.props.greeting}

106 | ); 107 | } 108 | } 109 | 110 | const view = quark.views.createTabsView('React view'); 111 | view.onDidConnectElement = () => { 112 | view.element.style.backgroundColor = '#f0f0f0'; 113 | view.element.style.height = '100%'; 114 | render(, view.element); 115 | }; 116 | 117 | view.focus(); 118 | ``` 119 | 120 | -------------------------------------------------------------------------------- /docs/libraries/serialport.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Access serial ports with JavaScript. Examples below describe how you can use node-serialport library in your projects.' 3 | author : nishkal 4 | tags : [] 5 | --- 6 | 7 | # Serialport 8 | 9 |
10 | 11 | #### Listing all available serialports 12 | ```js 13 | import * as serial from 'serialport'; 14 | 15 | serial.list().then((list) => { 16 | list.map((port)=>{ 17 | console.log(`COM name: ${port.comName}, Manufacturer : ${port.manufacturer}`) 18 | }); 19 | }).catch(console.error); 20 | ``` 21 | 22 | ##### Result 23 | ![](~@buildAssets/libraries/serial-port-list.png =350x) 24 | 25 | #### Listing all available ports in DOM 26 | ```js 27 | import * as serial from 'serialport'; 28 | 29 | serial.list().then((list) => { 30 | list.map((port) => { 31 | console.log(`COM name: ${port.comName}, Manufacturer : ${port.manufacturer}`) 32 | }); 33 | }).catch(console.error); 34 | 35 | const view = quark.views.createTabsView('Serial ports'); 36 | view.onDidConnectElement = async () => { 37 | try { 38 | const list = await serial.list(); 39 | let html = '

Available Ports

'; 40 | list.map((port) => { 41 | html = html.concat(`

${port.comName}

`); 42 | }); 43 | view.element.style.padding = '20px'; 44 | view.element.innerHTML = html; 45 | } catch (err) { 46 | console.err(err); 47 | } 48 | } 49 | view.focus(); 50 | ``` 51 | 52 | ##### Result 53 | ![](~@buildAssets/libraries/serial-port-in-dom.png =350x) 54 | -------------------------------------------------------------------------------- /docs/libraries/vue-js.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Vue is a progressive framework for building user interfaces. Examples below describe how you can use Vue.js to create views in your project.' 3 | author : nishkal 4 | tags : [] 5 | --- 6 | 7 | # Vue 8 | 9 |
10 | 11 | 14 | 56 | 57 | #### Using the esm build 58 | ```js 59 | // setup.js 60 | import Vue from 'vue/dist/vue.esm'; 61 | 62 | const view = quark.views.createTabsView('My Vue'); 63 | view.onDidConnectElement = () => { 64 | const app = new Vue({ 65 | el: view.element, 66 | data() { 67 | return { 68 | greetings: 'Hello Vue.js' 69 | } 70 | }, 71 | template: `

{{greetings}}

` 72 | }); 73 | } 74 | view.focus(); 75 | ``` 76 | 77 | ##### Result 78 | ![](~@buildAssets/libraries/create-vue-web-component-example.png =350x) 79 | 80 | #### Using multiple components 81 | ```js 82 | // setup.js 83 | import Vue from 'vue/dist/vue.esm'; 84 | 85 | const myComponent = Vue.component('my-component', { 86 | template : '

Hello parent component

' 87 | }); 88 | 89 | const view = quark.views.createTabsView('My Vue'); 90 | view.onDidConnectElement = () => { 91 | const app = new Vue({ 92 | el: view.element, 93 | components : { 94 | myComponent 95 | }, 96 | template: `` 97 | }); 98 | } 99 | view.focus(); 100 | ``` 101 | 102 | #### Importing external html template. 103 | ```html 104 | 105 |

{{greetings}}

106 | ``` 107 | 108 | ```js 109 | // setup.js 110 | import Vue from 'vue/dist/vue.esm'; 111 | import htmlTemplate from './template.html'; 112 | 113 | const view = quark.views.createTabsView('My Vue'); 114 | view.onDidConnectElement = () => { 115 | const app = new Vue({ 116 | el: view.element, 117 | data() { 118 | return { 119 | greetings: 'Hello Vue.js' 120 | } 121 | }, 122 | template: htmlTemplate 123 | }); 124 | } 125 | view.focus(); 126 | ``` -------------------------------------------------------------------------------- /docs/references/app.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Provides methods to perform lower level operations. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # app 9 |
10 | [[toc]] 11 | 12 | ### app.showItemInFolder([fullPath]) 13 | Show the given file in a file manager. If possible, select the file. If no path is provided, opens the current process path. 14 | * returns `void` 15 | 16 | ### app.beep() 17 | Play the beep sound. 18 | * returns `void` 19 | 20 | ### app.getAppMetrics() 21 | Gets the [`ProcessMetric`](/)` object; 22 | * returns [`ProcessMetric`](/) 23 | 24 | ### app.getAppPath() 25 | Gets the installation path of the app. 26 | * returns `string` 27 | 28 | ### app.getVersion() 29 | Gets the current version of app. 30 | * returns `string` 31 | 32 | ### app.showMessageBox(title, message, buttons[, type]) 33 | Shows a message box. Returns a promise that resolves to the text of the selected button. 34 | * arguments 35 | * title `string` 36 | * message `string` 37 | * buttons `Array` 38 | * type `("none" | "info" | "error" | "question" | "warning")` (optional) 39 | * returns `Promise` 40 | * Usage 41 | 42 | ```js 43 | quark.app.showMessageBox('Select your hero', 'Superman or Batman?', ['Superman', 'Batman'], 'question') 44 | .then((hero)=>{ 45 | if(hero == 'Superman'){ 46 | console.log('Meh!'); 47 | }else { 48 | console.log('Yuss!'); 49 | } 50 | }).catch((err)=>{ 51 | console.log(err); 52 | }); 53 | ``` 54 | 55 | ### app.showErrorBox(title, content) 56 | Shows an error box. 57 | * arguments 58 | * title `string` 59 | * content `string` 60 | * returns `void` 61 | * Usage 62 | 63 | ```js 64 | quark.app.showErrorBox('Connection Failed!','Failed to connect to board at COM port 5'); 65 | ``` 66 | 67 | ### app.showOpenDialog([options]) 68 | Shows a file/folder open dialog. 69 | * arguments 70 | * options [`OpenDialogOptions`](/)(optional) 71 | * returns `Promise<{ filePaths: Array, bookmarks: Array }?` 72 | * Usage 73 | 74 | ```js 75 | quark.app.showOpenDialog({ 76 | title : 'Open Logs', 77 | defaultPath : 'C://User/Desktop', 78 | properties : ['openFile', 'multiSelections'] 79 | }).then((result)=>{ 80 | const filePaths = result.filePaths; 81 | const bookmarks = result.bookmarks; 82 | console.log(filePaths, bookmarks); 83 | }).catch((err)=>{ 84 | console.log(err); 85 | }); 86 | ``` 87 | 88 | ### app.showSaveDialog([options]) 89 | Shows a save dialog. 90 | * arguments 91 | * options [`SaveDialogOptions`](/) 92 | * returns `Promise<{ filename: string, bookmark: string }>` 93 | * Usage 94 | 95 | ```js 96 | quark.app.showSaveDialog({ 97 | title : 'Open Logs', 98 | defaultPath : 'C://User/Desktop' 99 | }).then((result)=>{ 100 | const filename = result.fileName; 101 | const bookmark = result.bookmark; 102 | console.log(fileName, bookmark); 103 | }).catch((err)=>{ 104 | console.log('user dismissed the dialog'); 105 | }); 106 | ``` -------------------------------------------------------------------------------- /docs/references/clipboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Perform copy and paste operations on the system clipboard. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # clipboard 9 |
10 | [[toc]] 11 | 12 | 13 | ### clipboard.readText() 14 | Returns the text saved in clipboard. 15 | * returns `string` 16 | 17 | ### clipboard.writeText(text) 18 | Writes text to clipboard. 19 | * arguments 20 | * text `string` 21 | * returns `void` 22 | 23 | ### clipboard.readHTML() 24 | Returns the markup saved in clipboard. 25 | * returns `string` 26 | 27 | ### clipboard.writeHTML(text) 28 | Writes markup to the clipboard. 29 | * arguments 30 | * text `string` 31 | * returns `void` 32 | 33 | ### clipboard.clear() 34 | Clears the text saved in clipboard. 35 | * returns `void` 36 | -------------------------------------------------------------------------------- /docs/references/commands.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Register globally executable commands that trigger an action on invocation. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # commands 9 |
10 | [[toc]] 11 | 12 | ### commands.registerCommand(id, handle[, thisArg, label]) 13 | Registers a globally executable command. 14 | * arguments 15 | * id `string` 16 | * handle `Function` 17 | * thisArg `any`(optional) 18 | * label `string`(optional) 19 | * returns [`IKeyBindingRegister`](/structures/IKeyBindingRegister.md) 20 | * Usage 21 | 22 | 23 | #### Registering a command. 24 | ```js 25 | quark.commands.registerCommand('my.awesome.command.id', () => { 26 | console.log('I ran'); 27 | }); 28 | 29 | quark.commands.executeCommand('my.awesome.command.id'); 30 | //logs `I ran` to console. 31 | ``` 32 | 33 | #### Adding a KeyBinding to the command. 34 | ```js 35 | const register = quark.commands.registerCommand('my.awesome.command.id', () => { 36 | console.log('I ran'); 37 | }); 38 | register.addKeyBinding('ctrl+i'); 39 | //Now pressing the key combination "ctrl+i" will invoke the command. 40 | ``` 41 | 42 | #### Passing arguments to the command. 43 | ```js 44 | quark.commands.registerCommand('my.awesome.command.id', (label) => { 45 | console.log(label); 46 | }); 47 | 48 | quark.commands.executeCommand('my.awesome.command.id', 'I ran'); 49 | //logs `I ran` to console. 50 | ``` 51 | 52 | #### Adding command to the commands palette. 53 | The example below shows how to add a command to the commands palette. The only thing you need to do differently is to provide the label argument to the `commands.registerCommand` function. 54 | ```js 55 | quark.commands.registerCommand('my.awesome.command.id', () => { 56 | console.log('I ran'); 57 | }, null, 'My Awesome Command'); 58 | ``` 59 | Now the command should be available in the commands palette like so. 60 | 61 | ![registered-command](~@public/references/commands/registered-command.png) 62 | 63 | 64 | ### commands.executeCommand(id, [...args]) 65 | Executes a registered command. 66 | * arguments 67 | * id `string` 68 | * ...args `any` 69 | * returns `void` 70 | 71 | ### commands.getCommand(id) 72 | Returns a registered command with the provided id. 73 | * arguments 74 | * id `string` 75 | * returns [`ICommand`](/structures/ICommand.md) | `undefined` 76 | * Usage 77 | 78 | ```js 79 | //e.g. Getting a command and then disposing it. 80 | const command = quark.commands.getCommand('my.awesome.command.id'); 81 | command.dispose(); 82 | //unregisters the command 83 | ``` 84 | 85 | ### commands.getAllCommands() 86 | Returns an array of all the registered commands. 87 | * returns [`Array`](/structures/ICommand.md) 88 | * Usage 89 | 90 | ```js 91 | //e.g. filtering all commands registered in commands palette. 92 | const commands = quark.commands.getAllCommands().map((command) => { 93 | if(command.label) { 94 | return command; 95 | } 96 | }); 97 | ``` 98 | 99 | -------------------------------------------------------------------------------- /docs/references/icons.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Register icons to be used in UI components. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # icons 9 |
10 | [[toc]] 11 | 12 | ### icons.registerIcon(icon) 13 | Registers an icon in global icon namespace. 14 | * arguments 15 | * icon [`Icon`](/structures/icon.md) 16 | * returns `void` 17 | * Usage 18 | 19 | ```js 20 | quark.icons.registerIcon({ 21 | name: 'my-custom-icon', 22 | path: './my-custom-icon.svg' 23 | }); 24 | 25 | const view = quark.views.createSideView('my-side-view', document.createElement('my-custom-element')); 26 | view.icon = 'my-custom-icon'; 27 | view.focus(); 28 | ``` 29 | 30 | 31 | ### icons.registerIcons(icons) 32 | Registers multiple icons in global icon namespace. 33 | * arguments 34 | * icons [`Array`](/structures/icon.md) 35 | * returns `void` 36 | 37 | 38 | ### icons.registerIconInNamespace(icon, namespace) 39 | Registers an icon under a namespace. 40 | * arguments 41 | * icon [`Icon`](/structures/icon.md) 42 | * namespace `string` 43 | * returns `void` 44 | * Usage 45 | 46 | ```js 47 | quark.icons.registerIconInNamespace({ 48 | name: 'my-custom-icon', 49 | path: './my-custom-icon.svg' 50 | }, 'my-namespace'); 51 | 52 | const view = quark.views.createSideView('my-side-view', document.createElement('my-custom-element')); 53 | view.icon = 'my-namespace:my-custom-icon'; 54 | view.focus(); 55 | ``` 56 | 57 | 58 | ### icons.registerIconsInNamespace(icons, namespace) 59 | Registers multiple icons under a namespace. 60 | * arguments 61 | * icons [`Array`](/structures/icon.md) 62 | * namespace `string` 63 | * returns `void` 64 | 65 | ### Tip 66 | Quark comes pre installed with [Material icons](https://material.io/tools/icons/?style=baseline) and [Ionicons](https://ionicons.com/). You can use them in your views as follows: 67 | ```js 68 | /* 69 | * Using material icons. 70 | * All material icons are registered under the namespace 'mat' 71 | */ 72 | 73 | const view = quark.views.createSideView('my-material-icon-view', document.createElement('my-custom-element')); 74 | view.icon = 'mat:close'; 75 | 76 | /* 77 | * Using ionicons. 78 | * All ionicons are registered under the namespace 'ionicon' 79 | * 80 | * Important: You also have to specify the platform of the icon. i.e. 'md-' or 'ios-' before the name of the icon. 81 | * e.g. 'ionicon:md-close' would work but 'ionicon:close' would not. 82 | */ 83 | 84 | const view = quark.views.createSideView('my-ionicon-view', document.createElement('my-custom-element')); 85 | view.icon = 'ionicon:md-close'; 86 | ``` 87 | -------------------------------------------------------------------------------- /docs/references/storage.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Store data 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # storage 9 |
10 | [[toc]] 11 | 12 | 13 | 14 | ### inMemory 15 | Store temporary data in memory while your code is running. As soon as the window is closed, all data is lost. The data may or may not be JSON serializable. 16 | * see [MemoryStore](/structures/MemoryStore.md) 17 | 18 | 19 | ### local 20 | Store data locally in an external file. File is created on per project basis. You can only store JSON serializable data. 21 | * see [PersistantStore](/structures/PersistantStore.md) 22 | 23 | 24 | ### global 25 | Store data locally in an external file. Common for a system. You can only store JSON serializable data. 26 | * see [PersistantStore](/structures/PersistantStore.md) -------------------------------------------------------------------------------- /docs/references/util.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Utilitiy methods to quark api. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # util 9 |
10 | [[toc]] 11 | 12 | ### util.createContextMenu(items) 13 | * arguments 14 | * items [`Array`](/structures/menu-item.md) 15 | * returns [`ContextMenuRef`](/structures/context-menu-ref.md) 16 | 17 | ### util.createElementFromHtml(html) 18 | Creates an HTML element from string. 19 | * arguments 20 | * html `string` 21 | * returns `Element` 22 | 23 | ### util.createFileSystemWatcher(path[, options]) 24 | Creates a file system watcher. 25 | * arguments 26 | * path `string | Array` 27 | * options `WatchOptions`(optional) 28 | * returns [`Watcher`](/) 29 | 30 | ### util.createInputBox() 31 | Creates an Input box 32 | * returns [`InputBox`](/) 33 | 34 | ### util.createMainMenuItem(label, items[, priority]) 35 | Creates a main menu item. 36 | * arguments 37 | * label `string` 38 | * items [`Array`](/structures/menu-item.md) 39 | * returns [`MenuRef`](/structures/menu-ref.md) 40 | 41 | ### util.createOutputChannel(name) 42 | Creates an output channel. 43 | * arguments 44 | * name `string` 45 | * returns [`OutputChannel`](/) 46 | 47 | ### util.createQuickView(name) 48 | Creates a quick view pannel. Similar to the one used by commands. 49 | * arguments 50 | * name `string` 51 | * returns [`IQuickPick`](/) 52 | 53 | ### util.createSnackbar(message[, type, duration]) 54 | Creates a snackbar notification. 55 | * arguments 56 | * message `string` 57 | * type `'danger' | 'success' | 'warning' | 'info'` 58 | * duration `number` 59 | * returns [`SnackbarItem`](/structures/SnackbarItem.md) 60 | -------------------------------------------------------------------------------- /docs/references/views.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : Create and control views of your app. 3 | author : nishkal 4 | tags : ['api', 'references'] 5 | cover : ~@buildAssets/api/references.png 6 | --- 7 | 8 | # views 9 |
10 | [[toc]] 11 | 12 | ### views.createSideView() 13 | Creates a side view. 14 | * returns [`ViewProvider`](/structures/view-provider.md) 15 | 16 | ### views.createBottomView() 17 | Creates a bottom view. 18 | * returns [`ViewProvider`](/structures/view-provider.md) 19 | 20 | ### views.createTabsView() 21 | Creates a tabs view. 22 | * returns [`ViewProvider`](/structures/view-provider.md) 23 | 24 | ### views.sideviewController 25 | * see [SideviewController](/structures/sideview-controller.md) 26 | 27 | ### views.bottomviewController 28 | * see [BottomviewController](/structures/bottomview-controller.md) 29 | 30 | ### views.tabsviewController 31 | * see [TabsviewController](/structures/tabsview-controller.md) 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /docs/releases/Quark-v0.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: "Release notes for all the releases in minor version: Quark-0.1.x" 3 | title: "Release notes: Quark-0.1.x" 4 | author: nishkal 5 | tags: [] 6 | sidebarDepth: 4 7 | --- 8 | 9 | 10 | # Release Notes 11 | 12 | ## Version: Quark-v0.1.x 13 | 14 | 15 | 16 | [[toc]] 17 | 18 | 19 | ## Quark 0.1.19 - April 20, 2019 20 | 21 | #### Minor Changes: 22 | * 🚑 Fixed windows nsis installer issue. 23 | * Added builds for *.tar.gz, *.deb and *.zip 24 | * Added shasum check table 25 | 26 | !!! note See SHA-512 Hashes 27 | 28 | 35 | 36 | !!! 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/scripts/check-files.ts: -------------------------------------------------------------------------------- 1 | import * as recc from 'recursive-readdir'; 2 | import { getFrontmatterFromPath, printConsoleStatus, reccursiveIgnoreFunction } from './util'; 3 | import { AllTags } from './types'; 4 | import * as fs from 'fs-extra'; 5 | 6 | const GIMAGES_OUT = './.vuepress/public'; 7 | checkFiles().catch(console.error); 8 | 9 | async function checkFiles() { 10 | const files = await recc('./', [reccursiveIgnoreFunction]); 11 | 12 | files.map((file) => { 13 | const result = isValidFile(file); 14 | if (!result.isValid) { 15 | printConsoleStatus(`Invalid file: ${file}`, 'danger'); 16 | printConsoleStatus(`Error: ${result.errMsg}\n`, 'danger'); 17 | } 18 | }); 19 | 20 | console.log(`Checked: ${files.length}`); 21 | } 22 | 23 | export function isValidFile(path: string): { isValid: boolean, errMsg: string } { 24 | const check1 = path.endsWith('README.md') || path.match(/(style-guide|tags|devtime|release-notes|insiders.md)/) != null; 25 | if (check1) { 26 | return { isValid: check1, errMsg: 'Is ignored file.' }; 27 | } 28 | 29 | const frontmatter = getFrontmatterFromPath(path); 30 | if(!frontmatter) { 31 | return { isValid: false, errMsg: 'No Frontmatter' }; 32 | } 33 | 34 | const check2 = !!(!!frontmatter.author && frontmatter.description != null && !!frontmatter.tags!!); 35 | if (!check2) { 36 | return { isValid: check2, errMsg: 'Frontmatter required member missing.' }; 37 | } 38 | 39 | const check3 = checkForVideoTagCrossOriginAttribute(path); 40 | if (!check3) { 41 | return { isValid: check3, errMsg: 'Video tags do not include cross-origin attribute.' }; 42 | } 43 | 44 | // const check3 = frontmatter.cover ? fs.existsSync(Path.join(GIMAGES_OUT, frontmatter.cover)) : true; 45 | // if (!check3) { 46 | // return { isValid: check3, errMsg: `Cover image path does not exists. ${(Path.join(GIMAGES_OUT, frontmatter.cover))}` }; 47 | // } 48 | 49 | const check4 = frontmatter.tags.every((val) => { return AllTags[val] }); 50 | return { isValid: check4, errMsg: 'Tags match.' }; 51 | } 52 | 53 | function checkForVideoTagCrossOriginAttribute(path: string): boolean { 54 | const file = fs.readFileSync(path).toString(); 55 | const videoTags = file.match(/<\s*video.+?>/g) || []; 56 | const result = videoTags.every((tag) => { 57 | return tag.includes('crossOrigin="anonymous"') && tag.includes('muted'); 58 | }); 59 | return result;; 60 | } -------------------------------------------------------------------------------- /docs/scripts/cloud-storage-hosting.ts: -------------------------------------------------------------------------------- 1 | import { Storage } from '@google-cloud/storage'; 2 | import * as recc from 'recursive-readdir'; 3 | import { printConsoleStatus } from './util'; 4 | import * as path from 'path'; 5 | 6 | const bucketName = 'quarkjs.io'; 7 | const folder = './.vuepress/dist'; 8 | process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve('./cloud-storage-key.json'); 9 | process.chdir(folder); 10 | 11 | uploadFileToBucket() 12 | .catch((err) => { 13 | console.error(err); 14 | process.exit(1); 15 | }); 16 | 17 | async function uploadFileToBucket() { 18 | const storage = new Storage({ 19 | projectId: 'diy-mechatronics' 20 | }); 21 | 22 | const bucket = storage.bucket(bucketName); 23 | // await bucket.deleteFiles(); 24 | 25 | const files = await recc('./'); 26 | const promises = files.map(async (_file) => { 27 | const file = _file.replace(/\\/g, '/'); 28 | // console.log(`File: ${file}; ${getCacheControlForFile(file)}`); 29 | const f = await bucket.upload(file, { 30 | gzip: true, 31 | public: true, 32 | destination: file, 33 | metadata: { 34 | cacheControl: `public, max-age=${getCacheControlForFile(file)}`, 35 | } 36 | }); 37 | return f; 38 | }); 39 | await Promise.all(promises); 40 | printConsoleStatus(`Uploaded all files`, 'success'); 41 | } 42 | 43 | function getCacheControlForFile(file: string) { 44 | // html max-age 3600 45 | // html max-age 3600 46 | 47 | // cache service-worker 48 | if (file.match(/.+worker\.js/)) { 49 | printConsoleStatus(`Service worker cache set to zero: ${file}`, 'info'); 50 | return 0; 51 | } 52 | 53 | // cache images 54 | if (file.match(/\.(jpg|jpeg|gif|png|mp4)$/)) { 55 | return 2592000; 56 | } 57 | 58 | // cache javascript 59 | if (file.match(/assets\/js.+(js)$/)) { 60 | return 2592000; 61 | } 62 | 63 | // cache assets 64 | if (file.match(/\.(woff|woff2|css)$/)) { 65 | return 2592000; 66 | } 67 | 68 | // return 3600; 69 | return 7200; 70 | } -------------------------------------------------------------------------------- /docs/scripts/convert-images.ts: -------------------------------------------------------------------------------- 1 | import * as sharp from 'sharp'; 2 | import * as Path from 'path'; 3 | import * as fs from 'fs-extra'; 4 | import * as recc from 'recursive-readdir'; 5 | import { printConsoleStatus } from './util' 6 | 7 | const ignoreFunction = (file: string, stat: fs.Stats) => { 8 | if (file.endsWith('.png')) { 9 | return false; 10 | } 11 | // if (stat.isDirectory()) { 12 | // return false; 13 | // } 14 | return true; 15 | } 16 | 17 | const guideInputPath = './.vuepress/buildAssets/guide'; 18 | const apiInputPath = './.vuepress/buildAssets/api'; 19 | const guideOutputPath = './.vuepress/public/g-images/guide'; 20 | const apiOutputPath = './.vuepress/public/g-images/api'; 21 | 22 | const arr: IMap[] = [ 23 | { 24 | inputPath: Path.join(apiInputPath, './'), 25 | outputPath: Path.join(apiOutputPath, './'), 26 | }, 27 | { 28 | inputPath: Path.join(guideInputPath, './'), 29 | outputPath: Path.join(guideOutputPath, './'), 30 | }, 31 | { 32 | inputPath: Path.join(guideInputPath, './intro'), 33 | outputPath: Path.join(guideOutputPath, './intro'), 34 | width: 1200 35 | }, 36 | { 37 | inputPath: Path.join(guideInputPath, './user-interface'), 38 | outputPath: Path.join(guideOutputPath, './user-interface'), 39 | width: 1200 40 | } 41 | ]; 42 | 43 | fs.emptyDirSync('./.vuepress/public/g-images'); 44 | convert(arr); 45 | 46 | function convert(maps: IMap[]) { 47 | maps.map((map) => { 48 | 49 | if (fs.statSync(map.inputPath).isDirectory()) { 50 | convertFolder(map); 51 | return; 52 | } 53 | convertFile(map); 54 | }); 55 | } 56 | 57 | async function convertFolder(map: IMap) { 58 | const files = await recc(map.inputPath, [ignoreFunction]); 59 | files.map(async (file) => { 60 | const newMap = JSON.parse(JSON.stringify(map)) as IMap; 61 | newMap.inputPath = file; 62 | newMap.outputPath = Path.join(map.outputPath, Path.basename(file)); 63 | convertFile(newMap); 64 | }); 65 | } 66 | 67 | async function convertFile(map: IMap) { 68 | 69 | if (map.outputPath.includes('buildAssets')) { 70 | throw Error('Output path is input path'); 71 | } 72 | 73 | const meta = await sharp(map.inputPath).metadata(); 74 | let width: number = map.width || 600; 75 | let height: number = map.height; 76 | 77 | if ((meta.width < width) && !map.forceGivenSize) { 78 | width = meta.width; 79 | } 80 | 81 | if (height && (meta.height < height) && !map.forceGivenSize) { 82 | height = meta.height; 83 | } 84 | 85 | const buffer = await sharp(map.inputPath) 86 | .resize(width, height) 87 | .toBuffer(); 88 | 89 | fs.ensureDirSync(Path.dirname(map.outputPath)); 90 | 91 | await fs.writeFile(map.outputPath, buffer); 92 | printConsoleStatus(`Generated image at: ${map.outputPath};`, 'success') 93 | } 94 | 95 | interface IMap { 96 | inputPath: string; 97 | outputPath: string; 98 | width?: number; 99 | height?: number; 100 | forceGivenSize?: boolean 101 | } -------------------------------------------------------------------------------- /docs/scripts/create-site-map.ts: -------------------------------------------------------------------------------- 1 | import * as recc from 'recursive-readdir'; 2 | import * as Path from 'path'; 3 | import * as fs from 'fs-extra'; 4 | import { ChildProcess, exec } from 'child_process'; 5 | 6 | const domainName = 'quarkjs.io'; 7 | 8 | createSiteMap().catch(console.error); 9 | 10 | export async function createSiteMap() { 11 | let files = await recc('./', [(path, stat) => { 12 | if (stat.isDirectory() && path.includes('node_modules')) { 13 | return true; 14 | } 15 | 16 | if (stat.isDirectory()) { 17 | return false; 18 | } 19 | 20 | if (path.includes('devtime.md')) { 21 | return true; 22 | } 23 | 24 | if (!path.endsWith('md')) { 25 | return true; 26 | } 27 | }]); 28 | 29 | files = files.map((file) => { 30 | return file 31 | .replace(/README.md/, '') 32 | .replace(/[\\\/]/g, '/') 33 | }); 34 | 35 | let str = `\n`; 36 | str = str.concat(``, '\n'); 37 | 38 | const promises = files.map(async (file) => { 39 | const cp = exec(`git --no-pager log -1 --format="%cd" ${file}`, { 40 | timeout: 1000 41 | }); 42 | let obj = { str: '' } 43 | await promiseFromChildProcess(cp, obj); 44 | let url = '' 45 | if (!file.endsWith('.md') || obj.str.length == 0) { 46 | url = url.concat(` 47 | 48 | https://${domainName}/${file.replace(/\.(md)$/g, '.html')} 49 | daily 50 | 51 | `); 52 | } else { 53 | const date = obj.str.replace(/\n/g, ''); 54 | url = url.concat(` 55 | 56 | https://${domainName}/${file.replace(/\.(md)$/g, '.html')} 57 | ${(new Date(date)).toISOString()} 58 | 59 | `); 60 | } 61 | str = str.concat(url.replace(/(\n|\s)/g, '').concat('\n')); 62 | }); 63 | await Promise.all(promises); 64 | 65 | str = str.concat(``); 66 | const sitemapPath = `./.vuepress/dist/sitemap.xml`; 67 | fs.ensureFileSync(sitemapPath); 68 | fs.writeFileSync(sitemapPath, str); 69 | } 70 | 71 | function promiseFromChildProcess(child: ChildProcess, obj: { str: string }) { 72 | 73 | child.stdout.on('data', (data) => { obj.str = obj.str.concat(data) }); 74 | child.stderr.on('data', (data) => { console.error(data) }); 75 | child.on('close', (code) => { 76 | if (code !== 0) { 77 | throw Error(`Closing code: ${code}`); 78 | } 79 | }); 80 | 81 | return new Promise((resolve, reject) => { 82 | child.addListener("error", reject); 83 | child.addListener("exit", resolve); 84 | }); 85 | } -------------------------------------------------------------------------------- /docs/scripts/fix-shasum.ts: -------------------------------------------------------------------------------- 1 | import * as fs from 'fs-extra'; 2 | import fetch from 'node-fetch'; 3 | import * as js from 'js-beautify'; 4 | import * as path from 'path'; 5 | import { Storage } from '@google-cloud/storage'; 6 | import * as compareVersions from 'compare-versions'; 7 | import { makeReleaseDir } from './make-release-dir'; 8 | 9 | const bucketUrl = `https://quark-release.quarkjs.io`; 10 | const insiders_versionFilePath = './version-assets/insiders/__versions.json'; 11 | const stable_versionFilePath = './version-assets/stable/__versions.json'; 12 | const badReleases: string[] = JSON.parse(fs.readFileSync(`./version-assets/insiders/__broken-releases.json`).toString()); 13 | 14 | const bucketName = 'quark-release.quarkjs.io'; 15 | process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve('./cloud-storage-key.json'); 16 | 17 | const storage = new Storage({ 18 | projectId: 'diy-mechatronics' 19 | }); 20 | 21 | const bucket = storage.bucket(bucketName); 22 | 23 | 24 | root().catch(console.error); 25 | async function root() { 26 | const insiders_versionJson = JSON.parse(fs.readFileSync(insiders_versionFilePath).toString()); 27 | const stable_versionJson = JSON.parse(fs.readFileSync(stable_versionFilePath).toString()); 28 | 29 | const allReleasedVersions = Object.keys(insiders_versionJson); 30 | 31 | const insidersObject = {} as any; 32 | const stableObject = {} as any; 33 | const promises = allReleasedVersions.map(async (version, index) => { 34 | // if (index > 2) { 35 | // return; 36 | // } 37 | const fix = await fixForVersion(version); 38 | console.log(`Fixed version: ${version}`); 39 | 40 | insidersObject[version] = fix; 41 | if (!badReleases.includes(version) && stable_versionJson[version]) { 42 | stableObject[version] = fix; 43 | } 44 | }); 45 | await Promise.all(promises); 46 | 47 | const insiders_filteredObject: any = {}; 48 | const stable_filteredObject: any = {}; 49 | 50 | Object.keys(insidersObject).sort(compareVersions).reverse().map((key) => { insiders_filteredObject[key] = insidersObject[key] }); 51 | Object.keys(stableObject).sort(compareVersions).reverse().map((key) => { stable_filteredObject[key] = stableObject[key] }); 52 | 53 | fs.writeFileSync(insiders_versionFilePath, JSON.stringify(insiders_filteredObject, undefined, 4)); 54 | fs.writeFileSync(stable_versionFilePath, JSON.stringify(stable_filteredObject, undefined, 4)); 55 | 56 | async function fixForVersion(version: string) { 57 | try { 58 | const win32_SHA = JSON.parse((await bucket.file(`Quark-insiders-${version}/win32-shasum.json`).download())[0].toString()); 59 | const linux_SHA = JSON.parse((await bucket.file(`Quark-insiders-${version}/linux-shasum.json`).download())[0].toString()); 60 | const darwin_SHA = JSON.parse((await bucket.file(`Quark-insiders-${version}/darwin-shasum.json`).download())[0].toString()); 61 | 62 | const shaObj = Object.assign({}, win32_SHA, linux_SHA, darwin_SHA); 63 | 64 | const newNotes = ``; 65 | const newString = (insiders_versionJson[version] as string).replace(//, newNotes); 66 | return newString; 67 | } catch (err) { 68 | return insiders_versionJson[version]; 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /docs/scripts/generate-service-worker.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as fs from 'fs-extra'; 3 | 4 | const outDir = path.resolve('./.vuepress/dist'); 5 | 6 | generateServiceWorker().catch(console.error); 7 | 8 | async function generateServiceWorker() { 9 | const initialSw = (await fs.readFile(path.resolve(outDir, 'service-worker.js'))).toString(); 10 | const custom = (await fs.readFile('./scripts/sw.js')).toString(); 11 | await fs.writeFile( 12 | path.resolve(outDir, 'service-worker.js'), 13 | String().concat(initialSw, custom) 14 | ); 15 | } -------------------------------------------------------------------------------- /docs/scripts/open-links.ts: -------------------------------------------------------------------------------- 1 | const op: typeof import('open') = require('open'); 2 | 3 | 4 | const links = [ 5 | // 'https://electronjs.org/docs', 6 | // 'https://fireship.io/', 7 | // 'https://processing.org/', 8 | // 'https://vuejs.org/', 9 | // 'https://docs.npmjs.com/about-npm/', 10 | // 'https://ionicframework.com/docs/intro/', 11 | // "https://ionicframework.com/studio", 12 | // 'https://medium.com/@ericsimons/stackblitz-online-vs-code-ide-for-angular-react-7d09348497f4', 13 | // 'https://styleguide.mailchimp.com/writing-technical-content/', 14 | // "https://code.visualstudio.com/docs/setup/setup-overview", 15 | // "https://docs.platformio.org/en/latest/what-is-platformio.html" 16 | "http://tushkiz.github.io/", 17 | "https://arthelon.github.io", 18 | "https://jsonnull.com/", 19 | "https://elrumordelaluz.com/", 20 | "http://ivesvh.com/", 21 | "https://valentin-hervieu.fr", 22 | "http://anenth.js.org", 23 | "http://nyaganti.com/", 24 | "http://bogas04.github.io", 25 | "https://www.ispoljaric.com" 26 | ] 27 | 28 | 29 | links.map((url) => { 30 | op(url, { 31 | background: true 32 | }); 33 | }) -------------------------------------------------------------------------------- /docs/scripts/post-build.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as fs from 'fs-extra'; 3 | import * as wbb from 'workbox-build'; 4 | 5 | const outDir = path.resolve('./.vuepress/dist'); 6 | const vuepressDefaultFiles = `js,css,html,png,jpg,jpeg,gif,svg,woff,woff2,eot,ttf,otf`; 7 | 8 | generateServiceWorker().catch(console.error); 9 | 10 | async function generateServiceWorker() { 11 | const result = await wbb.generateSW({ 12 | swDest: path.resolve(outDir, 'service-worker.js'), 13 | globDirectory: outDir, 14 | globPatterns: [`**\/*.{${vuepressDefaultFiles}}`] 15 | }); 16 | console.log(result); 17 | 18 | const initialSw = (await fs.readFile(path.resolve(outDir, 'service-worker.js'))).toString(); 19 | const custom = (await fs.readFile('./scripts/sw.js')).toString(); 20 | const skipWaiting = (await fs.readFile(path.resolve('./node_modules/vuepress/lib', 'service-worker/skip-waiting.js'))).toString(); 21 | await fs.writeFile( 22 | path.resolve(outDir, 'service-worker.js'), 23 | String().concat(initialSw, custom, skipWaiting) 24 | ); 25 | } -------------------------------------------------------------------------------- /docs/scripts/purge-cache.ts: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | import * as dotenv from 'dotenv'; 3 | dotenv.config({ path: '.env' }); 4 | 5 | purgeCache().then((res) => { 6 | console.log(res); 7 | }).catch(console.error); 8 | 9 | async function purgeCache() { 10 | const result = await fetch(`https://api.cloudflare.com/client/v4/zones/7d5732fab88b05cc381a9479ad89a090/purge_cache`, { 11 | method: 'post', 12 | headers: { 13 | 'X-Auth-Email': 'kashyapnishkal@gmail.com', 14 | 'X-Auth-Key': process.env.CLOUD_FLARE_API_KEY, 15 | 'Content-Type': 'application/json' 16 | }, 17 | body: JSON.stringify({ 18 | purge_everything: true 19 | }) 20 | }); 21 | console.log(await result.text()); 22 | } -------------------------------------------------------------------------------- /docs/scripts/send-build-notification.ts: -------------------------------------------------------------------------------- 1 | import * as dotenv from 'dotenv'; 2 | dotenv.config({ path: './.env' }); 3 | 4 | import * as web from '@slack/web-api'; 5 | import * as fs from 'fs-extra'; 6 | 7 | type channels = 'storage' | 'general' | 'compute' | 'billing' | 'download' | 'documentation'; 8 | 9 | const token = (process.env.BOT_ACCESS_TOKEN); 10 | const client = new web.WebClient(token); 11 | function postMessage(channel: channels, text: string) { 12 | client.chat.postMessage({ 13 | channel, 14 | text, 15 | mrkdwn: true 16 | }).then((value) => { 17 | console.log(text); 18 | }).catch((err) => { 19 | console.log(err); 20 | }); 21 | } 22 | 23 | const version = fs.readJsonSync('./package.json').version; 24 | postMessage('documentation', `Build version:${version} was uploaded.`); -------------------------------------------------------------------------------- /docs/scripts/sw.js: -------------------------------------------------------------------------------- 1 | workbox.routing.registerRoute( 2 | /^https:\/\/fonts\.gstatic\.com/, 3 | new workbox.strategies.CacheFirst({ 4 | cacheName: 'google-fonts-webfonts', 5 | plugins: [ 6 | new workbox.cacheableResponse.Plugin({ 7 | statuses: [200], 8 | }), 9 | new workbox.expiration.Plugin({ 10 | maxAgeSeconds: 60 * 60 * 24 * 365, 11 | maxEntries: 30, 12 | }), 13 | ], 14 | }) 15 | ); 16 | 17 | workbox.routing.registerRoute( 18 | new RegExp('/__/'), 19 | new workbox.strategies.StaleWhileRevalidate({ 20 | cacheName: 'firebase', 21 | }) 22 | ); 23 | 24 | workbox.routing.registerRoute( 25 | /^https:\/\/google-analytics\.com/, 26 | new workbox.strategies.StaleWhileRevalidate({ 27 | cacheName: 'google-analytics', 28 | }) 29 | ); 30 | 31 | workbox.routing.registerRoute( 32 | /^https:\/\/static\.hotjat\.com/, 33 | new workbox.strategies.StaleWhileRevalidate({ 34 | cacheName: 'hotjar', 35 | }) 36 | ); 37 | 38 | // imgur images 39 | workbox.routing.registerRoute( 40 | /^https:.*imgur.*\.(png|jpg|jpeg|gif)$/, 41 | new workbox.strategies.StaleWhileRevalidate({ 42 | cacheName: 'imgur-images', 43 | plugins: [ 44 | new workbox.cacheableResponse.Plugin({ 45 | statuses: [200], 46 | }), 47 | new workbox.expiration.Plugin({ 48 | maxAgeSeconds: 60 * 60 * 24 * 7, 49 | maxEntries: 30, 50 | }) 51 | ] 52 | }) 53 | ); 54 | 55 | // imgur videos 56 | workbox.routing.registerRoute( 57 | /^https:.*imgur.*\.(mp4)$/, 58 | new workbox.strategies.StaleWhileRevalidate({ 59 | cacheName: 'imgur-videos', 60 | plugins: [ 61 | new workbox.cacheableResponse.Plugin({ 62 | statuses: [200], 63 | }), 64 | new workbox.rangeRequests.Plugin(), 65 | new workbox.expiration.Plugin({ 66 | maxAgeSeconds: 60 * 60 * 24 * 7, 67 | maxEntries: 30, 68 | }) 69 | ] 70 | }) 71 | ); 72 | 73 | // https://developers.google.com/web/tools/workbox/guides/advanced-recipes#cached-av 74 | workbox.routing.registerRoute( 75 | // new RegExp('.(mp4)$'), 76 | // /.*\.mp4/,// 77 | /.*quarkjs.*\.mp4/,// 78 | new workbox.strategies.CacheFirst({ 79 | cacheName: 'videos', 80 | plugins: [ 81 | new workbox.cacheableResponse.Plugin({ statuses: [200] }), 82 | new workbox.rangeRequests.Plugin(), 83 | ], 84 | }) 85 | ); -------------------------------------------------------------------------------- /docs/scripts/types.js: -------------------------------------------------------------------------------- 1 | exports.AllTags = reverse({ 2 | javascript: { 3 | background: 'var(--text-color--dark)', 4 | color: '#f0db4f', 5 | description: `JavaScript (JS) is a lightweight interpreted or just-in-time compiled programming language.` 6 | }, 7 | typescript: { 8 | background: 'var(--text-color--dark)', 9 | color: '#2775c3', 10 | description: `TypeScript is an open-source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript.` 11 | }, 12 | nodejs: { 13 | background: 'var(--text-color--dark)', 14 | color: '#90c53f', 15 | description: `Node.js is an open-source, cross-platform JavaScript runtime environment that executes JavaScript code outside of a browser.` 16 | }, 17 | structures: { 18 | background: '#ffffff', 19 | color: '#ff5252', 20 | description: `Data structures used in the API.` 21 | }, 22 | references: { 23 | background: '#ffffff', 24 | color: '#3880ff', 25 | description: `API Reference Overview for Quark API.` 26 | }, 27 | api: { 28 | background: '#ffffff', 29 | color: '#6675e0', 30 | description: `Quark API is a set of JavaScript APIs that you can invoke in your sketches.` 31 | }, 32 | guide: { 33 | background: '#ffffff', 34 | color: '#a481d5', 35 | description: `Outline. Download and install Quark. See an overview of the user interface.` 36 | }, 37 | faq: { 38 | background: '#ffffff', 39 | color: '#6675e0', 40 | description: `A common questions section as needed for specific topics. We've captured items here that don't fit in the other topics.` 41 | }, 42 | arduino: { 43 | background: '#ffffff', 44 | color: '#00979d', 45 | description: `Arduino is an open-source hardware and software company, project and user community that designs and manufactures single-board microcontrollers.` 46 | } 47 | }); 48 | 49 | function reverse(tags) { 50 | // Object.keys(tags).map((tag) => { 51 | // const background = tags[tag].background; 52 | // const color = tags[tag].color; 53 | 54 | // tags[tag].background = color; 55 | // tags[tag].color = background; 56 | // }); 57 | 58 | for (let tag in tags) { 59 | const background = tags[tag].background; 60 | const color = tags[tag].color; 61 | 62 | tags[tag].background = color; 63 | tags[tag].color = background; 64 | } 65 | return tags; 66 | } -------------------------------------------------------------------------------- /docs/scripts/util.ts: -------------------------------------------------------------------------------- 1 | import * as YAML from 'yamljs'; 2 | import * as fs from 'fs-extra'; 3 | import chalk from 'chalk'; 4 | import { Storage } from '@google-cloud/storage'; 5 | process.env.GOOGLE_APPLICATION_CREDENTIALS = './cloud-storage-key.json'; 6 | 7 | export function printConsoleStatus(message: string, status: 'danger' | 'success' | 'warning' | 'info'): void { 8 | let emoji = (status == 'danger') ? ' ❗' : (status == 'success') ? ' ✅ ' : (status == 'warning') ? ' ⚠️ ' : ' ️️💁 '; 9 | const color = (status == 'danger') ? chalk.redBright : (status == 'success') ? chalk.greenBright : (status == 'warning') ? chalk.yellowBright : chalk.whiteBright; 10 | console.log(color(`| ${emoji} | ${message}`)); 11 | } 12 | export function randomIntFromInterval(min: number, max: number) { 13 | return Math.floor(Math.random() * (max - min + 1) + min); 14 | } 15 | 16 | export function getFrontmatterFromPath(path: string): (Frontmatter & { path: string }) | null { 17 | const frontmatter = fs.readFileSync(path).toString().match(/---([\s\S\n]+?)---/); 18 | try { 19 | const data = YAML.parse(frontmatter[1]); 20 | data.path = path; 21 | return data; 22 | } catch (err) { 23 | return null; 24 | } 25 | } 26 | 27 | export function capitalize(s: string) { 28 | var splitStr = s.split(' '); 29 | for (var i = 0; i < splitStr.length; i++) { 30 | splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1); 31 | } 32 | return splitStr.join(' '); 33 | } 34 | 35 | export function getFiles(bucketName: string, version: string): Promise { 36 | return new Promise((resolve) => { 37 | 38 | const arr: string[] = []; 39 | const storage = new Storage({ 40 | projectId: 'diy-mechatronics' 41 | }); 42 | storage.bucket(bucketName).getFiles().then((folders) => { 43 | folders.map((files) => { 44 | files.map((file) => { 45 | if (file.name.includes(`Quark-${version}`)) { 46 | arr.push(file.name.replace(`Quark-${version}/`, '')); 47 | } 48 | }); 49 | resolve(arr); 50 | }); 51 | }); 52 | }); 53 | } 54 | 55 | export function getFrontmatterFromObject(obj: object) { 56 | let str = ''; 57 | str = str.concat(`---`, '\n'); 58 | Object.keys(obj).map((key) => { 59 | str = str.concat(`${key}: ${obj[key]}`, '\n'); 60 | }); 61 | str = str.concat(`---`, '\n'); 62 | return str; 63 | } 64 | 65 | export type IFrontmatterData = { 66 | path: string; 67 | frontmatter: Frontmatter; 68 | }; 69 | 70 | export type Frontmatter = { 71 | author: string; 72 | tags: string[]; 73 | description: string; 74 | cover: string; 75 | }; 76 | 77 | type releaseType = 'stable' | 'insiders'; 78 | interface releaseInterface { 79 | downloadFilePath: string; 80 | bucketSubUrl: releaseType; 81 | } 82 | 83 | export const releaseVariables: { [key in releaseType]: releaseInterface } = { 84 | stable: { 85 | downloadFilePath: './download/README.md', 86 | bucketSubUrl: 'stable' 87 | }, 88 | insiders: { 89 | downloadFilePath: './download/insiders.md', 90 | bucketSubUrl: 'insiders' 91 | } 92 | } 93 | 94 | export function reccursiveIgnoreFunction(path: string, stat: fs.Stats) { 95 | const Path = require('path'); 96 | 97 | if (stat.isDirectory() && path.includes('node_modules')) { 98 | return true; 99 | } 100 | 101 | if (stat.isDirectory() && Path.resolve(path) == Path.resolve('./tags')) { 102 | return true; 103 | } 104 | 105 | if (stat.isDirectory()) { 106 | return false; 107 | } 108 | 109 | if (!path.endsWith('md')) { 110 | return true; 111 | } 112 | } -------------------------------------------------------------------------------- /docs/scripts/versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "versions": [ 3 | 0.1, 4 | 0.2, 5 | 0.3, 6 | 0.4, 7 | 0.5, 8 | 0.6 9 | ], 10 | "currentVersion": 0.6 11 | } -------------------------------------------------------------------------------- /docs/scripts/video-speed-defaults.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | interface IDefaults { 4 | [path: string]: { 5 | size?: string; 6 | bitrate?: string; 7 | speed?: number; 8 | } 9 | } 10 | 11 | const defaultsInner: IDefaults = { 12 | './videos/guide/hello-world-intro.avi': { 13 | speed: 2 14 | }, 15 | './videos/guide/showcase/control-system-1.mp4' : { 16 | bitrate : '1000k' 17 | }, 18 | './videos/guide/showcase/system-monitor.mp4' : { 19 | bitrate : '512k' 20 | } 21 | } 22 | 23 | export const defaults: IDefaults = {}; 24 | Object.keys(defaultsInner).map((key) => { 25 | defaults[path.resolve(key)] = defaultsInner[key]; 26 | }); -------------------------------------------------------------------------------- /docs/snippets/auto-update.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'A brief introduction of the auto-updates feature.' 3 | author : nishkal 4 | tags : ['nodejs', 'javascript'] 5 | # title : 'Configuring build process' 6 | --- 7 | 8 | # Auto updates 9 | 10 |
11 | 12 | Quark comes pre-built with auto-updates feature. But this feature is only supported in a few distributions. 13 | 14 | ### Auto-updatable distributions 15 | * MacOS: DMG 16 | * Linux: AppImage 17 | * Windows: EXE 18 | 19 | Since Quark is currently a __beta software__, we are shipping updates almost daily. It is __highly reccomended__ that you only download these distributions to get the latest features and bug fixes. 20 | 21 | ### Release channels 22 | We support 2 release channels. 23 | 1. __Insiders release:__ Insiders has the most recent code pushes and may lead to the occasional broken build. New releases are published almost every other day. 24 | 2. __Stable release:__ Only stable releases are published on this channel. This channel may be updated once a month. 25 | 26 | By default, your release channel is set to __Stable__. You will need to change this setting to move to the insiders release. 27 | 28 | ### Selecting the release channel 29 | You can select the release channel from [settings](/guide/quark-ide.html#settings). (`Settings > General > Auto Updates > Release channel`) 30 | 31 | ![screenshot](~@buildAssets/release-channel.png =500x) 32 | 33 | ### Disabling auto-updates 34 | You can optionally choose to disable auto-updates feature from `Settings > General > Auto Updates > Disable auto-updates` 35 | 36 | -------------------------------------------------------------------------------- /docs/snippets/configuring-build.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Quark uses webpack behind the scenes to build your project. You would configure the build process, by adding a webpack config file.' 3 | author : nishkal 4 | tags : ['nodejs', 'javascript'] 5 | # title : 'Configuring build process' 6 | --- 7 | 8 | # Configuring build 9 | 10 |
11 | 12 | 13 | 14 | ##### Create the config file 15 | Create a `webpack.config.js` file at the root of your project. e.g. 16 | ``` 17 | . 18 | ├─ setup.js 19 | └─ webpack.config.js 20 | ``` 21 | 22 | ##### Add webpack config 23 | [Config reference](https://webpack.js.org) 24 | ```js 25 | // webpack.config.js 26 | module.exports = { 27 | ... 28 | } 29 | ``` 30 | 31 | !!! warning Caveats 32 | Quark uses an in-memory file system with webpack. This requires a little patch behind the scenes. The only thing you need to remember is that:- 33 | 1. The `entry` key must be an object with a `src` key. 34 | 2. The value of this key must concat `/src/` in front of the absolute file path of the file you want to be the entry point of your application. 35 | 36 | __Example:__ If your entry point file is `index.ts` at the root of your project, your config must look like this- 37 | 38 | ```js 39 | // . 40 | // ├─ setup.js 41 | // ├─ index.ts 42 | // └─ webpack.config.js 43 | { 44 | ... 45 | "entry": { 46 | "src" : "/src/index.ts" 47 | } 48 | } 49 | ``` 50 | 51 | __Example:__ If your entry point file is `index.ts` nested inside of a folder (`view`), your config must look like this- 52 | 53 | ```js 54 | // . 55 | // ├── view 56 | // │ └── index.ts 57 | // ├── setup.js 58 | // └── webpack.config.js 59 | { 60 | ... 61 | "entry": { 62 | "src" : "/src/view/index.ts" 63 | } 64 | } 65 | ``` 66 | !!! 67 | -------------------------------------------------------------------------------- /docs/snippets/convert-existing-electron-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : 'Convert existing electron app to a Quark sketch. In this guide, we are going to load an existing electron application into a webview and also bundle the application as a Quark sketch.' 3 | author : nishkal 4 | tags : ['nodejs', 'javascript'] 5 | pageClass: small-heading-page 6 | --- 7 | 8 | # Convert existing electron app to a sketch 9 | 10 |
11 | 12 | ##### Write the following code in the entry point of your application. In this case, `index.js` file. 13 | ```ts 14 | // index.ts 15 | import * as path from 'path'; 16 | import * as fs from 'fs'; 17 | import { remote } from 'electron'; 18 | 19 | quark.views.tabsviewController.hideNavbar(); 20 | 21 | const indexFilePath = path.resolve(`./${__projectfile}/index.html`); 22 | 23 | const view = quark.views.createTabsView('My Electron App', document.createElement('webview')); 24 | view.onDidConnectElement = () => { 25 | 26 | const url = `file://` + indexFilePath; 27 | 28 | let webview: Electron.WebviewTag = view.element as any; 29 | webview.setAttribute('src', url); 30 | webview.setAttribute('nodeintegration', ''); 31 | webview.setAttribute('style', "display:flex;height:100%"); 32 | 33 | const devtools = quark.util.createOutputChannel('App logs'); 34 | devtools.show(); 35 | 36 | webview.getWebContents().on('console-message', (e, level, message, line, sourceId) => { 37 | devtools.appendLine(message); 38 | }); 39 | 40 | const status = quark.util.createStatusBarItem(); 41 | status.text = 'Toggle dev tools'; 42 | status.show(); 43 | status.command = () => { 44 | webview.getWebContents().toggleDevTools(); 45 | } 46 | } 47 | view.focus(); 48 | ``` 49 | 50 | ##### Build and test the application. 51 | First build the application, and then package the application into the archive format. To pack the application, select `Builder: Package` command from the command palette. 52 | 53 | If the application was packed successfully, test the app by running the command `Run: Package`. -------------------------------------------------------------------------------- /docs/structures/ICommand.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # ICommand 9 | 10 | [[toc]] 11 | 12 | 20 | 21 | ### id 22 | * type `string` 23 | 24 | ### handle 25 | * type `Function` 26 | 27 | ### thisArg 28 | * type `any`(optional) 29 | 30 | ### label 31 | * type `string`(optional) 32 | 33 | ### dispose 34 | * type `Function` -------------------------------------------------------------------------------- /docs/structures/IKeyBindingRegister.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # IKeyBindingRegister 9 | 10 | [[toc]] 11 | 12 | ### addKeyBinding(keybindings[, when]) 13 | * arguments 14 | * keybindings - `string | Array` 15 | * when - `string`(optional) 16 | * returns `void` -------------------------------------------------------------------------------- /docs/structures/ISnackbarButton.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # SnackbarItem 9 | 10 | [[toc]] 11 | 12 | ### label 13 | * type `string` 14 | 15 | ### handle() 16 | * type `Function` 17 | 18 | ### icon 19 | * type `string` -------------------------------------------------------------------------------- /docs/structures/MemoryStore.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # MemoryStore 9 | 10 | [[toc]] 11 | 12 | ### get(path[, defaultValue]) 13 | Gets the property value at path of object. If the resolved value is undefined the defaultValue is used in its place. 14 | * arguments 15 | * path `string` 16 | * defaultValue `any`(optional) 17 | * returns `any` 18 | 19 | 20 | ### set(path, value) 21 | Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for missing index properties while objects are created for all other missing properties. 22 | * arguments 23 | * path `string` 24 | * value `any` 25 | * returns `any` 26 | 27 | 28 | ### update(path, updater) 29 | This method is like `set` except that accepts updater to produce the value to set. 30 | * arguments 31 | * path `string` 32 | * updater `(value) => any` 33 | * returns `any` 34 | 35 | ### has(path) 36 | Checks if path is a direct property of object. 37 | * arguments 38 | * path `string` 39 | * returns `boolean` 40 | 41 | 42 | ### delete(path) 43 | Deletes the property of the object. 44 | * arguments 45 | * path `string` 46 | * returns `void` 47 | 48 | 49 | ### size() 50 | Gets the size of collection by returning its length for array-like values or the number of own enumerable properties for objects. 51 | * returns `number` -------------------------------------------------------------------------------- /docs/structures/PersistantStore.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # PersistantStore 9 | 10 | [[toc]] 11 | 12 | ### get(path[, defaultValue]) 13 | Gets the property value at path of object. If the resolved value is undefined the defaultValue is used in its place. 14 | * arguments 15 | * path `string` 16 | * defaultValue `any`(optional) 17 | * returns `any` 18 | 19 | 20 | ### set(path, value) 21 | Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for missing index properties while objects are created for all other missing properties. 22 | * arguments 23 | * path `string` 24 | * value `any` 25 | * returns `any` 26 | 27 | 28 | ### update(path, updater) 29 | This method is like `set` except that accepts updater to produce the value to set. 30 | * arguments 31 | * path `string` 32 | * updater `(value) => any` 33 | * returns `any` 34 | 35 | ### has(path) 36 | Checks if path is a direct property of object. 37 | * arguments 38 | * path `string` 39 | * returns `boolean` 40 | 41 | 42 | ### delete(path) 43 | Deletes the property of the object. 44 | * arguments 45 | * path `string` 46 | * returns `void` 47 | 48 | 49 | ### size 50 | Gets the size of collection by returning its length for array-like values or the number of own enumerable properties for objects. 51 | * returns `number` 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | ### forceUpdate([, key]) 62 | Writes the store's data to the file system. 63 | * arguments 64 | * key `string`(optional) 65 | * returns `void` 66 | 67 | ### onDidChange(key, callback) 68 | Watches the given key, calling callback on any changes. When a key is first set oldValue will be undefined, and when a key is deleted newValue will be undefined. 69 | * arguments 70 | * key `string` 71 | * callback `(newValue, oldValue) => void` 72 | * returns `void` -------------------------------------------------------------------------------- /docs/structures/SnackbarItem.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # SnackbarItem 9 | 10 | [[toc]] 11 | 12 | ### buttons 13 | 14 | * type [`ISnackbarButton[]`](/structures/ISnackbarButton) 15 | 16 | ### dispose() 17 | * type `Function` 18 | 19 | ### duration 20 | * type `number` 21 | 22 | ### element 23 | * type `HTMLElement` 24 | 25 | ### id 26 | * type `string` 27 | 28 | ### message 29 | * type `string` 30 | 31 | ### show() 32 | * type `Function` 33 | * returns `void` 34 | 35 | ### type 36 | * type `"danger" | "success" | "warning" | "info"` -------------------------------------------------------------------------------- /docs/structures/bottomview-controller.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | view : 'bottomview' 6 | cover: ~@buildAssets/api/structures.png 7 | --- 8 | 9 | # BottomviewController 10 | 11 | [[toc]] 12 | 13 | ### getCurrentView() 14 | Returns the current {{$page.frontmatter.view}}. 15 | * returns [`ViewProvider`](/structures/view-provider.md) 16 | 17 | ### getCurrentView() 18 | Returns all registered {{$page.frontmatter.view}}s. 19 | * returns `Array` 20 | 21 | 22 | ### isNavbarVisible() 23 | Returns boolean. 24 | * returns `boolean` 25 | 26 | 27 | ### toggleNavbar() 28 | Toggles the navbar. 29 | * returns `void` 30 | 31 | 32 | ### hideNavbar() 33 | Hides the navbar. 34 | * returns `void` 35 | 36 | 37 | ### showNavbar() 38 | Shows the navbar. 39 | * returns `void` 40 | 41 | 42 | ### selectNextView() 43 | Selects the next {{$page.frontmatter.view}}. 44 | * returns `void` 45 | 46 | 47 | ### selectPreviousView() 48 | Selects the previous {{$page.frontmatter.view}}. 49 | * returns `void` 50 | 51 | 52 | ### triggerUpdate() 53 | Triggers {{$page.frontmatter.view}} update. 54 | * returns `void` 55 | 56 | 57 | ### removeView(view) 58 | Removed the view. 59 | * arguments 60 | * view - [`ViewProvider`](/structures/view-provider.md) 61 | * returns `void` 62 | 63 | ### getViewById(id) 64 | Removed the view. 65 | * arguments 66 | * id - `string` 67 | * returns `void` 68 | 69 | ### setView(view) 70 | Removed the view. 71 | * arguments 72 | * view - [`ViewProvider`](/structures/view-provider.md) 73 | * returns `void` 74 | 75 | ### isVisible() 76 | Returns boolean 77 | * returns `boolean` 78 | 79 | ### toggle() 80 | Toggles view visibility. 81 | * returns `void` 82 | 83 | ### hide() 84 | Hides the view. 85 | * returns `void` 86 | 87 | ### show() 88 | Shows the view. 89 | * returns `void` 90 | 91 | ### maximize() 92 | Maximizes the view. 93 | * returns `void` 94 | 95 | ### minimize() 96 | Minimized the view. 97 | * returns `void` -------------------------------------------------------------------------------- /docs/structures/button-field.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # ButtonField 9 | 10 | [[toc]] 11 | 12 | ### label 13 | * type `string` 14 | 15 | ### handle 16 | * type `Function` 17 | 18 | ### icon 19 | * type `string`(optional) -------------------------------------------------------------------------------- /docs/structures/context-menu-ref.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # ContextMenuRef 9 | 10 | [[toc]] 11 | 12 | ## Methods 13 | 14 | ### dispose() 15 | Removed the menu and clears the associated resources. 16 | * returns `void` 17 | 18 | ### update(menu) 19 | Updates the menu. 20 | * arguments 21 | * menu [`Array`](/structures/menu-item.md) 22 | * returns `void` 23 | 24 | ### show(x, y) 25 | Shows the ContextMenu at the specified x and y positions. 26 | * arguments 27 | * x `number` 28 | * y `number` 29 | * returns `void` 30 | 31 | ## Properties 32 | 33 | ### items 34 | Menu items. 35 | * type [`Array`](/structures/menu-item.md) 36 | 37 | -------------------------------------------------------------------------------- /docs/structures/icon.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # Icon 9 | 10 | [[toc]] 11 | 12 | ### name 13 | The name of the icon. 14 | * type `string` 15 | 16 | ### path 17 | The path of the icon file. 18 | * type `string` -------------------------------------------------------------------------------- /docs/structures/input-field.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # InputField 9 | 10 | [[toc]] 11 | 12 | ### placeholder 13 | Placeholder for the select field. 14 | * type `string` 15 | 16 | ### currentValue 17 | Current value of the select field. Must be one of the values provided in `options` array. 18 | * type `Function` 19 | 20 | ### isHidden 21 | Controls whether the field is visible or hidden. 22 | * type `boolean` 23 | 24 | ### handle 25 | * type `(value?: string) => void` -------------------------------------------------------------------------------- /docs/structures/menu-item.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # MenuItem 9 | 10 | [[toc]] 11 | 12 | ### label 13 | Label of the menu item. 14 | * type `string` 15 | 16 | ### command 17 | Command to execute on click. 18 | * type `string | Function`(optional) 19 | 20 | ### children 21 | Children of the menu item. 22 | * type `Array`(optional) 23 | 24 | ### divider 25 | Controls whether to show divider or not. 26 | * type `boolean`(optional) 27 | 28 | ### icon 29 | Icon to show at the menu item. 30 | * type `string`(optional) 31 | 32 | 33 | ### disabled 34 | Icon to show at the menu item. 35 | * type `boolean`(optional) -------------------------------------------------------------------------------- /docs/structures/menu-ref.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # MenuRef 9 | 10 | [[toc]] 11 | 12 | ## Methods 13 | 14 | ### dispose() 15 | Removed the menu and clears the associated resources. 16 | * returns `void` 17 | 18 | ### update(menu) 19 | Updates the menu. 20 | * arguments 21 | * menu [`Array`](/structures/menu-item.md) 22 | * returns `void` 23 | 24 | ## Properties 25 | 26 | ### items 27 | Menu items. 28 | * type [`Array`](/structures/menu-item.md) 29 | 30 | -------------------------------------------------------------------------------- /docs/structures/select-field.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # SelectField 9 | 10 | [[toc]] 11 | 12 | ### placeholder 13 | Placeholder for the select field. 14 | * type `string` 15 | 16 | ### currentValue 17 | Current value of the select field. Must be one of the values provided in `options` array. 18 | * type `Function` 19 | 20 | ### isHidden 21 | Controls whether the field is visible or hidden. 22 | * type `boolean` 23 | 24 | ### options 25 | * type `Array` 26 | 27 | ### viewOptions 28 | * type `Array` 29 | 30 | ### handle 31 | * type `(option?: string) => void` -------------------------------------------------------------------------------- /docs/structures/sideview-controller.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | view : 'sideview' 7 | --- 8 | 9 | # SideviewController 10 | 11 | [[toc]] 12 | 13 | ### getCurrentView() 14 | Returns the current {{$page.frontmatter.view}}. 15 | * returns [`ViewProvider`](/structures/view-provider.md) 16 | 17 | ### getCurrentView() 18 | Returns all registered {{$page.frontmatter.view}}s. 19 | * returns `Array` 20 | 21 | 22 | ### isNavbarVisible() 23 | Returns boolean. 24 | * returns `boolean` 25 | 26 | 27 | ### toggleNavbar() 28 | Toggles the navbar. 29 | * returns `void` 30 | 31 | 32 | ### hideNavbar() 33 | Hides the navbar. 34 | * returns `void` 35 | 36 | 37 | ### showNavbar() 38 | Shows the navbar. 39 | * returns `void` 40 | 41 | 42 | ### selectNextView() 43 | Selects the next {{$page.frontmatter.view}}. 44 | * returns `void` 45 | 46 | 47 | ### selectPreviousView() 48 | Selects the previous {{$page.frontmatter.view}}. 49 | * returns `void` 50 | 51 | 52 | ### triggerUpdate() 53 | Triggers {{$page.frontmatter.view}} update. 54 | * returns `void` 55 | 56 | 57 | ### removeView(view) 58 | Removed the view. 59 | * arguments 60 | * view - [`ViewProvider`](/structures/view-provider.md) 61 | * returns `void` 62 | 63 | ### getViewById(id) 64 | Removed the view. 65 | * arguments 66 | * id - `string` 67 | * returns `void` 68 | 69 | ### setView(view) 70 | Removed the view. 71 | * arguments 72 | * view - [`ViewProvider`](/structures/view-provider.md) 73 | * returns `void` 74 | 75 | ### isVisible() 76 | Returns boolean 77 | * returns `boolean` 78 | 79 | ### toggle() 80 | Toggles view visibility. 81 | * returns `void` 82 | 83 | ### hide() 84 | Hides the view. 85 | * returns `void` 86 | 87 | ### show() 88 | Shows the view. 89 | * returns `void` 90 | 91 | ### maximize() 92 | Maximizes the view. 93 | * returns `void` 94 | 95 | ### minimize() 96 | Minimized the view. 97 | * returns `void` -------------------------------------------------------------------------------- /docs/structures/tabsview-controller.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | view : 'tabsview' 7 | --- 8 | 9 | # TabsviewController 10 | 11 | [[toc]] 12 | 13 | ### getCurrentView() 14 | Returns the current {{$page.frontmatter.view}}. 15 | * returns [`ViewProvider`](/structures/view-provider.md) 16 | 17 | ### getCurrentView() 18 | Returns all registered {{$page.frontmatter.view}}s. 19 | * returns `Array` 20 | 21 | 22 | ### isNavbarVisible() 23 | Returns boolean. 24 | * returns `boolean` 25 | 26 | 27 | ### toggleNavbar() 28 | Toggles the navbar. 29 | * returns `void` 30 | 31 | 32 | ### hideNavbar() 33 | Hides the navbar. 34 | * returns `void` 35 | 36 | 37 | ### showNavbar() 38 | Shows the navbar. 39 | * returns `void` 40 | 41 | 42 | ### selectNextView() 43 | Selects the next {{$page.frontmatter.view}}. 44 | * returns `void` 45 | 46 | 47 | ### selectPreviousView() 48 | Selects the previous {{$page.frontmatter.view}}. 49 | * returns `void` 50 | 51 | 52 | ### triggerUpdate() 53 | Triggers {{$page.frontmatter.view}} update. 54 | * returns `void` 55 | 56 | 57 | ### removeView(view) 58 | Removed the view. 59 | * arguments 60 | * view - [`ViewProvider`](/structures/view-provider.md) 61 | * returns `void` 62 | 63 | ### getViewById(id) 64 | Removed the view. 65 | * arguments 66 | * id - `string` 67 | * returns `void` 68 | 69 | ### setView(view) 70 | Removed the view. 71 | * arguments 72 | * view - [`ViewProvider`](/structures/view-provider.md) 73 | * returns `void` -------------------------------------------------------------------------------- /docs/structures/view-provider.md: -------------------------------------------------------------------------------- 1 | --- 2 | description : '' 3 | author : nishkal 4 | tags : ['structures', 'api'] 5 | cover: ~@buildAssets/api/structures.png 6 | --- 7 | 8 | # ViewProvider 9 | 10 | [[toc]] 11 | 12 | ## Methods 13 | 14 | ### dispose() 15 | Removes the view 16 | * returns `void` 17 | 18 | ### isVisible() 19 | Returns boolean. 20 | * returns `void` 21 | 22 | ### hide() 23 | Hides the view. 24 | * returns `void` 25 | 26 | ### show() 27 | Shows the view. 28 | * returns `void` 29 | 30 | ### isFocused() 31 | Returns `true` if the view is focused. 32 | * returns `boolean` 33 | 34 | ### blur() 35 | Removes the focus from view and selects previous view. 36 | * returns `boolean` 37 | 38 | 39 | 40 | 41 | 42 | ### onWillCreateElement() 43 | Removes the focus from view and selects previous view. 44 | * returns `void` 45 | 46 | ### onDidCreateElement() 47 | Removes the focus from view and selects previous view. 48 | * returns `void` 49 | 50 | ### onDidConnectElement() 51 | Removes the focus from view and selects previous view. 52 | * returns `void` 53 | 54 | ### onWillRemoveElement() 55 | Removes the focus from view and selects previous view. 56 | * returns `void` 57 | 58 | ### onDidRemoveElement() 59 | Removes the focus from view and selects previous view. 60 | * returns `void` 61 | 62 | ### onCanEnterView() 63 | Removes the focus from view and selects previous view. 64 | * returns `Promise | boolean` 65 | 66 | ### onDidEnterView() 67 | Removes the focus from view and selects previous view. 68 | * returns `void` 69 | 70 | ### onCanRemoveView() 71 | Removes the focus from view and selects previous view. 72 | * returns `Promise | boolean` 73 | 74 | ### onDidRemoveView() 75 | Removes the focus from view and selects previous view. 76 | * returns `void` 77 | 78 | ### getProgressBarValue() 79 | Removes the focus from view and selects previous view. 80 | * returns `number | 'indeterminate'` 81 | 82 | 83 | ### setProgressBar([value]) 84 | Removes the focus from view and selects previous view. 85 | * arguments 86 | * value `number` 87 | * returns `void` 88 | 89 | 90 | 91 | 92 | 93 | 94 | ## Properties 95 | 96 | ### label 97 | * type `string` 98 | 99 | ### element 100 | * type `Element` 101 | 102 | ### keepConnected 103 | * type `boolean` 104 | 105 | ### busy 106 | * type `boolean` 107 | 108 | ### badge 109 | * type `string | number` 110 | 111 | ### icon 112 | * type `string` 113 | 114 | ### tooltip 115 | * type `string` 116 | 117 | ### data 118 | * type `any` 119 | 120 | ### actionIcon 121 | * type `string` 122 | 123 | ### contextMenu 124 | * type [`ContextMenuRef`](/) 125 | 126 | ### buttons 127 | * type [`Array`](/) 128 | 129 | ### inputField 130 | * type [`InputField`](/) 131 | 132 | ### selectField 133 | * type [`SelectField`](/) 134 | -------------------------------------------------------------------------------- /docs/style-guide/README.md: -------------------------------------------------------------------------------- 1 | # Style Guide 2 | 3 | This is the official style guide for Quark-specific code. This is a great reference to avoid errors, bikeshedding, and anti-patterns for projects made with Quark. However, we don’t believe that any style guide is ideal for all teams or projects, so mindful deviations are encouraged based on past experience and the surrounding tech stack. 4 | 5 | For the most part, we also avoid suggestions about JavaScript or HTML in general. We don’t mind whether you use semicolons or trailing commas. We don’t mind whether your HTML uses single-quotes or double-quotes for attribute values. Some exceptions will exist however, where we’ve found that a particular pattern is helpful in the context of Quark. -------------------------------------------------------------------------------- /docs/style-guide/creating-templates.md: -------------------------------------------------------------------------------- 1 | # Creating Templates 2 | 3 | There are several ways in which -------------------------------------------------------------------------------- /docs/travis-secrets.tar.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/docs/travis-secrets.tar.enc -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "allowSyntheticDefaultImports": true, 5 | "importHelpers": true, 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": false, 8 | "declaration": false, 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "target": "es5", 13 | "lib": [ 14 | "es2018", 15 | "dom" 16 | ], 17 | "baseUrl": "./", 18 | "module": "commonjs", 19 | "types": [ 20 | "node" 21 | ], 22 | "typeRoots": [ 23 | "node_modules/@types" 24 | ], 25 | "strict": false, 26 | "skipLibCheck": true, 27 | "allowJs": true, 28 | "strictNullChecks": false 29 | }, 30 | "include": [ 31 | "./" 32 | ], 33 | "exclude": [ 34 | "**/node_modules/**/*", 35 | "scripts", 36 | "**/@squirtle/api/**" 37 | ] 38 | } -------------------------------------------------------------------------------- /docs/version-assets/insiders/__broken-releases.json: -------------------------------------------------------------------------------- 1 | [ 2 | "0.3.8", 3 | "0.4.0", 4 | "0.4.2", 5 | "0.4.3", 6 | "0.5.3", 7 | "0.5.4", 8 | "0.6.1", 9 | "0.6.3" 10 | ] -------------------------------------------------------------------------------- /docs/version-assets/insiders/__downloads.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.6.4", 3 | "channel": "insiders", 4 | "linux_main": "Quark-linux-x86_64-0.6.4.AppImage", 5 | "linux_other": "[\"Quark-linux-amd64-0.6.4.deb\",\"Quark-linux-x64-0.6.4.tar.gz\"]", 6 | "windows_main": "Quark-win-0.6.4.exe", 7 | "windows_other": "[\"Quark-win-x64-0.6.4.msi\",\"Quark-win-x64-0.6.4.zip\"]", 8 | "darwin_main": "Quark-mac-0.6.4.dmg", 9 | "darwin_other": "[\"Quark-mac-0.6.4.zip\"]" 10 | } -------------------------------------------------------------------------------- /docs/version-assets/insiders/__shasum.json: -------------------------------------------------------------------------------- 1 | { 2 | "Quark-win-0.6.4.exe": "NWBInY86gRb9vjLjJ4yvmHL9NfJD3aREh6kD5sNQPH7DiepG5iP7kuceDCOoyL40mh0GAkWRrysNpEMVlpcJHg==", 3 | "Quark-win-x64-0.6.4.msi": "YFmL3LyxiZ/tG0WtpjwSfONLRujH7bBA+3MAi23vxuk2e96BW7OXXUjXm2sYxV/6xBlxK3zt/Yi9Zha573zkag==", 4 | "Quark-win-x64-0.6.4.zip": "rQ7IJzrV2wEZjP63+UIi1oPp8RAAQiLw4reejeUpeOQ/YfDDbFuxIF8ji40wsZyqb5so//69f8fXs1RJiQTzgg==", 5 | "Quark-linux-amd64-0.6.4.deb": "koBaXZPYa2/B+aVfTPJhOkv4Eyf/pbNkLpZGPYIZqHhjSAU0AP3gvLjLpcQV50m1XlyNRQrEMo3SzsV+19Dlug==", 6 | "Quark-linux-x64-0.6.4.tar.gz": "BskTQcPovdc1fKIWyVQdnkSXn0mJg+7LDpZcO/NKG8353c/nBbmHWpI4tzb++9V9lcnQTSff3G9TSoAryed3kA==", 7 | "Quark-linux-x86_64-0.6.4.AppImage": "8Q7kd8koo/bf9638beVZRra16vXpmb+8vpmNMo+vBCoJQJOeJfJ2aa/LBK20bU5w4oRpQg4B8a7M7QUm88O3Lg==", 8 | "Quark-mac-0.6.4.zip": "eQFEp9G5hz5l/zDygMmD4rmBGd0AwH2InMlimUv7veYDl/EzEu/XKPVXvK28J90KhSxVUeuj8TjDZKTV7ttxVw==", 9 | "Quark-mac-0.6.4.dmg": "7NAewgqi4Tojxo1UC4FebLkmCoq7iGuphbn2rKp7trPeVSAhORFSeMwwpjZn8GidqheTFguBOpA0F5G4LaLTpQ==" 10 | } -------------------------------------------------------------------------------- /docs/version-assets/stable/__broken-releases.json: -------------------------------------------------------------------------------- 1 | [ 2 | "0.3.8", 3 | "0.4.0", 4 | "0.4.2", 5 | "0.4.3", 6 | "0.5.3", 7 | "0.5.4", 8 | "0.6.1" 9 | ] -------------------------------------------------------------------------------- /docs/version-assets/stable/__downloads.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.6.2", 3 | "channel": "stable", 4 | "linux_main": "Quark-linux-x86_64-0.6.2.AppImage", 5 | "linux_other": "[\"Quark-linux-amd64-0.6.2.deb\",\"Quark-linux-x64-0.6.2.tar.gz\"]", 6 | "windows_main": "Quark-win-0.6.2.exe", 7 | "windows_other": "[\"Quark-win-x64-0.6.2.msi\",\"Quark-win-x64-0.6.2.zip\"]", 8 | "darwin_main": "Quark-mac-0.6.2.dmg", 9 | "darwin_other": "[\"Quark-mac-0.6.2.zip\"]" 10 | } -------------------------------------------------------------------------------- /docs/version-assets/stable/__shasum.json: -------------------------------------------------------------------------------- 1 | { 2 | "Quark-win-0.6.2.exe": "AxbhzSej8eL76UDOnRNCRyP2GiaP4tYltbhZXAi6A7JlEBH7jVBz+PXDTqoCAXx8NAAxkK8imOcgIjA2HMVQ5g==", 3 | "Quark-win-x64-0.6.2.msi": "WYKOCuJsmqiJ5B4FRg362ozllzOmB0oaBW7nawJY9dcH53di7W9MU/FVMUx+HV7zqxV5lRhlu5G2xVnwsJh37A==", 4 | "Quark-win-x64-0.6.2.zip": "a/skPj9QuzDJxFVaInj/G7v6ruiznZZV/84vWBPS3T/gX+IUNPDrNvUZ4i2Rxtpu4TNzi5JAN6NKM5YmYSUZZw==", 5 | "Quark-linux-amd64-0.6.2.deb": "eJNcvSNoV7sfruJXMEV3ZwTeYpjMC96nqRX+CbK7J9nSNyGvG3V40BVSRfUY1R1uPTEypvdODV5V/5VJlUC46A==", 6 | "Quark-linux-x64-0.6.2.tar.gz": "67qa3hLh9cX2tAvOBxKBWk/S13mx+c3ifIVNaTBH4zOh6TJveGcmcB44raVxBZKCL9rvup/v9MF6pTm/KfH49w==", 7 | "Quark-linux-x86_64-0.6.2.AppImage": "gt6AmiJt68U96cTD8b7cBBJY3oKiRPLGVlPFaHme4mt/de8hfyHnS9hV713lIlv06rmHASYwYl5viQ8WVEf9Og==", 8 | "Quark-mac-0.6.2.zip": "Uq4Z5Kn6x4LILe+n5mLcAR53ZJqkEnPt3McdajYpZaL87hlljbPPUGavGteC8WUJNOISwj60FchQ2VjlVMtRHA==", 9 | "Quark-mac-0.6.2.dmg": "NLc9hpiDTooV27GjadlWAr6ewMRRKmb5W6fNWJz31GdUC/hixkABO6jm3SFrxZ5+GloNxhPXEdBkLtnesqeoZg==" 10 | } -------------------------------------------------------------------------------- /images/control-system.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/control-system.gif -------------------------------------------------------------------------------- /images/hello-world.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/hello-world.gif -------------------------------------------------------------------------------- /images/news-app.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/news-app.gif -------------------------------------------------------------------------------- /images/plot-charts.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/plot-charts.gif -------------------------------------------------------------------------------- /images/stock-analyzing-app.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/stock-analyzing-app.gif -------------------------------------------------------------------------------- /images/system-monitor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/system-monitor.gif -------------------------------------------------------------------------------- /images/web-browser.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nishkalkashyap/Quark-docs/014c0e96557aa720fc226dc424098f56cef1cf6c/images/web-browser.gif --------------------------------------------------------------------------------