├── .babelrc ├── .editorconfig ├── .env ├── .env.development ├── .env.example ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── .vscode └── settings.json ├── Dockerfile-Mac ├── Dockerfile-WSL ├── LICENSE ├── README.md ├── __mocks__ └── styleMock.js ├── babel.config.js ├── chrome.json ├── electron-builder miniguide.md ├── electron-builder.yml ├── jest.config.js ├── package-lock.json ├── package.json ├── package.json_notes.md ├── public ├── favicon.ico └── icons │ ├── favicon-128x128.png │ ├── favicon-32x32.png │ └── favicon-96x96.png ├── quasar.conf.js ├── quasar.extensions.json ├── quasar.testing.json ├── src-electron ├── electron-env.d.ts ├── electron-flag.d.ts ├── electron-main.ts ├── electron-preload.ts └── icons │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── tileIconLinux.png │ ├── tileIconMac.icns │ └── tileIconWin.ico ├── src-pwa └── pwa-flag.d.ts ├── src ├── App.vue ├── assets │ ├── HTMLtag.png │ ├── OverVue_navLogo.png │ ├── ReadMe325x325.svg │ ├── add-props.png │ ├── add-removeChild.png │ ├── add_removeChild.png │ ├── alert.png │ ├── app_logo106x23.png │ ├── app_logo106x23.svg │ ├── badge.png │ ├── banner.png │ ├── bar.png │ ├── button.png │ ├── card.png │ ├── checkbox.png │ ├── checkboxbutton.png │ ├── colorpicker.png │ ├── component-details.png │ ├── component.png │ ├── create_component_box.png │ ├── datepicker.png │ ├── delete-component.png │ ├── dropdown.png │ ├── export-API.png │ ├── export.png │ ├── form.png │ ├── gear.png │ ├── github.png │ ├── google.svg │ ├── grid-mode.png │ ├── html-queue.png │ ├── icon_component_no_note.png │ ├── icon_component_with_note.png │ ├── import.png │ ├── inputButton.png │ ├── inputbox.png │ ├── interactive-tree.png │ ├── link.png │ ├── modal.png │ ├── nested-elements.png │ ├── options-composition-API.png │ ├── overvue_256x256.png │ ├── overvue_256x256_old.png │ ├── overvue_layeredlogo.png │ ├── overvue_layeredlogo_old.png │ ├── plussign.png │ ├── project-tree.png │ ├── props.png │ ├── quasar-logo-vertical.svg │ ├── readme │ │ ├── AddStateActions.gif │ │ └── CreateComponents.gif │ ├── right_sidebar325x325.png │ ├── right_sidebar325x325.svg │ ├── rightsidebar.png │ ├── routes.png │ ├── save.png │ ├── slider.png │ ├── snaptogrid.jpg │ ├── state-actions.png │ ├── styleAdjuster.png │ ├── tag.png │ ├── tileIcon.svg │ ├── tinypalatte.png │ ├── tree.png │ ├── trialLogo.svg │ ├── typescript.png │ ├── undo_redo.png │ ├── upload-mockups.png │ ├── vuetensils.png │ └── zindex-1.png ├── boot │ ├── .gitkeep │ └── pinia.js ├── components │ ├── Canvas.vue │ ├── composables │ │ ├── useCreateComponent.js │ │ ├── useExportComponent.js │ │ └── useExportComponent.ts │ ├── left-sidebar │ │ ├── ComponentTab │ │ │ ├── ActionsSubMenu.vue │ │ │ ├── AttributesSubMenu.vue │ │ │ ├── ComponentTab.vue │ │ │ ├── CreateMenu.vue │ │ │ ├── Icons.vue │ │ │ ├── ImportComponent.vue │ │ │ ├── InputHTMLMenu.vue │ │ │ ├── ParentMultiselect.vue │ │ │ ├── PropsSubMenu.vue │ │ │ ├── StateSubMenu.vue │ │ │ ├── UpdateMenu.vue │ │ │ └── Vuetensils.vue │ │ └── StoreTab │ │ │ └── StoreTab.vue │ ├── nav-buttons │ │ ├── ExportMenu.vue │ │ ├── ExportMenuOptions.vue │ │ ├── GridDensity.vue │ │ ├── ImportMenu.vue │ │ └── SaveProject.vue │ ├── right-sidebar │ │ ├── CodeSnippet.vue │ │ ├── ComponentDetails.vue │ │ ├── DraggableWrapper.vue │ │ ├── GetStarted.vue │ │ ├── HTMLElementsList.vue │ │ ├── RightSidebar.vue │ │ ├── Routes.vue │ │ ├── RoutesTab.vue │ │ ├── Tree.vue │ │ ├── createBoilerFuncs.ts │ │ └── tutorial │ │ │ ├── AdvancedFunctions.vue │ │ │ ├── BasicFunctions.vue │ │ │ ├── Landing.vue │ │ │ └── NewVersionInfo.vue │ └── slack_login │ │ └── SlackLoginWindow.vue ├── css │ ├── app.scss │ └── quasar.variables.scss ├── customTypings │ ├── overvue__vue3-tree-chart.d.ts │ ├── prismjs.d.ts │ ├── ssthouse__vue3-tree-chart.d.ts │ ├── types__vue-draggable-resizable.d.ts │ └── vue-multiselect.d.ts ├── index.template.html ├── layouts │ └── MyLayout.vue ├── mixins │ └── writeNested.js ├── pages │ ├── Error404.vue │ ├── Index.vue │ └── Index2.vue ├── quasar.d.ts ├── router │ ├── index.js │ └── routes.js ├── shims-vue.d.ts ├── statics │ ├── icons │ │ ├── overvue-logo.ico │ │ ├── overvue-prod-logo.png │ │ └── safari-pinned-tab.svg │ └── overvue-logo.png ├── stores │ ├── actions.ts │ ├── index.js │ ├── main.js │ ├── state │ │ ├── htmlElementMap.ts │ │ ├── icons.ts │ │ └── index.ts │ └── store-flag.d.ts └── utils │ ├── clearImage.util.js │ ├── search.util.js │ └── uploadImage.util.js ├── test └── jest │ ├── .eslintrc.js │ ├── .gitignore │ ├── __tests__ │ ├── App.spec.js │ ├── MyButton.spec.js │ ├── activeComponent.spec.js │ ├── booleanToggles.spec.js │ ├── demo │ │ ├── MyButton.vue │ │ └── MyDialog.vue │ ├── dragAndDropTest.spec.js │ ├── htmlElements.spec.js │ ├── noteTests.spec.js │ ├── openProject.spec.js │ ├── routeTests.spec.js │ ├── stateChangeTest.spec.js │ └── uploadImage.spec.js │ └── jest.setup.js ├── tsconfig.json └── types.ts /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["@babel/plugin-syntax-dynamic-import"], 3 | "env": { 4 | "test": { 5 | "plugins": ["dynamic-import-node"], 6 | "presets": [ 7 | [ 8 | "@babel/preset-env", 9 | { 10 | "modules": "commonjs", 11 | "targets": { 12 | "node": "current" 13 | } 14 | } 15 | ] 16 | ] 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | SLACK_CLIENT_SECRET = "f58eea5761562d05dfa266207726f2aa" 2 | SLACK_CLIENT_ID = "4070788123922.4067827840757" 3 | SLACK_REDIRECT_URI = "https://app.slack.com/client/T0422P63MT4/C041W53TYBG?redir=%2Fapi%2Fapps%3Fnew_app%3D1" 4 | 5 | # SLACK_CLIENT_ID = 2863575808677.2851894215719 6 | # SLACK_CLIENT_SECRET = "f2298f5fbb83d842616711d19c829a45" 7 | # SLACK_REDIRECT_URI = "overvue://slack" -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | SLACK_CLIENT_SECRET = "f58eea5761562d05dfa266207726f2aa" 2 | SLACK_CLIENT_ID = "4070788123922.4067827840757" 3 | SLACK_REDIRECT_URI = "https://app.slack.com/client/T0422P63MT4/C041W53TYBG?redir=%2Fapi%2Fapps%3Fnew_app%3D1" 4 | 5 | # SLACK_CLIENT_ID = "2863575808677.2851894215719" 6 | # SLACK_CLIENT_SECRET = "f2298f5fbb83d842616711d19c829a45" 7 | # SLACK_REDIRECT_URI = "overvuedev://test" -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | #DO NOT DELETE THIS FILE, and follow instructions: 2 | # Required for Slack Oauth features 3 | # Create TWO files, one named ".env" and the second named ".env.development" in this directory, and give them the following variables 4 | # Any environment variables you create MUST also be created here in .env.example 5 | 6 | SLACK_CLIENT_SECRET = "ENTER_CLIENT_SECRET_HERE" 7 | SLACK_CLIENT_ID = "ENTER_CLIENT_ID_HERE" 8 | SLACK_REDIRECT_URI = "REDIRECT URL HERE" 9 | 10 | # https://www.npmjs.com/package/dotenv 11 | # https://www.npmjs.com/package/quasar-dotenv 12 | # https://v1.quasar.dev/quasar-cli/handling-process-env 13 | # https://v1.quasar.dev/quasar-cli/quasar-conf-js#using-dotenv -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /src-bex/www 3 | /src-capacitor 4 | /src-cordova 5 | /src 6 | /.quasar 7 | /node_modules 8 | .eslintrc.js 9 | babel.config.js 10 | /src/components/Canvas.vue -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy 3 | // This option interrupts the configuration hierarchy at this file 4 | // Remove this if you have an higher level ESLint config file (it usually happens into a monorepos) 5 | root: true, 6 | 7 | rules: { 8 | 'vue/no-deprecated-slot-attribute': 'off', 9 | }, 10 | 11 | "parser": "vue-eslint-parser", 12 | parserOptions: { 13 | ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features 14 | parser: { //attempt to speed up runtime using TS when coding 15 | "ts":'@typescript-eslint/parser', 16 | "