diff --git a/efm-demo-web/.browserslistrc b/efm-demo-web/.browserslistrc new file mode 100644 index 0000000..eb02997 --- /dev/null +++ b/efm-demo-web/.browserslistrc @@ -0,0 +1,14 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/efm-demo-web/.editorconfig b/efm-demo-web/.editorconfig new file mode 100644 index 0000000..0301b00 --- /dev/null +++ b/efm-demo-web/.editorconfig @@ -0,0 +1,14 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/efm-demo-web/.eslintrc.json b/efm-demo-web/.eslintrc.json new file mode 100644 index 0000000..305007c --- /dev/null +++ b/efm-demo-web/.eslintrc.json @@ -0,0 +1,177 @@ +{ + "root": true, + "ignorePatterns": [ + "src/test.ts", + "**/*.spec.ts", + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "spaced-comment": [ + "error", + "always", + { + "line": { + "markers": [ + "/" + ], + "exceptions": [ + "-", + "+" + ] + }, + "block": { + "markers": [ + "!" + ], + "exceptions": [ + "*" + ], + "balanced": true + } + } + ], + "curly": [ + "error", + "all" + ], + "eol-last": "error", + "guard-for-in": "error", + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + "no-labels": "error", + "max-len": [ + "error", + 140, + 4 + ], + "no-caller": "error", + "no-bitwise": "error", + "no-console": "off", + "no-restricted-syntax": [ + "error", + { + "selector": "CallExpression[callee.object.name=\"console\"][callee.property.name!=/^(log|warn|error|info|trace)$/]", + "message": "Unexpected property on console object was called" + } + ], + "no-new-wrappers": "error", + "no-debugger": "error", + "no-empty": "off", + "no-eval": "error", + "no-shadow": [ + "error", + { + "hoist": "functions" + } + ], + "no-throw-literal": "error", + "no-fallthrough": "error", + "no-trailing-spaces": "error", + "no-unused-expressions": [ + "error", + { + "allowTernary": true + } + ], + "no-var": "error", + "prefer-const": [ + "error", + { + "destructuring": "any", + "ignoreReadBeforeAssign": false + } + ], + "quotes": [ + "error", + "single", + { + "allowTemplateLiterals": true, + "avoidEscape": true + } + ], + "radix": "error", + "semi": [ + "error", + "always" + ], + "eqeqeq": [ + "error", + "allow-null" + ], + "camelcase": "off", + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": [ + "app", + "cust" + ], + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "app", + "cust" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/no-inputs-metadata-property": "error", + "@angular-eslint/no-outputs-metadata-property": "error", + "@angular-eslint/no-host-metadata-property": "error", + "@angular-eslint/no-input-rename": "error", + "@angular-eslint/no-output-rename": "error", + "@angular-eslint/use-lifecycle-interface": "error", + "@angular-eslint/use-pipe-transform-interface": "error", + "@angular-eslint/component-class-suffix": "error", + "@angular-eslint/directive-class-suffix": "error", + "@angular-eslint/use-component-view-encapsulation": "off", + "@angular-eslint/no-attribute-decorator": "error", + "@angular-eslint/no-output-native": "error", + "@angular-eslint/no-output-on-prefix": "error", + "@angular-eslint/no-forward-ref": "off", + "@angular-eslint/no-unused-css": "off", + "@angular-eslint/contextual-lifecycle": "error", + "@angular-eslint/no-pipe-impure": "error", + "@angular-eslint/no-empty-lifecycle-method": [ + "off" + ], + "@angular-eslint/no-conflicting-lifecycle": "off" + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} \ No newline at end of file diff --git a/efm-demo-web/.gitignore b/efm-demo-web/.gitignore new file mode 100644 index 0000000..2c4733a --- /dev/null +++ b/efm-demo-web/.gitignore @@ -0,0 +1,54 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +/doc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db +package-lock.json + +gitDiff.sh +.update + +# SonarQube +.scannerwork +sonar-project.properties +.microsite/node_modules/ +.microsite/src/static/package-umd/ +.microsite/src/static/.version/ diff --git a/efm-demo-web/.npmrc b/efm-demo-web/.npmrc new file mode 100644 index 0000000..e702a21 --- /dev/null +++ b/efm-demo-web/.npmrc @@ -0,0 +1,4 @@ +registry=https://registry.npmmirror.com +unsafe-perm=true +@webdpt:registry=https://repo.digiwincloud.com.cn/maven/repository/npm-webdpt/ +@athena:registry=https://repo.digiwincloud.com.cn/maven/repository/npm-athena/ \ No newline at end of file diff --git a/efm-demo-web/.vscode/launch.json b/efm-demo-web/.vscode/launch.json new file mode 100644 index 0000000..7bbd5a9 --- /dev/null +++ b/efm-demo-web/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch via NPM", + "runtimeExecutable": "npm", + "runtimeArgs": [ + "run-script", + "schematics-debug" + ], + "stopOnEntry": true, + "port": 9229, + "skipFiles": [ + "/**" + ], + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" + ], + } + ] +} diff --git a/efm-demo-web/.vscode/settings.json b/efm-demo-web/.vscode/settings.json new file mode 100644 index 0000000..d7207a4 --- /dev/null +++ b/efm-demo-web/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules\\typescript\\lib" +} \ No newline at end of file diff --git a/efm-demo-web/README.md b/efm-demo-web/README.md new file mode 100644 index 0000000..167e589 --- /dev/null +++ b/efm-demo-web/README.md @@ -0,0 +1,28 @@ +# Ng-Web端平台 + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8. +需搭配nodejs 8.8以上(含npm) + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/efm-demo-web/angular.json b/efm-demo-web/angular.json new file mode 100644 index 0000000..6de2d95 --- /dev/null +++ b/efm-demo-web/angular.json @@ -0,0 +1,210 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "ng-webdpt": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "ngx-build-plus:browser", + "options": { + "allowedCommonJsDependencies": [ + "crypto-js", + "ag-grid-angular", + "ag-grid-community", + "@ant-design/colors", + "date-fns/format", + "date-fns/parse", + "qs", + "@webdpt/framework/themes", + "lodash", + "rxjs", + "zrender" + ], + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "tsConfig": "src/tsconfig.app.json", + "polyfills": "src/polyfills.ts", + "assets": [ + "src/assets", + "src/favicon.ico", + { + "glob": "**/*", + "input": "./node_modules/@webdpt/framework/assets/dw-framework", + "output": "assets/dw-framework" + }, + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" + }, + { + "glob": "**/*", + "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", + "output": "assets" + }, + "src/manifest.webmanifest" + ], + "styles": [ + "src/styles.less" + ], + "scripts": [ + "node_modules/jsencrypt/bin/jsencrypt.js" + ], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true, + "extraWebpackConfig": "webpack.config.js", + "commonChunk": false + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "serviceWorker": true, + "extraWebpackConfig": "webpack.prod.config.js" + }, + "service-worker-dev": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "outputHashing": "all", + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "serviceWorker": true + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "ngx-build-plus:dev-server", + "options": { + "browserTarget": "ng-webdpt:build:development", + "port": 4200, + "extraWebpackConfig": "webpack.config.js" + }, + "configurations": { + "production": { + "browserTarget": "ng-webdpt:build:production", + "extraWebpackConfig": "webpack.prod.config.js" + } + } + }, + "extract-i18n": { + "builder": "ngx-build-plus:extract-i18n", + "options": { + "browserTarget": "ng-webdpt:build", + "extraWebpackConfig": "webpack.config.js" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "karmaConfig": "./karma.conf.js", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "scripts": [ + "node_modules/jsencrypt/bin/jsencrypt.js" + ], + "styles": [ + "src/styles.less" + ], + "assets": [ + "src/assets", + "src/favicon.ico", + { + "glob": "**/*", + "input": "./node_modules/@webdpt/framework/assets/dw-framework", + "output": "assets/dw-framework" + }, + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" + }, + { + "glob": "**/*", + "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", + "output": "assets" + }, + "src/manifest.webmanifest" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "ng-webdpt:serve" + }, + "configurations": { + "production": { + "devServerTarget": "ng-webdpt:serve:production" + } + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } + } + } + } + }, + "defaultProject": "ng-webdpt", + "schematics": { + "@schematics/angular:component": { + "prefix": "app", + "style": "less" + }, + "@schematics/angular:directive": { + "prefix": "app" + } + }, + "cli": { + "warnings": {}, + "analytics": false, + "defaultCollection": "@angular-eslint/schematics" + } +} \ No newline at end of file diff --git a/efm-demo-web/athena-microsite.config.js b/efm-demo-web/athena-microsite.config.js new file mode 100644 index 0000000..30677ac --- /dev/null +++ b/efm-demo-web/athena-microsite.config.js @@ -0,0 +1,27 @@ +module.exports = { + port: 4000, + envHosts: { + paas: 'https://athena-paas.digiwincloud.com.cn', + test: 'https://athena-test.digiwincloud.com.cn', + prod: 'https://athena.digiwincloud.com.cn' + }, + apiJson: { + + }, + pluginsConfigServer: { + "app": { + "efm-demoAT": { + "name": "efmdemoAT", + "urlPrefixType": "", + "root": "http://localhost:4200", + "path": "EfmDemoATModule.js", + "description": "", + "i18n": true, + "disabledMultiVersion": true, + "isMF": true, + "moduleName": "EfmDemoATModule", + "exposesPath": "./efm-demoAT" + } + } + } +}; diff --git a/efm-demo-web/e2e/src/app.e2e-spec.ts b/efm-demo-web/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..38305b9 --- /dev/null +++ b/efm-demo-web/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual(''); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/efm-demo-web/e2e/src/app.po.ts b/efm-demo-web/e2e/src/app.po.ts new file mode 100644 index 0000000..7d57112 --- /dev/null +++ b/efm-demo-web/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root')).getText() as Promise; + } +} diff --git a/efm-demo-web/e2e/tsconfig.json b/efm-demo-web/e2e/tsconfig.json new file mode 100644 index 0000000..97f75e1 --- /dev/null +++ b/efm-demo-web/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2015", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/efm-demo-web/karma.conf.js b/efm-demo-web/karma.conf.js new file mode 100644 index 0000000..e38f272 --- /dev/null +++ b/efm-demo-web/karma.conf.js @@ -0,0 +1,36 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/ng-webdpt'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'lcovonly' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['ChromeHeadless'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/efm-demo-web/ngcc.config.js b/efm-demo-web/ngcc.config.js new file mode 100644 index 0000000..797961a --- /dev/null +++ b/efm-demo-web/ngcc.config.js @@ -0,0 +1,10 @@ +module.exports = { + packages: { + '@webdpt/components': { + ignorableDeepImportMatchers: [ + /ng-quicksilver\/date-picker\/standard-types/, + /iv-viewer\// + ] + } + }, +}; diff --git a/efm-demo-web/ngsw-config.json b/efm-demo-web/ngsw-config.json new file mode 100644 index 0000000..9e2ce5b --- /dev/null +++ b/efm-demo-web/ngsw-config.json @@ -0,0 +1,39 @@ +{ + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "lazy", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/*.css", + "/*.js" + ] + } + }, { + "name": "assets", + "installMode": "lazy", + "updateMode": "lazy", + "resources": { + "files": [ + "/assets/**", + "!/assets/**/*.json" + ] + } + } + ], + "dataGroups": [ + { + "name": "app", + "urls": ["**"], + "cacheConfig": { + "strategy": "freshness", + "maxSize": 0, + "maxAge": "0u", + "timeout": "3s" + } + } + ] +} diff --git a/efm-demo-web/package.json b/efm-demo-web/package.json new file mode 100644 index 0000000..e15a126 --- /dev/null +++ b/efm-demo-web/package.json @@ -0,0 +1,152 @@ +{ + "name": "ng-webdpt", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "postinstall": "npx patch-package@6.5.1 && ngcc", + "ng": "ng", + "start": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng serve", + "start-prod": "ng serve --configuration production", + "build": "ng build", + "test": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng test", + "framework-test": "ng test @webdpt/framework --code-coverage --watch", + "components-test": "ng test @webdpt/components --code-coverage --watch", + "mfa-app-test": "ng test @webdpt/mfa-app --code-coverage --watch", + "lint": "ng lint ng-webdpt", + "e2e": "ng e2e", + "buildCss": "node themeCssBuild", + "generate-i18n-files": "ngx-translate-extract -i ./src -o ./src/i18n/default-en.json --clean --sort --format namespaced-json", + "build-prod": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --configuration production && node node_modules/@webdpt/scripts/builds/replace-sw.js && npm run dw-zip", + "doc:build": "compodoc -p src/tsconfig.app.json -d ./doc", + "doc:serve": "compodoc -s -r 4201 -d ./doc", + "doc:buildandserve": "compodoc -p ./tsconfig.json -s -r 4201 -d ./doc", + "sonar": "sonar-scanner", + "gmc": "node node_modules/@webdpt/scripts/builds/generate.js", + "dw-zip": "node node_modules/@webdpt/scripts/builds/dw-zip.js", + "microsite": "athena-microsite serve -e test -t mf", + "microsite:paas": "athena-microsite serve -e paas -t mf", + "microsite:prod": "athena-microsite serve -e prod -t mf" + }, + "private": true, + "dependencies": { + "@angular-architects/module-federation": "^12.2.0", + "@angular/animations": "12.2.16", + "@angular/cdk": "^12.1.0", + "@angular/common": "12.2.16", + "@angular/compiler": "12.2.16", + "@angular/core": "12.2.16", + "@angular/forms": "12.2.16", + "@angular/platform-browser": "12.2.16", + "@angular/platform-browser-dynamic": "12.2.16", + "@angular/router": "12.2.16", + "@angular/service-worker": "12.2.16", + "@ant-design/icons-angular": "^12.0.3", + "@ng-dynamic-forms/core": "^14.0.0", + "@ngx-translate/core": "^13.0.0", + "@ngx-translate/http-loader": "^6.0.0", + "@types/requirejs": "^2.1.31", + "@webdpt/analytics": "5.2.11-1000", + "@webdpt/components": "5.2.11-1000", + "@webdpt/framework-js": "5.2.11-1000", + "@webdpt/framework": "5.2.11-1000", + "@webdpt/iv-viewer": "2.0.1", + "@webdpt/programs": "5.2.11-1000", + "ag-grid-angular": "^26.0.0", + "ag-grid-community": "^26.0.0", + "angular-gridster2": "^12.0.0", + "angular-in-memory-web-api": "^0.9.0", + "axios": "^1.4.0", + "classlist.js": "1.1.20150312", + "core-js": "^3.8.0", + "crypto-js": "^3.1.9-1", + "date-fns": "^2.10.0", + "fast-deep-equal": "^3.1.3", + "i18next": "^22.5.1", + "injection-js": "^2.4.0", + "jsencrypt": "^3.0.0-rc.1", + "moment": "2.24.0", + "ng-zorro-antd": "https://repo.digiwincloud.com.cn/maven/repository/npm-webdpt/ng-zorro-antd/-/ng-zorro-antd-12.1.1-1000.tgz", + "ngx-color": "5.1.3", + "ngx-highlightjs": "^2.1.1", + "ngx-mask": "^12.0.0", + "resize-observer-polyfill": "^1.5.1", + "rrule": "2.6.0", + "rxjs": "~6.6.0", + "sonarqube-scanner": "^2.4.1", + "tslint-sonarts": "^1.9.0", + "web-animations-js": "^2.3.2", + "bignumber.js": "^9.0.1", + "angular2-uuid": "^1.1.1", + "paho-mqtt": "^1.1.0", + "file-loader": "6.0.0", + "ag-grid-enterprise": "^26.0.0", + "xlsx": "^0.16.4", + "jsonpath": "^1.0.2", + "echarts": "^4.6.0", + "angular-split": "^3.0.3", + "ngx-image-cropper": "^4.0.0", + "@angular/material": "12.2.13", + "dayjs": "^1.10.4", + "jsstore": "^4.3.7", + "lodash": "^4.17.21", + "@athena/design-ui": "2.2.11-next.5", + "@athena/dynamic-core": "2.2.11-next.5", + "@athena/dynamic-ui": "2.2.11-next.5", + "ngx-echarts": "^4.2.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "12.2.16", + "@angular-devkit/core": "12.2.16", + "@angular-devkit/schematics": "12.2.16", + "@angular-devkit/schematics-cli": "12.2.16", + "@angular-eslint/builder": "^12.7.0", + "@angular-eslint/eslint-plugin": "^12.7.0", + "@angular-eslint/eslint-plugin-template": "^12.7.0", + "@angular-eslint/schematics": "^12.7.0", + "@angular-eslint/template-parser": "^12.7.0", + "@angular/cli": "12.2.16", + "@angular/compiler-cli": "12.2.16", + "@angular/language-service": "12.2.16", + "@biesbjerg/ngx-translate-extract": "^2.3.4", + "@compodoc/compodoc": "^1.1.3", + "@phenomnomnominal/tsquery": "^4.1.0", + "@schematics/angular": "12.2.16", + "@schematics/update": "0.1102.12", + "@types/jasmine": "~3.6.0", + "@types/jasminewd2": "~2.0.3", + "@types/node": "^12.11.1", + "@typescript-eslint/eslint-plugin": "4.28.2", + "@typescript-eslint/parser": "4.28.2", + "@webdpt/schematics": "5.2.11-1000", + "@webdpt/scripts": "5.2.11-1000", + "@webdpt/tslint-rules": "5.2.11-1000", + "archiver": "5.3.1", + "codelyzer": "^6.0.0", + "commander": "^5.1.0", + "cpx": "^1.5.0", + "eslint": "^7.26.0", + "inquirer": "^7.3.0", + "jasmine-core": "~3.8.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.3.15", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "less": "^3.10.3", + "ng-packagr": "^12.1.1", + "protractor": "~7.0.0", + "qs": "^6.11.2", + "raw-loader": "0.5.1", + "ts-node": "~7.0.0", + "tslib": "^2.0.0", + "tslint": "~6.1.0", + "typescript": "~4.3.5", + "webpack-bundle-analyzer": "^3.7.0", + "zone.js": "~0.11.4", + "@angular-devkit/architect": "0.1202.16", + "@webdpt/athena-dev-tools": "5.2.11-1000", + "@webdpt/athena-microsite": "5.2.11-1000", + "@athena/platform-devkit": "1.0.0-4" + } +} \ No newline at end of file diff --git a/efm-demo-web/patches/@schematics+update+0.1102.12.patch b/efm-demo-web/patches/@schematics+update+0.1102.12.patch new file mode 100644 index 0000000..fca13c5 --- /dev/null +++ b/efm-demo-web/patches/@schematics+update+0.1102.12.patch @@ -0,0 +1,24 @@ +diff --git a/node_modules/@schematics/update/migrate/schema.json b/node_modules/@schematics/update/migrate/schema.json +index 58fca36..257ee01 100644 +--- a/node_modules/@schematics/update/migrate/schema.json ++++ b/node_modules/@schematics/update/migrate/schema.json +@@ -1,6 +1,6 @@ + { + "$schema": "http://json-schema.org/schema", +- "id": "PostUpdateSchema", ++ "$id": "PostUpdateSchema", + "type": "object", + "properties": { + "package": { +diff --git a/node_modules/@schematics/update/update/schema.json b/node_modules/@schematics/update/update/schema.json +index d921b9d..465cf9e 100644 +--- a/node_modules/@schematics/update/update/schema.json ++++ b/node_modules/@schematics/update/update/schema.json +@@ -1,6 +1,6 @@ + { + "$schema": "http://json-schema.org/schema", +- "id": "SchematicsUpdateSchema", ++ "$id": "SchematicsUpdateSchema", + "title": "Schematic Options Schema", + "type": "object", + "properties": { diff --git a/efm-demo-web/project.config.json b/efm-demo-web/project.config.json new file mode 100644 index 0000000..613e35d --- /dev/null +++ b/efm-demo-web/project.config.json @@ -0,0 +1 @@ +{ "envType": "angular", "dap": { "enabled": false }, "athena": { "enabled": true } } diff --git a/efm-demo-web/projects/webdpt/webdpt-packages/.gitkeep b/efm-demo-web/projects/webdpt/webdpt-packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/.browserslistrc b/efm-demo-web/src/.browserslistrc new file mode 100644 index 0000000..1d9234a --- /dev/null +++ b/efm-demo-web/src/.browserslistrc @@ -0,0 +1,20 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +#> 0.5% +#last 2 versions +#Firefox ESR +#not dead +#not IE 9-11 # For IE 9-11 support, remove 'not'. + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/efm-demo-web/src/app/app-routing.module.ts b/efm-demo-web/src/app/app-routing.module.ts new file mode 100644 index 0000000..7a7f575 --- /dev/null +++ b/efm-demo-web/src/app/app-routing.module.ts @@ -0,0 +1,35 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { PageNotFoundComponent } from './page-not-found.component'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'prefix', + loadChildren: (): Promise => import('./implementation/implementation.module').then(m => m.ImplementationModule) + }, + { + path: '**', + component: PageNotFoundComponent + } +]; + + +@NgModule({ + imports: [ + RouterModule.forRoot( + routes, + { relativeLinkResolution: 'legacy' } + // , { enableTracing: true } // debugging purposes only + ), + ], + declarations: [ + PageNotFoundComponent + ], + exports: [ + RouterModule + ] +}) +export class AppRoutingModule { +} diff --git a/efm-demo-web/src/app/app.component.css b/efm-demo-web/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/app/app.component.spec.ts b/efm-demo-web/src/app/app.component.spec.ts new file mode 100644 index 0000000..11336b2 --- /dev/null +++ b/efm-demo-web/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { DwLanguageService } from '@webdpt/framework/language'; +import { of } from 'rxjs/internal/observable/of'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + providers: [ + { provide: DwLanguageService, useValue: { + currentLanguage: 'zh_TW', + setUp: (lan: string): void => { }, + language$: of('zh_TW') + } } + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', waitForAsync(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); +}); diff --git a/efm-demo-web/src/app/app.component.ts b/efm-demo-web/src/app/app.component.ts new file mode 100644 index 0000000..9bf8c2f --- /dev/null +++ b/efm-demo-web/src/app/app.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { DwLanguageService } from '@webdpt/framework/language'; + +@Component({ + selector: 'app-root', + template: ` + + `, + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + constructor(langService: DwLanguageService) {} +} diff --git a/efm-demo-web/src/app/app.module.ts b/efm-demo-web/src/app/app.module.ts new file mode 100644 index 0000000..d706030 --- /dev/null +++ b/efm-demo-web/src/app/app.module.ts @@ -0,0 +1,70 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { HTTP_INTERCEPTORS, HttpClientJsonpModule, HttpClientModule } from '@angular/common/http'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +import { AppComponent } from './app.component'; +import { AppRoutingModule } from './app-routing.module'; +import { DwIamModule, FrameworkModule } from '@webdpt/framework'; +import { FrameworkUICoreModule } from '@webdpt/components/providers'; +import { DwServiceWorkerModule } from '@webdpt/framework/service-worker'; +import { DwDapModule } from '@webdpt/framework/dap'; +import { DwProgramsModule } from '@webdpt/programs'; +import { ImplementationModule } from './implementation/implementation.module'; +import { SYSTEM_CONFIG } from './config/system-config'; +import { SystemModule } from './config/system.module'; +import { environment } from '../environments/environment'; +import { DynamicFormsAntUIModule } from '@athena/dynamic-ui'; +import { HttpInterceptorService } from './implementation/http-interceptor.service'; +import { + DynamicFormsCoreModule, + DynamicUserBehaviorCommService, + PluginLanguageStoreService, + UserOrgInfoService, + DynamicUserBehaviorService +} from '@athena/dynamic-core'; + +@NgModule({ + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + HttpClientModule, + HttpClientJsonpModule, + /** ************* 端平台 ***************/ + FrameworkModule.forRoot([], SYSTEM_CONFIG), + FrameworkUICoreModule.forRoot(), + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + // DwDapModule, // DAP平台 + // DwProgramsModule, // 平台作業 + + SystemModule.forRoot([]), + ImplementationModule.forRoot([]), + DwIamModule, + DynamicFormsAntUIModule.forRoot(), + DynamicFormsCoreModule.forRoot() + ], + declarations: [ + AppComponent + ], + providers: [ + { + provide: HTTP_INTERCEPTORS, + useClass: HttpInterceptorService, + multi: true, + }, + ...DynamicFormsCoreModule.forRoot().providers, + DynamicUserBehaviorCommService, + UserOrgInfoService, + PluginLanguageStoreService + ], + bootstrap: [AppComponent] +}) +export class AppModule { + constructor(private userBehaviorService: DynamicUserBehaviorService, private userOrgInfoService: UserOrgInfoService) { + this.userBehaviorService.init(); + this.userOrgInfoService.monitorLogin(); + } +} diff --git a/efm-demo-web/src/app/config/app-auth-token.ts b/efm-demo-web/src/app/config/app-auth-token.ts new file mode 100644 index 0000000..de0c18d --- /dev/null +++ b/efm-demo-web/src/app/config/app-auth-token.ts @@ -0,0 +1,5 @@ +/** + * IAM 的 digi-middleware-auth-app [各應用系統的AppToken]. + */ +// eslint-disable-next-line max-len +export const DigiMiddlewareAuthApp = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IkF0aGVuYSIsInNpZCI6MTYzNjc3NzI1NzgyNTkyfQ.3QLTPVKsk2Mp3j_aQ3X8bQW1wCJMNWeCkL6VPoK352c'; diff --git a/efm-demo-web/src/app/config/custom-app-config.ts b/efm-demo-web/src/app/config/custom-app-config.ts new file mode 100644 index 0000000..d8bb0ea --- /dev/null +++ b/efm-demo-web/src/app/config/custom-app-config.ts @@ -0,0 +1,29 @@ +export interface ICustomAppConfig { + /** 定制应用名称 */ + appCode: string; + /** 定制模块名称 */ + moduleName?: string; + /** 定制模块路径 */ + modulePath?: string; +} + +export interface IProgramInfo { + [key: string]: IProgramInfoParams; +} + +export interface IProgramInfoParams { + /** json路径 */ + jsonPath: string; + /** 定制页说明 */ + description?: string; +} + +/** 定制应用配置 */ +export const CUSTOM_APP_CONFIG: ICustomAppConfig = { + appCode: 'EfmDemoAT', + moduleName: 'EfmDemoATModule', + modulePath: './src/app/implementation/athena-app.module.ts', +}; + +/** 定制页信息 */ +export const programs: IProgramInfo = {}; diff --git a/efm-demo-web/src/app/config/system-config.ts b/efm-demo-web/src/app/config/system-config.ts new file mode 100644 index 0000000..4994ad4 --- /dev/null +++ b/efm-demo-web/src/app/config/system-config.ts @@ -0,0 +1,62 @@ +import { DigiMiddlewareAuthApp } from './app-auth-token'; +import { IDWDmcUserInfo } from '@webdpt/framework/config'; + +// 開發環境變數 +export const SYSTEM_CONFIG: IAppConfig = { + dwAppId: 'Athena', + dwAppName: '设备故障管理演示应用', + defaultApp: '/', + dwLogoPath: './assets/img/dwLogo.svg', + dwDateFormat: 'yyyy/MM/dd', + dwTimeFormat: 'HH:mm:ss', + dwUsingTab: false, + dwTabMultiOpen: false, + defaultLogin: '/login', + dwAppAuthToken: DigiMiddlewareAuthApp, + dwLoadMaskHttp: true, + dwLoadMaskDelay: 0, + dwDmcUserInfo: { + username: '', + password: '' + }, + dwTabStoreStrategy: 'session' +}; + +export interface IAppConfig { + dwAppId: string; // Application ID(對應到互聯應用管理中心) + dwAppName: string; // Application NAME(對應到互聯應用管理中心) + defaultApp: string; // 首頁路徑 + dwLogoPath: string; // Logo圖檔路徑 + dwDateFormat: string; // 日期格式 + dwTimeFormat: string; // 時間格式 + dwUsingTab: boolean; // 是否啟用多頁佈局 + dwTabMultiOpen: boolean; // 多頁佈局預設是否可重覆開啟作業 + defaultLogin: string; // 登入頁路徑 + dwAppAuthToken: string; // IAM 的 digi-middleware-auth-app [各應用系統的AppToken]. + dwLoadMaskHttp: boolean; // HTTP加載遮罩是否啟用 + dwLoadMaskDelay: number; // 延遲顯示加載效果的時間毫秒 + dwDmcUserInfo: IDWDmcUserInfo; // 文檔中心的登入帳密 + dwTabStoreStrategy?: 'session' | 'local' | 'none'; // 多頁籤儲存策略 +} + +function loadJSON(filePath: string): any { + const json = loadTextFileAjaxSync(filePath, 'application/json'); + const obj = JSON.parse(json); + return obj; +} + +function loadTextFileAjaxSync(filePath: string, mimeType: string): string { + const xmlhttp = new XMLHttpRequest(); + xmlhttp.open('GET', filePath, false); + if (mimeType != null) { + if (xmlhttp.overrideMimeType) { + xmlhttp.overrideMimeType(mimeType); + } + } + xmlhttp.send(); + if (xmlhttp.status === 200) { + return xmlhttp.responseText; + } else { + return null; + } +} diff --git a/efm-demo-web/src/app/config/system.module.ts b/efm-demo-web/src/app/config/system.module.ts new file mode 100644 index 0000000..68ac801 --- /dev/null +++ b/efm-demo-web/src/app/config/system.module.ts @@ -0,0 +1,35 @@ +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Provider } from '@angular/compiler/src/core'; + +import { DwMockModule } from '@webdpt/framework/mock'; +import { DW_MOCK, DW_APP_AUTH_TOKEN } from '@webdpt/framework/config'; +import { environment } from '../../environments/environment'; +import { DigiMiddlewareAuthApp } from './app-auth-token'; + + +@NgModule({ + imports: [ + CommonModule, + DwMockModule + ], + declarations: [] +}) +export class SystemModule { + static forRoot(providers: Provider[]): ModuleWithProviders { + return { + ngModule: SystemModule, + providers: [ + { + provide: DW_MOCK, + useValue: environment.mock + }, + { + provide: DW_APP_AUTH_TOKEN, + useValue: DigiMiddlewareAuthApp + }, + ...providers + ] + }; + } +} diff --git a/efm-demo-web/src/app/customization/customization-routes.ts b/efm-demo-web/src/app/customization/customization-routes.ts new file mode 100644 index 0000000..f57a513 --- /dev/null +++ b/efm-demo-web/src/app/customization/customization-routes.ts @@ -0,0 +1,11 @@ +import { Routes } from '@angular/router'; + +import { IMPLEMENTATION_ROUTES } from '../implementation/implementation-routes'; + + +export const CUSTOMIZATION_ROUTES: Routes = [ + // 設定客製應用模組路由 + + // 應用開發應用模組路由 + ...IMPLEMENTATION_ROUTES +]; diff --git a/efm-demo-web/src/app/customization/customization-routing.module.ts b/efm-demo-web/src/app/customization/customization-routing.module.ts new file mode 100644 index 0000000..a2fa112 --- /dev/null +++ b/efm-demo-web/src/app/customization/customization-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class CustomizationRoutingModule { } diff --git a/efm-demo-web/src/app/customization/customization.module.ts b/efm-demo-web/src/app/customization/customization.module.ts new file mode 100644 index 0000000..793cdd9 --- /dev/null +++ b/efm-demo-web/src/app/customization/customization.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { CustomizationRoutingModule } from './customization-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + CustomizationRoutingModule + ], + declarations: [] +}) +export class CustomizationModule { } diff --git a/efm-demo-web/src/app/customization/style/index.less b/efm-demo-web/src/app/customization/style/index.less new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/app/implementation/athena-app.module.ts b/efm-demo-web/src/app/implementation/athena-app.module.ts new file mode 100644 index 0000000..4d3bc24 --- /dev/null +++ b/efm-demo-web/src/app/implementation/athena-app.module.ts @@ -0,0 +1,47 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DYNAMIC_FORM_CONTROL_MAP_FNS, DYNAMIC_FORM_MODEL_CONVERTS, PLUGIN_LANGUAGE_CHECKLIST } from '@athena/dynamic-core'; +import { businessUIFormComponentMapFn } from './service/business-dynamic-component-map'; +import { DynamicBusinessFormModelConvertService } from './service/dynamic-model-convert-bussiness.service'; +import { APP_LANGUAGE_CHECKLIST } from './language'; +import { TaskDetailModule } from './programs/task-detail/task-detail.module'; +import { ProjectDetailModule } from './programs/project-detail/project-detail.module'; +import { BasicDetailModule } from './programs/basic-detail/basic-detail.module'; + +// 定制页集合 +const dynamicModules = [ + TaskDetailModule, + ProjectDetailModule, + BasicDetailModule +]; + +const components = [ +]; + +@NgModule({ + providers: [ + { + provide: DYNAMIC_FORM_CONTROL_MAP_FNS, + useValue: businessUIFormComponentMapFn, + multi: true, + }, + { + provide: DYNAMIC_FORM_MODEL_CONVERTS, + useClass: DynamicBusinessFormModelConvertService, + multi: true, + }, + { + provide: PLUGIN_LANGUAGE_CHECKLIST, + useValue: APP_LANGUAGE_CHECKLIST, + multi: true, + } + ], + imports: [ + CommonModule, + ...dynamicModules + ], + declarations: [...components], + entryComponents: [...components], + exports: [...components], +}) +export class EfmDemoATModule { } diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget-routing.module.ts b/efm-demo-web/src/app/implementation/auth/forget/forget-routing.module.ts new file mode 100644 index 0000000..2e7a50f --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget-routing.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { ForgetComponent } from './forget.component'; + +const routes: Routes = [ + { + path: '', + component: ForgetComponent, + pathMatch: 'prefix', + data: { + dwRouteData: { + programId: 'dw-forget' + } + } + } +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes) + ], + exports: [RouterModule] +}) +export class ForgetRoutingModule { +} diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget.component.css b/efm-demo-web/src/app/implementation/auth/forget/forget.component.css new file mode 100644 index 0000000..46a1c97 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget.component.css @@ -0,0 +1,20 @@ +.forget-bg { + background-color: rgba(0, 21, 41, 1); + min-height: 100vh; +} + +.forget-logo { + margin-bottom: 10px; + padding-top: 100px; +} + +.forget-copyright { + text-align: center; + padding-bottom: 1rem; +} +.forget-copyright span { + font-size: 14px; +} +span { + color: white; +} diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget.component.html b/efm-demo-web/src/app/implementation/auth/forget/forget.component.html new file mode 100644 index 0000000..cc9f5d6 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget.component.html @@ -0,0 +1,19 @@ +
+
+
+
+
+
+ + +
+
+
+
+ +
+
diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget.component.spec.ts b/efm-demo-web/src/app/implementation/auth/forget/forget.component.spec.ts new file mode 100644 index 0000000..baf1209 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget.component.spec.ts @@ -0,0 +1,82 @@ +import { Component, Injectable, Input, Pipe, PipeTransform } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { DwForgetModule } from '@webdpt/components/user/forget-block'; +import { Logo_Path } from '@webdpt/framework/config'; +import { Observable } from 'rxjs/internal/Observable'; +import { of } from 'rxjs/internal/observable/of'; +import { ForgetComponent } from './forget.component'; +import { ForgetModule } from './forget.module'; + +describe('ForgetComponent', () => { + let component: ForgetComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + ForgetModule, + RouterTestingModule + ], + providers: [ + { provide: TranslateService, useClass: TranslateServiceStub }, + { provide: TranslatePipe, useClass: TranslatePipeMock }, + { provide: Logo_Path, useValue: '/mock-logo-path' } + ], + declarations: [ForgetComponent] + }) + .overrideModule(DwForgetModule, + { + set: { + imports: [], + declarations: [MockDwForgetBlockComponent], + exports: [MockDwForgetBlockComponent] + } + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); +@Pipe({ + name: 'translate' +}) +export class TranslatePipeMock implements PipeTransform { + public name = 'translate'; + + public transform(query: string, ...args: any[]): any { + return query; + } +} + +@Injectable() +export class TranslateServiceStub { + public instant(key: string, interpolateParams?: Object): string { + return key; + } + public get(key: T): Observable { + return of(key); + } + public onTranslationChange = of({ lang: 'TW' }); + public onLangChange = of({ translations: null }); + public onDefaultLangChange = of(true); + public currentLang = 'zh_TW'; +} +@Component({ + selector: 'dw-forget-block', + template: ` +
MockDwForgetBlockComponent
+ ` +}) +export class MockDwForgetBlockComponent { + @Input() verificationType: any; +} diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget.component.ts b/efm-demo-web/src/app/implementation/auth/forget/forget.component.ts new file mode 100644 index 0000000..07059d5 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget.component.ts @@ -0,0 +1,26 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { Logo_Path } from '@webdpt/framework/config'; +import { IDwForgetverificationType } from '@webdpt/framework/account'; + +@Component({ + selector: 'app-forget', + templateUrl: './forget.component.html', + styleUrls: ['./forget.component.css'] +}) +export class ForgetComponent implements OnInit { + verificationType: Array = []; + + constructor( + @Inject(Logo_Path) public dwLogoPath: string + ) { } + + ngOnInit(): void { + this.verificationType = [ + IDwForgetverificationType.EMAIL, + IDwForgetverificationType.MOBILEPHONE + ]; + + } + + +} diff --git a/efm-demo-web/src/app/implementation/auth/forget/forget.module.ts b/efm-demo-web/src/app/implementation/auth/forget/forget.module.ts new file mode 100644 index 0000000..560bbea --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/forget/forget.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SharedModule } from '../../shared/shared.module'; +import { ForgetRoutingModule } from './forget-routing.module'; +import { ForgetComponent } from './forget.component'; +import { DwForgetModule } from '@webdpt/components/user/forget-block'; +import { NzGridModule } from 'ng-zorro-antd/grid'; +import { TranslateModule } from '@ngx-translate/core'; + + +@NgModule({ + imports: [ + CommonModule, + ForgetRoutingModule, + SharedModule, + DwForgetModule, + NzGridModule, + TranslateModule + ], + declarations: [ + ForgetComponent + ] +}) +export class ForgetModule { } diff --git a/efm-demo-web/src/app/implementation/auth/login-routing.module.ts b/efm-demo-web/src/app/implementation/auth/login-routing.module.ts new file mode 100644 index 0000000..9640d92 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login-routing.module.ts @@ -0,0 +1,34 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { LoginComponent } from './login/login.component'; + +const routes: Routes = [ + { + path: '', + component: LoginComponent, + pathMatch: 'prefix', + data: { + dwRouteData: { + programId: 'dw-login' + } + } + }, + // { + // path: 'register', + // component: RegisterComponent + // }, + // { + // path: 'forgot', + // component: ForgotComponent + // } +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes) + ], + exports: [RouterModule] +}) +export class LoginRoutingModule { +} diff --git a/efm-demo-web/src/app/implementation/auth/login.module.ts b/efm-demo-web/src/app/implementation/auth/login.module.ts new file mode 100644 index 0000000..5e6632e --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SharedModule } from '../shared/shared.module'; +import { LoginRoutingModule } from './login-routing.module'; +import { LoginComponent } from './login/login.component'; +import { DwLoginModule } from '@webdpt/components/login'; +import { NzGridModule } from 'ng-zorro-antd/grid'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + imports: [ + CommonModule, + LoginRoutingModule, + SharedModule, + DwLoginModule, + NzGridModule, + TranslateModule + ], + declarations: [ + LoginComponent + ] +}) +export class LoginModule { } diff --git a/efm-demo-web/src/app/implementation/auth/login/login.component.css b/efm-demo-web/src/app/implementation/auth/login/login.component.css new file mode 100644 index 0000000..65992d2 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login/login.component.css @@ -0,0 +1,30 @@ +.login-bg { + background-color: rgba(0, 21, 41, 1); + height: 100%; + padding-top: 100px; +} + +.login-logo { + margin-bottom: 10px; +} +.login-form { + min-width: 250px; +} + +.login-form-forgot { + float: right; +} + +.login-form-button { + width: 100%; +} + +.login-copyright { + text-align: center; +} +.login-copyright span { + font-size: 14px; +} +span { + color: white; +} diff --git a/efm-demo-web/src/app/implementation/auth/login/login.component.html b/efm-demo-web/src/app/implementation/auth/login/login.component.html new file mode 100644 index 0000000..2f44221 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login/login.component.html @@ -0,0 +1,19 @@ + diff --git a/efm-demo-web/src/app/implementation/auth/login/login.component.spec.ts b/efm-demo-web/src/app/implementation/auth/login/login.component.spec.ts new file mode 100644 index 0000000..9862a8f --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login/login.component.spec.ts @@ -0,0 +1,84 @@ +import { Component, Injectable, Input, Pipe, PipeTransform } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { DwLoginModule } from '@webdpt/components/login'; +import { Logo_Path } from '@webdpt/framework/config'; +import { Observable } from 'rxjs/internal/Observable'; +import { of } from 'rxjs/internal/observable/of'; +import { LoginModule } from '../login.module'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + LoginModule, + RouterTestingModule + ], + providers: [ + { provide: TranslateService, useClass: TranslateServiceStub }, + { provide: TranslatePipe, useClass: TranslatePipeMock }, + { provide: Logo_Path, useValue: '/mock-logo-path' } + ], + declarations: [LoginComponent] + }) + .overrideModule(DwLoginModule, { + set: { + imports: [], + declarations: [MockLoginComponent], + exports: [MockLoginComponent] + } + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); +@Pipe({ + name: 'translate' +}) +export class TranslatePipeMock implements PipeTransform { + public name = 'translate'; + + public transform(query: string, ...args: any[]): any { + return query; + } +} + +@Injectable() +export class TranslateServiceStub { + public instant(key: string, interpolateParams?: Object): string { + return key; + } + public get(key: T): Observable { + return of(key); + } + public onTranslationChange = of({ lang: 'TW' }); + public onLangChange = of({ translations: null }); + public onDefaultLangChange = of(true); + public currentLang = 'zh_TW'; +} +@Component({ + selector: 'dw-login-block', + template: ` +
mockLoginComponent
+ ` +}) +export class MockLoginComponent { + @Input() showRemember; + @Input() showLanguage; +} + diff --git a/efm-demo-web/src/app/implementation/auth/login/login.component.ts b/efm-demo-web/src/app/implementation/auth/login/login.component.ts new file mode 100644 index 0000000..97b6b76 --- /dev/null +++ b/efm-demo-web/src/app/implementation/auth/login/login.component.ts @@ -0,0 +1,16 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { Logo_Path } from '@webdpt/framework/config'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent { + + constructor( + @Inject(Logo_Path) public dwLogoPath: string, + ) { } + + +} diff --git a/efm-demo-web/src/app/implementation/home/home-routing.module.ts b/efm-demo-web/src/app/implementation/home/home-routing.module.ts new file mode 100644 index 0000000..42f9608 --- /dev/null +++ b/efm-demo-web/src/app/implementation/home/home-routing.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { DwAuthGuardService } from '@webdpt/framework/auth'; +import { DwDefaultAppGuardService } from '@webdpt/framework/program-info'; +import { HomeComponent } from './home.component'; + +const routes: Routes = [ + { + path: '', + component: HomeComponent, + pathMatch: 'prefix', + canActivate: [DwAuthGuardService, DwDefaultAppGuardService], + data: { + dwRouteData: { + programId: 'home' + } + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class HomeRoutingModule { } diff --git a/efm-demo-web/src/app/implementation/home/home.component.css b/efm-demo-web/src/app/implementation/home/home.component.css new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/app/implementation/home/home.component.html b/efm-demo-web/src/app/implementation/home/home.component.html new file mode 100644 index 0000000..1fe77bc --- /dev/null +++ b/efm-demo-web/src/app/implementation/home/home.component.html @@ -0,0 +1,3 @@ +

+ home works! +

\ No newline at end of file diff --git a/efm-demo-web/src/app/implementation/home/home.component.ts b/efm-demo-web/src/app/implementation/home/home.component.ts new file mode 100644 index 0000000..37fbce8 --- /dev/null +++ b/efm-demo-web/src/app/implementation/home/home.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent { + + constructor() { } + + +} diff --git a/efm-demo-web/src/app/implementation/home/home.module.ts b/efm-demo-web/src/app/implementation/home/home.module.ts new file mode 100644 index 0000000..b30855e --- /dev/null +++ b/efm-demo-web/src/app/implementation/home/home.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SharedModule } from '../shared/shared.module'; +import { HomeRoutingModule } from './home-routing.module'; +import { HomeComponent } from './home.component'; + +@NgModule({ + imports: [ + CommonModule, + SharedModule, + HomeRoutingModule + ], + declarations: [HomeComponent] +}) +export class HomeModule { } diff --git a/efm-demo-web/src/app/implementation/http-error-handle.service.ts b/efm-demo-web/src/app/implementation/http-error-handle.service.ts new file mode 100644 index 0000000..3d971f7 --- /dev/null +++ b/efm-demo-web/src/app/implementation/http-error-handle.service.ts @@ -0,0 +1,25 @@ +import { Injectable, ErrorHandler } from '@angular/core'; +import { HttpErrorResponse } from '@angular/common/http'; +import { NzMessageService } from 'ng-zorro-antd/message'; + +@Injectable({ + providedIn: 'root', +}) +export class AppErrorHandleService implements ErrorHandler { + constructor(private messageService: NzMessageService) {} + handleError(error: any): void { + // 如果是http的错误 + if (error instanceof HttpErrorResponse) { + if (error.error && error.error.errorMessage) { + if (error.error.errorCode === '1001105') { + this.messageService.error('租户不正确!'); + } else { + this.messageService.error(error.error.errorMessage); + } + } else { + this.messageService.error(error.message); + } + } + console.error(error); + } +} diff --git a/efm-demo-web/src/app/implementation/http-interceptor.service.ts b/efm-demo-web/src/app/implementation/http-interceptor.service.ts new file mode 100644 index 0000000..37888f9 --- /dev/null +++ b/efm-demo-web/src/app/implementation/http-interceptor.service.ts @@ -0,0 +1,290 @@ +import { + HttpInterceptor, + HttpRequest, + HttpHandler, + HttpResponse, + HttpErrorResponse, +} from '@angular/common/http'; +import { Observable, of } from 'rxjs'; +import { tap, map, catchError } from 'rxjs/operators'; +import { DW_AUTH_TOKEN } from '@webdpt/framework/auth'; +import { DwLanguageService } from '@webdpt/framework/language'; +import { DW_APP_AUTH_TOKEN, DwSystemConfigService } from '@webdpt/framework/config'; +import { Inject, Injectable } from '@angular/core'; +import { DynamicFormDataService, isObject, convertStrDate, isNone } from '@athena/dynamic-core'; +import { NzMessageService } from 'ng-zorro-antd/message'; +import { AppErrorHandleService } from './http-error-handle.service'; +import { CookieUtil } from './utils.ts/cookie-util'; + +@Injectable() +export class HttpInterceptorService implements HttpInterceptor { + whiteList: string[] = ['iam', 'emc', 'eoc']; + muiUrl: string = window.location.origin; + + constructor( + @Inject(DW_AUTH_TOKEN) protected authToken: any, + @Inject(DW_APP_AUTH_TOKEN) protected appAuthToken: any, + private languageService: DwLanguageService, + private messageService: NzMessageService, + private dateFormateService: DynamicFormDataService, + private config: DwSystemConfigService, + private appErrorHandleService: AppErrorHandleService, + // protected systemConfig: any + ) { } + + intercept(req: HttpRequest, next: HttpHandler): Observable { + // 每个请求添加唯一标志uuid + req = req.clone({ + headers: req.headers.delete('noCommonTipError'), + }); + + // 设置语言别 + if (this.languageService && this.languageService.currentLanguage) { + req = req.clone({ + setHeaders: { + locale: this.languageService.currentLanguage, + }, + }); + } + // 兼容api平台:用户token + if (this.authToken.token && !req.headers.get('token')) { + req = req.clone({ + setHeaders: { + token: this.authToken.token, + }, + }); + } + + // 中间件用户token + if (this.authToken.token && !req.headers.get('digi-middleware-auth-user')) { + req = req.clone({ + setHeaders: { + 'digi-middleware-auth-user': this.authToken.token, + }, + }); + } + + // atmc和ui_bot场景需要该proxyToken + if ( + (req.url.includes('/bot/') || req.url.includes('/atmc/') || req.url.includes('/atdm/')) && + sessionStorage.getItem('proxyToken') && + !req.headers.get('proxy_token') + ) { + req = req.clone({ + setHeaders: { + proxy_token: sessionStorage.getItem('proxyToken'), + }, + }); + } + if (!req.url.includes('kmo/file')) { + // 设置平台别 + req = req.clone({ + setHeaders: { + 'client-agent': 'webplatform', + }, + }); + } + + const { url } = req; + // uibotUrl、atmcUrl、atdmUrl、smartDataUrl、themeMapUrl、bpmUrl 添加routerKey,租户id + if (this.checkNeedAdd(req, 'routerKey')) { + const tenantId = JSON.parse(sessionStorage.getItem('DwUserInfo'))?.tenantId ?? ''; + const token = this.appAuthToken; + req = req.clone({ + setHeaders: { + routerKey: tenantId, + 'digi-middleware-auth-app': token + }, + }); + + if (CookieUtil.get('routerKey') !== tenantId) { + CookieUtil.set('routerKey', tenantId); + } + } + + if (this.checkNeedAdd(req, 'digiMiddlewareAuthApp')) { + const token = this.appAuthToken; + req = req.clone({ + setHeaders: { + 'digi-middleware-auth-app': token, + }, + }); + } + + // 统一处理date + if (req && req.body) { + if (req.body['data']) { + this.dateFormateService.formatDate(req.body['data']); + } else { + this.dateFormateService.formatDate(req.body); + } + this.convertAllStrDateFromData(req.body, true); + } + + return next.handle(req).pipe( + tap((event) => { }), + map((res: HttpResponse) => { + if (isObject(res) && res instanceof HttpResponse && isObject(res.body)) { + // eslint-disable-next-line no-shadow + const { url, body } = res as any; + // 符合规范的接口 + if (this.whiteList.every((item) => !url.includes(item)) && body.status) { + if (body.status === 200) { + // 成功 + res = res.clone({ + body: { + code: 0, + data: body.response, + }, + }); + } else { + // 接口报错 + console.error(res); + const { errorMessage, statusDescription } = body; + const message = errorMessage || statusDescription; + this.messageService.error(message); + throw new HttpErrorResponse({ + error: { errorMessage: message, errorCode: body.errorCode, code: body.status }, + headers: res.headers, + status: body.status, + statusText: body.status, + url: res.url, + }); + } + } else { + // 不符合规范的接口 + if (body.code && body.code !== 200) { + console.error(res); + const { message } = body; + if (message) { + this.messageService.error(message); + } + throw new HttpErrorResponse({ + error: { errorMessage: message, errorCode: body.code }, + headers: res.headers, + status: body.code, + statusText: body.code, + url: res.url, + }); + } + } + this.convertAllStrDateFromData(res.body); + } + return res; + }), + catchError((error: any) => { + this.appErrorHandleService.handleError(error); + throw error; + }) + ); + } + + /** + * 循环修改返回数据中的时间格式从-改为/ + */ + convertAllStrDateFromData(data: any, isReverse: boolean = false): void { + // tslint:disable-next-line: forin + // eslint-disable-next-line guard-for-in + for (const propName in data) { + const prop = data[propName]; + const descriptor = Reflect.getOwnPropertyDescriptor(data, propName); + if (isNone(descriptor) || !descriptor.writable) { + continue; + } + if (typeof prop === 'string') { + data[propName] = convertStrDate(prop, isReverse); + } else if (prop instanceof Array) { + for (let index = 0; index < prop.length; index++) { + const element = prop[index]; + if (typeof element === 'string') { + prop[index] = convertStrDate(element, isReverse); + } else { + this.convertAllStrDateFromData(element, isReverse); + } + } + } else if (isObject(prop) && (prop !== null || prop !== undefined)) { + this.convertAllStrDateFromData(prop, isReverse); + } + } + } + + /** + * 检查是否需要添加 + * @param req 请求体 + */ + private checkNeedAdd(req: HttpRequest, type): boolean { + const { url } = req; + let serverNameList = []; + // 哪些请求需要添加routerKey的appToken + const routerKeyServerList = [ + 'uibot', + 'atmc', + 'atdm', + 'aim', + 'aam', + 'smartdata', + 'knowledgemaps', + 'flowengine', + 'tdd', + 'alearning', + 'audc', + 'im', + 'taskengine', + 'mdc', + 'digiwinabi', + 'semc', + 'semcdwscreen', + ]; + // 需要添加digi-middleware-auth-app的请求 + const digiMiddlewareServerNameList = [ + 'iam', + 'eoc', + 'emc', + 'knowledgemaps', + 'uibot', + 'atmc', + 'atdm', + 'aim', + 'aam', + 'im', + 'alearning', + 'audc', + 'semc', + // 新添加 + 'dmc', + 'cac', + 'semcdwscreen', + 'bossiam', + 'agileinteraction', + 'smartdata', + 'athena-console', + 'console', + // mui识别 athena-paas.digiwincloud.com.cn + this.muiUrl, + 'assets/', // mui取到的服务器资源 + 'flowengine', // bpmUrl + 'market', // digiwincloudUrl + 'tdd', // tddUrl + 'tbb', + 'digiwinabi', // biUrl + 'taskengine', // taskEngineUrl + 'athena-it', // itUrl + 'mdc', + 'lmc', + 'eas-designer', // ddsmDesignerUrl + 'esp', // espUrl + ]; + + switch (type) { + case 'routerKey': + serverNameList = routerKeyServerList; + break; + case 'digiMiddlewareAuthApp': + serverNameList = digiMiddlewareServerNameList; + break; + } + return serverNameList.some((name) => url.includes(name)); + } + + +} diff --git a/efm-demo-web/src/app/implementation/implementation-routes.ts b/efm-demo-web/src/app/implementation/implementation-routes.ts new file mode 100644 index 0000000..47ecb5c --- /dev/null +++ b/efm-demo-web/src/app/implementation/implementation-routes.ts @@ -0,0 +1,27 @@ +import { Routes } from '@angular/router'; +import { DwEmailLayoutComponent, DwPageIndexComponent } from '@webdpt/athena-dev-tools'; +import { DwAuthGuardService } from '@webdpt/framework/auth'; +import { programs } from 'app/config/custom-app-config'; + +export const IMPLEMENTATION_ROUTES: Routes = [ + { + path: '', + component: DwPageIndexComponent, + canActivate: [DwAuthGuardService], + data: { + tabSetHosting: true, + programs + } + }, + + { + path: 'dev/:secretkey', + pathMatch: 'prefix', + component: DwEmailLayoutComponent, + canActivate: [DwAuthGuardService], + data: { + tabSetHosting: true, + programs + } + } +]; diff --git a/efm-demo-web/src/app/implementation/implementation-routing.module.ts b/efm-demo-web/src/app/implementation/implementation-routing.module.ts new file mode 100644 index 0000000..dc465e6 --- /dev/null +++ b/efm-demo-web/src/app/implementation/implementation-routing.module.ts @@ -0,0 +1,49 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { MODULE_ROUTES } from '../routes'; +import { DwSsoLoginComponent } from '@webdpt/components/sso-login'; +import { DwLayoutAthenaComponent } from '@webdpt/athena-dev-tools'; +import { programs } from 'app/config/custom-app-config'; +import { DwLanguageService } from '@webdpt/framework/language'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'prefix', + component: DwLayoutAthenaComponent, + children: [ + ...MODULE_ROUTES + ], + data: { + tabSetHosting: true, + programs, + dwRouteData: { + programId: 'default', + i18n: ['basic', 'ant-components'] + } + }, + resolve: { transaction: DwLanguageService } + }, + { + path: 'login', + pathMatch: 'full', + loadChildren: (): Promise => import('./auth/login.module').then(m => m.LoginModule) + }, + { + path: 'forget', + pathMatch: 'full', + loadChildren: (): Promise => import('./auth/forget/forget.module').then(m => m.ForgetModule) + }, + { + path: 'sso-login', + pathMatch: 'full', + component: DwSsoLoginComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class ImplementationRoutingModule { } diff --git a/efm-demo-web/src/app/implementation/implementation.module.ts b/efm-demo-web/src/app/implementation/implementation.module.ts new file mode 100644 index 0000000..2b710ce --- /dev/null +++ b/efm-demo-web/src/app/implementation/implementation.module.ts @@ -0,0 +1,72 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Provider } from '@angular/compiler/src/core'; +import { HTTP_INTERCEPTORS } from '@angular/common/http'; + +import { + DW_MENU_JSON, + DW_PROGRAM_JSON, + DW_TAB_ROUTE_CONFIG_JSON, + DW_LANGUAGE_JSON +} from '@webdpt/framework/config'; +import { DW_PROGRAM_PAGE, DW_PROGRAM_ACTION } from '@webdpt/framework/config'; +import { DwHttpApiInterceptor } from '@webdpt/framework/http'; +import { ImplementationRoutingModule } from './implementation-routing.module'; +import { SharedModule } from './shared/shared.module'; +import { menuJson } from './menu/model/menu.config'; +import { programInfoJson } from './program-info/model/program.config'; +import { programPageInfoJson } from './program-info/model/program-page.config'; +import { programActionInfoJson } from './program-info/model/program-action.config'; +import { tabRouteConfigJson } from './tab-route/model/tab-route-config'; +import { languageList } from './language/model/language.config'; +import { openSelectModalDefault } from './shared/select-modal/default'; +import { openOrgTreeModalDefault } from './shared/organize-tree-modal/default'; +import { DW_SELECT_MODAL_DEFAULT } from '@webdpt/components/modals/select'; +import { DW_ORGTREE_MODAL_DEFAULT } from '@webdpt/framework/organize-tree-core'; +import { EfmDemoATModule } from './athena-app.module'; + +// import { themeConfig } from '../config/theme.config'; + +@NgModule({ + imports: [ + CommonModule, + ImplementationRoutingModule, + SharedModule, // 共享模組 + EfmDemoATModule + ], + declarations: [], + providers: [] +}) +export class ImplementationModule { + static forRoot(providers: Provider[]): ModuleWithProviders { + return { + ngModule: ImplementationModule, + providers: [ + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + // 靜態設定檔 + // { provide: DW_THEME, useValue: themeConfig }, // 主題設定檔 + { provide: DW_MENU_JSON, useValue: menuJson }, // Menu靜態設定檔 + { provide: DW_LANGUAGE_JSON, useValue: languageList }, // 可用語言清單 + { provide: DW_PROGRAM_JSON, useValue: programInfoJson }, // 作業靜態設定檔 + { provide: DW_PROGRAM_PAGE, useValue: programPageInfoJson }, // 作業子頁面設定檔 + { provide: DW_PROGRAM_ACTION, useValue: programActionInfoJson }, // 作業功能設定檔 + { provide: DW_TAB_ROUTE_CONFIG_JSON, useValue: tabRouteConfigJson }, // 多頁佈局預設開啟作業 + { provide: DW_SELECT_MODAL_DEFAULT, useValue: openSelectModalDefault }, // 開窗服務的共用設定值 + { provide: DW_ORGTREE_MODAL_DEFAULT, useValue: openOrgTreeModalDefault }, // 組織人員樹開窗元件 + + // Http API 攔截器 + DwHttpApiInterceptor, + { + provide: HTTP_INTERCEPTORS, + // 用來替換api的網址 + // request.url = '/users'; => request.url = 'http://api/users'; + useExisting: DwHttpApiInterceptor, + multi: true + }, + ...providers + ] + }; + } +} diff --git a/efm-demo-web/src/app/implementation/language/index.ts b/efm-demo-web/src/app/implementation/language/index.ts new file mode 100644 index 0000000..fed0e04 --- /dev/null +++ b/efm-demo-web/src/app/implementation/language/index.ts @@ -0,0 +1,12 @@ +import * as zh_CN from '../../../assets/i18n/zh_CN/default.json'; +import * as zh_TW from '../../../assets/i18n/zh_TW/default.json'; +import * as en_US from '../../../assets/i18n/en_US/default.json'; +import { PluginLanguageChecklist } from '@athena/dynamic-core'; + +export const APP_LANGUAGE_CHECKLIST = { + language: { + zh_CN, + zh_TW, + en_US + } +} as PluginLanguageChecklist; diff --git a/efm-demo-web/src/app/implementation/language/model/language.config.ts b/efm-demo-web/src/app/implementation/language/model/language.config.ts new file mode 100644 index 0000000..c2ea917 --- /dev/null +++ b/efm-demo-web/src/app/implementation/language/model/language.config.ts @@ -0,0 +1,15 @@ +// 可用語言清單靜態設定檔 +export const languageList = [ + { + 'value': 'en_US', + 'label': 'English' + }, + { + 'value': 'zh_CN', + 'label': '简体' + }, + { + 'value': 'zh_TW', + 'label': '繁體' + } +]; diff --git a/efm-demo-web/src/app/implementation/menu/model/menu.config.ts b/efm-demo-web/src/app/implementation/menu/model/menu.config.ts new file mode 100644 index 0000000..82150db --- /dev/null +++ b/efm-demo-web/src/app/implementation/menu/model/menu.config.ts @@ -0,0 +1,5 @@ +import { menuData } from './menu.model'; // Menu靜態設定檔 + +export const menuJson = [ + ...menuData +]; diff --git a/efm-demo-web/src/app/implementation/menu/model/menu.model.ts b/efm-demo-web/src/app/implementation/menu/model/menu.model.ts new file mode 100644 index 0000000..e5dbc61 --- /dev/null +++ b/efm-demo-web/src/app/implementation/menu/model/menu.model.ts @@ -0,0 +1 @@ +export const menuData = []; diff --git a/efm-demo-web/src/app/implementation/model/model.ts b/efm-demo-web/src/app/implementation/model/model.ts new file mode 100644 index 0000000..2ca724a --- /dev/null +++ b/efm-demo-web/src/app/implementation/model/model.ts @@ -0,0 +1,19 @@ +import { + DynamicFormValueControlModelConfig, +} from '@athena/dynamic-core'; + +// eslint-disable-next-line no-shadow +export enum StateCode { + waiting = 'waiting', + completed = 'completed', +} + +export interface DefaultModelConfig extends DynamicFormValueControlModelConfig { + type: string; + stateCode?: StateCode; + actions?: any[]; + operations?: any[]; + finished?: boolean; + extendedFields: any; + attach: any; +} diff --git a/efm-demo-web/src/app/implementation/program-info/model/program-action.config.ts b/efm-demo-web/src/app/implementation/program-info/model/program-action.config.ts new file mode 100644 index 0000000..a040812 --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program-action.config.ts @@ -0,0 +1,6 @@ +import { programActionData } from './program-action.model'; + + +export const programActionInfoJson = [ + ...programActionData // ProgramAction靜態設定檔 +]; diff --git a/efm-demo-web/src/app/implementation/program-info/model/program-action.model.ts b/efm-demo-web/src/app/implementation/program-info/model/program-action.model.ts new file mode 100644 index 0000000..8bfeba3 --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program-action.model.ts @@ -0,0 +1 @@ +export const programActionData = []; diff --git a/efm-demo-web/src/app/implementation/program-info/model/program-page.config.ts b/efm-demo-web/src/app/implementation/program-info/model/program-page.config.ts new file mode 100644 index 0000000..bf81e0c --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program-page.config.ts @@ -0,0 +1,6 @@ +import { programPageData } from './program-page.model'; + + +export const programPageInfoJson = [ + ...programPageData // ProgramPage靜態設定檔 +]; diff --git a/efm-demo-web/src/app/implementation/program-info/model/program-page.model.ts b/efm-demo-web/src/app/implementation/program-info/model/program-page.model.ts new file mode 100644 index 0000000..1026693 --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program-page.model.ts @@ -0,0 +1 @@ +export const programPageData = []; diff --git a/efm-demo-web/src/app/implementation/program-info/model/program.config.ts b/efm-demo-web/src/app/implementation/program-info/model/program.config.ts new file mode 100644 index 0000000..c53bfdf --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program.config.ts @@ -0,0 +1,5 @@ +import { programData } from './program.model'; + +export const programInfoJson = [ + ...programData, // Program靜態設定檔 +]; diff --git a/efm-demo-web/src/app/implementation/program-info/model/program.model.ts b/efm-demo-web/src/app/implementation/program-info/model/program.model.ts new file mode 100644 index 0000000..a5401ee --- /dev/null +++ b/efm-demo-web/src/app/implementation/program-info/model/program.model.ts @@ -0,0 +1,8 @@ +export const programData = [ + { + 'id': 'home', + 'module': 'root', // 沒有模組歸屬不做模組切分,不上傳到IAM做權限控管 + 'type': '', + 'routerLink': '/' + }, +]; diff --git a/efm-demo-web/src/app/implementation/programs/.gitkeep b/efm-demo-web/src/app/implementation/programs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/app/implementation/programs/basic-detail/basic-detail.module.ts b/efm-demo-web/src/app/implementation/programs/basic-detail/basic-detail.module.ts new file mode 100644 index 0000000..02f934f --- /dev/null +++ b/efm-demo-web/src/app/implementation/programs/basic-detail/basic-detail.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +const programsModules = [ + +]; + +@NgModule({ + imports: [ + CommonModule, + ...programsModules + ], + declarations: [] +}) +export class BasicDetailModule { } diff --git a/efm-demo-web/src/app/implementation/programs/project-detail/project-detail.module.ts b/efm-demo-web/src/app/implementation/programs/project-detail/project-detail.module.ts new file mode 100644 index 0000000..8a7fd25 --- /dev/null +++ b/efm-demo-web/src/app/implementation/programs/project-detail/project-detail.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +const programsModules = [ + +]; + +@NgModule({ + imports: [ + CommonModule, + ...programsModules + ], + declarations: [] +}) +export class ProjectDetailModule { } diff --git a/efm-demo-web/src/app/implementation/programs/task-detail/task-detail.module.ts b/efm-demo-web/src/app/implementation/programs/task-detail/task-detail.module.ts new file mode 100644 index 0000000..4d99dbc --- /dev/null +++ b/efm-demo-web/src/app/implementation/programs/task-detail/task-detail.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +const programsModules = [ + +]; + +@NgModule({ + imports: [ + CommonModule, + ...programsModules + ], + declarations: [] +}) +export class TaskDetailModule { } diff --git a/efm-demo-web/src/app/implementation/service/business-dynamic-component-map.ts b/efm-demo-web/src/app/implementation/service/business-dynamic-component-map.ts new file mode 100644 index 0000000..f9eb39c --- /dev/null +++ b/efm-demo-web/src/app/implementation/service/business-dynamic-component-map.ts @@ -0,0 +1,15 @@ +import { + DynamicFormControl, + DynamicFormControlModel, +} from '@athena/dynamic-core'; +import { Type } from '@angular/core'; + +export function businessUIFormComponentMapFn( + model: DynamicFormControlModel +): Type | null { + switch (model.type) { + default: + break; + } + return null; +} diff --git a/efm-demo-web/src/app/implementation/service/common.service.ts b/efm-demo-web/src/app/implementation/service/common.service.ts new file mode 100644 index 0000000..4d041b7 --- /dev/null +++ b/efm-demo-web/src/app/implementation/service/common.service.ts @@ -0,0 +1,123 @@ +import { HttpClient } from '@angular/common/http'; +import { Inject, Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { DwSystemConfigService } from '@webdpt/framework/config'; +import { DW_AUTH_TOKEN } from '@webdpt/framework/auth'; + +@Injectable({ providedIn: 'root' }) +export class CommonService { + atdmUrl: string; + bpmUrl: string; + atmcUrl: any; + frcUrl: any; + eocUrl: any; + themeMapUrl: any; + pageData: any; + // 记录机制的content参数 + content: any; + uibotUrl: string; + constructor( + @Inject(DW_AUTH_TOKEN) protected authToken: any, + private http: HttpClient, + private configService: DwSystemConfigService + ) { + this.configService.get('atdmUrl').subscribe((url: string): void => { + this.atdmUrl = url; + }); + this.configService.get('bpmUrl').subscribe((url): void => { + this.bpmUrl = url; + }); + this.configService.get('atmcUrl').subscribe((url): void => { + this.atmcUrl = url; + }); + this.configService.get('frcUrl').subscribe((url): void => { + this.frcUrl = url; + }); + this.configService.get('eocUrl').subscribe((url): void => { + this.eocUrl = url; + }); + this.configService.get('uibotUrl').subscribe((url: string): void => { + this.uibotUrl = url; + }); + } + /** + * 获取inv_data + * @param actionId + * @param params + * */ + getInvData(actionId: string, params?: any, eoc?: any): Observable { + const executeContext = this.content?.executeContext; + const _params = { + actionId, + parameter: params, + businessUnit: eoc || executeContext?.businessUnit, + executeContext: executeContext, // 传参 + }; + return this.http.post(`${this.atdmUrl}/api/atdm/v1/data/query/by/actionId`, _params, { + headers: this.getHeader(), + }); + } + + /** + * 服务编排-提交数据方法 + * @param params + * @returns + */ + + atmcSubmit(params: any): Observable { + const url = `${this.atmcUrl}/api/atmc/v1/action/submit`; + return this.http.post(url, params, { headers: this.getHeader() }); + } + + getHeader(): any { + if (this.authToken?.token) { + return { + 'digi-middleware-auth-user': this.authToken.token, + token: this.authToken.token, + }; + } + return {}; + } + + /** + * 调用开窗的方法 + * @param executeContext 当前页面的executeContext + * @param serviceName 调用的服务名称 + * @returns + */ + getOpenwindowParams(executeContext: any, serviceName: string): any { + return new Promise((resolve, inject) => { + const params = { + tmAction: { + actionId: 'esp_' + serviceName, + title: '推荐', + actionParams: [], + language: { + title: { + en_US: 'recommend', + zh_TW: '推薦', + }, + }, + type: 'ESP', + url: 'http://esp.digiwincloud.com.cn/CROSS/RESTful', + actionResponse: null, + serviceName: serviceName, + needProxyToken: null, + attachActions: null, + flatData: null, + }, + executeContext: executeContext, + }; + + const url = `${this.uibotUrl}/api/ai/v1/data/query/action`; + this.http + .post(url, params, { + headers: this.getHeader(), + }) + .subscribe((res): void => { + resolve(res); + }); + }); + } + +} diff --git a/efm-demo-web/src/app/implementation/service/dynamic-model-convert-bussiness.service.ts b/efm-demo-web/src/app/implementation/service/dynamic-model-convert-bussiness.service.ts new file mode 100644 index 0000000..c41d331 --- /dev/null +++ b/efm-demo-web/src/app/implementation/service/dynamic-model-convert-bussiness.service.ts @@ -0,0 +1,40 @@ +import { + DynamicFormControlModel, + parseReviver, isString, + DynamicFormModelConvertService, + cloneDeep, + CustomAppConfigService +} from '@athena/dynamic-core'; +import { Injectable } from '@angular/core'; +import { SYSTEM_CONFIG } from 'app/config/system-config'; + +@Injectable() +export class DynamicBusinessFormModelConvertService implements DynamicFormModelConvertService { + constructor( + public customAppConfigService: CustomAppConfigService + ) { } + + fromOneJSON( + json: string | object, + content: any + ): DynamicFormControlModel { + let model; + if (isString(json)) { + model = isString(json); + } else if (typeof json === 'object') { + model = cloneDeep(json); + } else { + model = JSON.parse(JSON.stringify(json), parseReviver); + } + const layout = model.layout || null; + let result: DynamicFormControlModel; + model.content = content; + switch (model.type) { + default: + break; + } + /** 渲染定制组件时,将应用信息传给service */ + if (!!result) { this.customAppConfigService.customConfig = { appCode: SYSTEM_CONFIG.dwAppId };} + return result; + } +} diff --git a/efm-demo-web/src/app/implementation/shared/cust-shared.module.ts b/efm-demo-web/src/app/implementation/shared/cust-shared.module.ts new file mode 100644 index 0000000..9ab832f --- /dev/null +++ b/efm-demo-web/src/app/implementation/shared/cust-shared.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { DynamicFormsAntUIModule } from '@athena/dynamic-ui'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + TranslateModule, + DynamicFormsAntUIModule, + ], + exports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + TranslateModule, + DynamicFormsAntUIModule, + ] +}) + +export class CustSharedModule { } diff --git a/efm-demo-web/src/app/implementation/shared/organize-tree-modal/default.ts b/efm-demo-web/src/app/implementation/shared/organize-tree-modal/default.ts new file mode 100644 index 0000000..1f6d0bc --- /dev/null +++ b/efm-demo-web/src/app/implementation/shared/organize-tree-modal/default.ts @@ -0,0 +1,4 @@ +import { IDwOrgTreeDefault } from '@webdpt/framework/organize-tree-core'; +import { NzTreeNode } from 'ng-zorro-antd/tree'; + +export const openOrgTreeModalDefault: IDwOrgTreeDefault = {}; diff --git a/efm-demo-web/src/app/implementation/shared/select-modal/default.ts b/efm-demo-web/src/app/implementation/shared/select-modal/default.ts new file mode 100644 index 0000000..fc08412 --- /dev/null +++ b/efm-demo-web/src/app/implementation/shared/select-modal/default.ts @@ -0,0 +1,20 @@ +import { IDwSelectModalCustomizeConfig } from '@webdpt/components/modals/select'; + +export const openSelectModalDefault: IDwSelectModalCustomizeConfig = { + modalTitle: 'default', // modal 標題. + modalWidth: '80%', // modal 寬度. + modalOkText: 'dw-determine', // 確認按鈕文字. + modalCancelText: 'dw-cancel', // 取消按鈕文字. + tableIdField: '', // 使用的 id 欄位. + tableNameField: '', // 使用的 name 欄位. + tableColDefs: [], // 表格欄位定義. + tableMultiSelect: true, // 多選或單選. + tableShowTag: true, // 是否顯示下方的 tag. + tableIsFilter: true, // 是否提供搜尋. + tablePageSize: 3, // 每頁展示多少數據,可雙向繫結. + tableShowPagination: true, // 是否顯示分頁器. + tableShowSizeChanger: true, // 是否可以改變 dwPageSize. + tableNoResult: '', // 無數據時顯示內容, 空值則使用預設值. + tablePageSizeOptions: [5, 10, 15, 20], // 頁數選擇器可選值. + dataSource: null // 資料源 service. +}; diff --git a/efm-demo-web/src/app/implementation/shared/shared.module.ts b/efm-demo-web/src/app/implementation/shared/shared.module.ts new file mode 100644 index 0000000..7c55c3b --- /dev/null +++ b/efm-demo-web/src/app/implementation/shared/shared.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { DwExceptionModule } from '@webdpt/components/exception'; + +/** + * 共享模組 + * + * @export + * @class SharedModule + */ +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule + ], + exports: [ + FormsModule, + ReactiveFormsModule, + DwExceptionModule + ] +}) +export class SharedModule { } diff --git a/efm-demo-web/src/app/implementation/style/index.less b/efm-demo-web/src/app/implementation/style/index.less new file mode 100644 index 0000000..ffa2b3b --- /dev/null +++ b/efm-demo-web/src/app/implementation/style/index.less @@ -0,0 +1 @@ +@import './variable.less'; diff --git a/efm-demo-web/src/app/implementation/style/variable.less b/efm-demo-web/src/app/implementation/style/variable.less new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/app/implementation/tab-route/model/tab-route-config.ts b/efm-demo-web/src/app/implementation/tab-route/model/tab-route-config.ts new file mode 100644 index 0000000..2b1c018 --- /dev/null +++ b/efm-demo-web/src/app/implementation/tab-route/model/tab-route-config.ts @@ -0,0 +1,10 @@ +// 多頁佈局預設開啟作業 +export const tabRouteConfigJson = [ + { + 'id': 'home', + 'canClose': false, + 'defaultOpen': true, + 'canMultiOpen': false, + 'iconClass': 'dwType:home' + } +]; diff --git a/efm-demo-web/src/app/implementation/tools-routing-wrapper.module.ts b/efm-demo-web/src/app/implementation/tools-routing-wrapper.module.ts new file mode 100644 index 0000000..08faa80 --- /dev/null +++ b/efm-demo-web/src/app/implementation/tools-routing-wrapper.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; + +import { DwToolsRoutingModule } from '@webdpt/components/tools-routing'; +import { SharedModule } from './shared/shared.module'; +import { DwCmsRoutingModule } from '@webdpt/programs'; + +@NgModule({ + imports: [ + SharedModule, // 專案的共享模組 + DwToolsRoutingModule, // 平台組件的預設路由模組 + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + // DwCmsRoutingModule // 平台作業路由 + ] +}) +export class ToolsRoutingWrapper { } diff --git a/efm-demo-web/src/app/implementation/utils.ts/cookie-util.ts b/efm-demo-web/src/app/implementation/utils.ts/cookie-util.ts new file mode 100644 index 0000000..8ac41da --- /dev/null +++ b/efm-demo-web/src/app/implementation/utils.ts/cookie-util.ts @@ -0,0 +1,38 @@ +export class CookieUtil { + static get(name) { + // eslint-disable-next-line prefer-const + let cookieName = `${encodeURIComponent(name)}=`, + // eslint-disable-next-line prefer-const + cookieStart = document.cookie.indexOf(cookieName), + cookieValue = null; + if (cookieStart > -1) { + let cookieEnd = document.cookie.indexOf(';', cookieStart); + if (cookieEnd === -1) { + cookieEnd = document.cookie.length; + } + cookieValue = decodeURIComponent( + document.cookie.substring(cookieStart + cookieName.length, cookieEnd) + ); + } + return cookieValue; + } + static set(name, value, expires?, path?, domain?, secure?) { + let cookieText = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`; + if (expires instanceof Date) { + cookieText += `; expires=${expires.toUTCString()}`; + } + if (path) { + cookieText += `; path=${path}`; + } + if (domain) { + cookieText += `; domain=${domain}`; + } + if (secure) { + cookieText += '; secure'; + } + document.cookie = cookieText; + } + static unset(name, path, domain, secure) { + CookieUtil.set(name, '', new Date(0), path, domain, secure); + } +} diff --git a/efm-demo-web/src/app/industry/industry-routing.module.ts b/efm-demo-web/src/app/industry/industry-routing.module.ts new file mode 100644 index 0000000..c35e880 --- /dev/null +++ b/efm-demo-web/src/app/industry/industry-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class IndustryRoutingModule { } diff --git a/efm-demo-web/src/app/industry/industry.module.ts b/efm-demo-web/src/app/industry/industry.module.ts new file mode 100644 index 0000000..b133026 --- /dev/null +++ b/efm-demo-web/src/app/industry/industry.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { IndustryRoutingModule } from './industry-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + IndustryRoutingModule + ], + declarations: [] +}) +export class IndustryModule { } diff --git a/efm-demo-web/src/app/page-not-found.component.ts b/efm-demo-web/src/app/page-not-found.component.ts new file mode 100644 index 0000000..e32ef0d --- /dev/null +++ b/efm-demo-web/src/app/page-not-found.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-prog001', + template: `

404

` +}) +export class PageNotFoundComponent { + + constructor() { } + + +} diff --git a/efm-demo-web/src/app/routes.ts b/efm-demo-web/src/app/routes.ts new file mode 100644 index 0000000..b4e066d --- /dev/null +++ b/efm-demo-web/src/app/routes.ts @@ -0,0 +1,12 @@ +import { Routes } from '@angular/router'; + +import { CUSTOMIZATION_ROUTES } from './customization/customization-routes'; + +export const MODULE_ROUTES: Routes = [ + { + path: 'dpt', // 路徑為/dpt/* + pathMatch: 'prefix', + loadChildren: (): Promise => import('./implementation/tools-routing-wrapper.module').then(m => m.ToolsRoutingWrapper) + }, + ...CUSTOMIZATION_ROUTES +]; diff --git a/efm-demo-web/src/app/style.less b/efm-demo-web/src/app/style.less new file mode 100644 index 0000000..1877254 --- /dev/null +++ b/efm-demo-web/src/app/style.less @@ -0,0 +1,6 @@ +/* You can add global styles to this file, and also import other style files */ +@webdpt-path: "@webdpt"; +@import "~@{webdpt-path}/components/style/index.less"; +@import "~@{webdpt-path}/programs/style/index.less"; +@import './implementation/style/index.less'; +@import './customization/style/index.less'; diff --git a/efm-demo-web/src/assets/api.dev.json b/efm-demo-web/src/assets/api.dev.json new file mode 100644 index 0000000..6e13422 --- /dev/null +++ b/efm-demo-web/src/assets/api.dev.json @@ -0,0 +1,34 @@ +{ + "apiUrl": "", + "iamUrl": "https://iam-test.digiwincloud.com.cn", + "emcUrl": "https://emc-test.digiwincloud.com.cn", + "mscUrl": "https://msc-test.digiwincloud.com.cn", + "eocUrl": "https://eoc-test.digiwincloud.com.cn", + "dmcUrl": "https://dmc-test.digiwincloud.com.cn", + "themeMapUrl": "https://thememap-test.apps.digiwincloud.com.cn/restful/service", + "smartDataUrl": "https://smartdata-test.apps.digiwincloud.com.cn/restful/service", + "uibotUrl": "https://uibot-test.apps.digiwincloud.com.cn", + "atmcUrl": "https://atmc-test.apps.digiwincloud.com.cn", + "atdmUrl": "https://atdm-test.apps.digiwincloud.com.cn", + "multiTenant": "true", + "athenaConsole": "https://athena-console-test.digiwincloud.com.cn", + "consoleUrl": "https://console-test.digiwincloud.com.cn", + "muiUrl": "https://athena-test.digiwincloud.com.cn", + "bpmUrl": "https://flowengine-test.apps.digiwincloud.com.cn/restful/standard/bpm_cloud", + "digiwincloudUrl": "https://market-test.digiwincloud.com.cn", + "aimUrl": "https://aim-test.apps.digiwincloud.com.cn", + "aamUrl": "https://aam-test.apps.digiwincloud.com.cn", + "audcUrl": "https://audc-test.apps.digiwincloud.com.cn", + "omUrl": "@OM_URL@", + "marketUrl": "@MARKET_URL@", + "omcUrl": "@OMC_SERVICE_URL@", + "gmcUrl": "@GMC_SERVICE_URL@", + "cacUrl": "@CAC_SERVICE_URL@", + "frUrl": "@FINEREPORT_URL@", + "analytics": { + "gtm": "@ANALYTICS_GTM@", + "baidu": "@ANALYTICS_BAIDU@" + }, + "dwAppSecret": "@DW_APP_SECRET@" + } + \ No newline at end of file diff --git a/efm-demo-web/src/assets/api.json b/efm-demo-web/src/assets/api.json new file mode 100644 index 0000000..f633f6c --- /dev/null +++ b/efm-demo-web/src/assets/api.json @@ -0,0 +1,19 @@ +{ + "apiUrl": "@WEB_SERVICE_URL@", + "iamUrl": "@IAM_SERVICE_URL@", + "emcUrl": "@EMC_SERVICE_URL@", + "omUrl": "@OM_URL@", + "consoleUrl": "@CONSOLE_URL@", + "marketUrl": "@MARKET_URL@", + "omcUrl": "@OMC_SERVICE_URL@", + "gmcUrl": "@GMC_SERVICE_URL@", + "cacUrl": "@CAC_SERVICE_URL@", + "frUrl": "@FINEREPORT_URL@", + "dmcUrl": "@DMC_SERVICE_URL@", + "analytics": { + "gtm": "@ANALYTICS_GTM@", + "baidu": "@ANALYTICS_BAIDU@" + }, + "multiTenant": "@MULTI_TENANT@", + "dwAppSecret": "@DW_APP_SECRET@" +} diff --git a/efm-demo-web/src/assets/i18n/en_US/ant-components.json b/efm-demo-web/src/assets/i18n/en_US/ant-components.json new file mode 100644 index 0000000..7e6fe94 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/en_US/ant-components.json @@ -0,0 +1,211 @@ +{ + "dj-c-由Athena发起当前项目": "Current project initiated by Athena", + "dj-c-预计开工日": "Expected commencement date", + "dj-c-来源由n张工单组成": "source:There are {{ taskName }}", + "dj-c-来源由n张ids工单组成": "source:There are {{ n }} {{ taskName }} such as {{ ids }}", + "dj-c-倒计时": "Countdown", + "dj-c-需完成": "To be completed", + "dj-c-收起": "fold", + "dj-c-更多": "more", + "dj-c-操作": "Operations", + "dj-c-更换": "Change", + "dj-c-提示": "Tips", + "dj-c-我知道了": "I know that", + "dj-c-存在异常是否忽略提交": "Existence {{n}} Exception,
Are you sure to submit?", + "dj-c-是否确定提交": "Are you sure to submit?", + "dj-c-请确认是否填写完整": "Please confirm whether it is completed", + "dj-c-取消": "Cancel", + "dj-c-确认": "Confirm", + "dj-c-确定": "Determine", + "dj-c-明细": "Detail", + "dj-c-下载": "Download", + "dj-c-预览": "Preview", + "dj-c-已读n次": "Read {{ n }} times", + "dj-c-取消拆行": "Remove split", + "dj-c-拆行": "Split data", + "dj-c-旧公式": "Old Formula", + "dj-c-新公式": "New Formula", + "dj-c-查看模拟推估": "View simulation estimation", + "dj-c-权重总和应等于100": "The sum of weights should be equal to 100", + "dj-c-暂无数据": "No Data", + "dj-c-必填": "Required", + "dj-c-重新编辑": "Re Edit", + "dj-c-编辑": "Edit", + "dj-c-请选择需要提交的数据": "Please select the data to be submitted", + "dj-c-收货地址": "Receiving Address", + "dj-c-采购员编号": "Buyer Number", + "dj-c-转派至": "Transfer To", + "dj-c-员工编号": "Employee Number", + "dj-c-员工姓名": "Employee Name", + "dj-c-请输入员工编号": "Enter employee number", + "dj-c-将此任务转派至您": "assigned this task to you", + "dj-c-退回重签至": "Return To", + "dj-c-请输入签核意见": "Please enter your approval comments", + "dj-c-签核意见": "Approval comments", + "dj-c-查看签核进度": "Check sign off progress", + "dj-c-是否确定转派": "Are you sure you want to transfer", + "dj-c-是否确定退回": "Are you sure you want to return it", + "dj-c-签核进程": "Sign off process", + "dj-c-是否确定同意": "Are you sure you agree", + "dj-c-非必填": "Not required", + "dj-c-未开始": "Not started", + "dj-c-进行中": "In progress", + "dj-c-已完成": "Completed", + "dj-c-退回": "Return", + "dj-c-加签": "Countersignature", + "dj-c-已同意": "Agreed", + "dj-c-已撤销": "rescinded", + "dj-c-已中止": "Aborted", + "dj-c-已暂停": "Suspended", + "dj-c-不需签核": "No sign off", + "dj-c-需签核": "Sign off required", + "dj-c-取回重办": "Back to recreate", + "dj-c-已通知": "Notified", + "dj-c-已会办": "Will have to do", + "dj-c-正在进行": "in processing", + "dj-c-紧急": "in urgent", + "dj-c-逾期": "be overdue", + "dj-c-天": "day", + "dj-c-时": "hours", + "dj-c-分钟": "minutes", + "dj-c-最早": "The earliest", + "dj-c-最大逾期": "Maximum overdue", + "dj-c-共n项": "{{ n }} items in total", + "dj-c-共str": "{{ str }} in total", + "dj-c-个": " ", + "dj-c-页面加载失败": "Page Loading Failed", + "dj-c-重新加载": "Reload", + "dj-c-请不要输入表情": "Please do not enter the expression", + "dj-c-不能选择当前用户": "The current user cannot be selected", + "dj-c-是否确定退回重办": "Are you sure to return and re-do", + "dj-c-所有计量": "All measurements", + "dj-c-库存年月": "Inventory date", + "dj-c-周转天数": "Turnover days", + "dj-c-平均存货净额": "Average net inventory", + "dj-c-销售净额": "Net sales", + "dj-c-平均耗量(年月)": "Average consumption (month, month)", + "dj-c-标准差(年月)": "Standard deviation (month, year)", + "dj-c-平均销售金额(年月)": "Average sales amount (month, month)", + "dj-c-标准化生产": "Standardized production", + "dj-c-修改": "edit", + "dj-c-已": "result ", + "dj-c-总量": "Total", + "dj-c-目标:差异率小于n": "Target:The difference rate is less than {{n}}", + "dj-c-共n项定位调整": "A total of{{n}}positioning adjustment(s)", + "dj-c-实际": "Actual", + "dj-c-合理": "Expected", + "dj-c-本期共": "There are positioning adjustments in ", + "dj-c-项": " test(s)", + "dj-c-检测出现定位调整,建议修改参数": " in this issue, and it is recommended to modify the parameters", + "dj-c-成品": "Products", + "dj-c-半成品": "Semi-finished products", + "dj-c-原材料": "Material", + "dj-c-耗用金额": "Amount consumed", + "dj-c-高": "High", + "dj-c-中": "Medium", + "dj-c-低": "Low", + "dj-c-频进货": " frequency purchase", + "dj-c-原材料机制调整建议": "Material mechanism adjustment suggestions", + "dj-c-项采纳": "adopted", + "dj-c-项拒绝": "rejection(s)", + "dj-c-共计": "Total", + "dj-c-n项": "{{n}} item(s)", + "dj-c-返回": "Back", + "dj-c-统计": "Total", + "dj-c-标准差异率n": "Standard deviation rate {{n}}", + "dj-c-采购间隔参数": "Purchase interval parameters", + "dj-c-实际采购LT": "Actual purchase LT", + "dj-c-实际采购": "Actual purchase", + "dj-c-机制调整建议": "Mechanism adjustment suggestions", + "dj-c-建议新定位": "Suggest new positioning", + "dj-c-高频进货": "High frequency purchase", + "dj-c-中频进货": "Medium frequency purchase", + "dj-c-低频进货": "Low frequency purchase", + "dj-c-高频进货n项": "High frequency purchase {{n}} item(s)", + "dj-c-中频进货n项": "Medium frequency purchase {{n}} item(s)", + "dj-c-低频进货n项": "Low frequency purchase {{n}} item(s)", + "dj-c-没有可获取到的可退回列表": "No returnable list available", + "dj-c-数据加载异常": "Page Loading Failed", + "dj-c-正在校验": "validating", + "dj-c-输入错误": "Incorrect input", + "dj-c-输入不完整": "Incomplete input", + "dj-c-输入不完整或者错误": "Incomplete or incorrect input", + "dj-c-校验失败": "Verification failed", + "dj-c-支持批量提交但未选择对象": "Batch submission is supported but no object is selected", + "dj-c-差异": "difference", + "dj-c-方案进度": "Programme progress", + "dj-c-加量": "dosage", + "dj-c-减量": "decrement", + "dj-c-延迟": "delay", + "dj-c-提早": "early", + "dj-c-拆行输入错误": "Split line input error", + "dj-c-请上传": "Please select and upload file", + "dj-c-上传于": "{{user}} upload file at {{date}}", + "dj-c-已删除附件": "Attachment deleted", + "dj-c-删除附件失败": "Delete Failed", + "dj-c-上传失败": "Upload Failed", + "dj-c-转派": "Transfer", + "dj-c-没有查询到可退回的关卡名称": "No returnable level name found", + "dj-c-请刷新重试": "Please refresh and try again", + "dj-c-当前任务已完成": "Current task completed", + "dj-c-加签意见": "Endorsement opinion", + "dj-c-请选择加签方式": "Please choose the way of sign", + "dj-c-向前加签": "Sign forward", + "dj-c-向后加签": "Sign backward", + "dj-c-签核人": "Signer", + "dj-c-请选择": "Please choose", + "dj-c-请选择签核人": "Please choose signer", + "dj-c-是否确定撤回": "Are you sure you want to withdraw", + "dj-c-撤回后同一方案且同一批提交的方案将同步撤回": "After withdrawal, the same scheme and the same batch of submitted schemes will be withdrawn simultaneously", + "dj-c-撤回意见": "Withdrawal of opinion", + "dj-c-发票上传": "Invoice Upload", + "dj-c-发票代号": "Invoice Code", + "dj-c-发票号码": "Invoice Number", + "dj-c-开票日期": "Invoice Date", + "dj-c-校验码(后6位)": "Check Code (last 6 digits)", + "dj-c-请将6位校验码输入完整": "Please input the 6-digit check code completely", + "dj-c-金额(不含税)": "Amount (excluding tax)", + "dj-c-只能输入数字": "only can input numbers", + "dj-c-只能输入整数或者带2位小数": "only input integer or with 2 decimal places", + "dj-c-限制类型": "Support only {{ n }}.", + "dj-c-不限制大小": "Unlimited size.", + "dj-c-限制大小": "Limited {{ n }}.", + "dj-c-请输入关键字": "Please enter keywords", + "dj-c-合计": "Total", + "dj-c-是否确定加签": "Are you sure to sign", + "dj-c-已撤回": "Withdrawn", + "dj-c-请输入撤回意见": "Please enter withdrawal comments", + "dj-c-重签意见": "Re sign comments", + "dj-c-转派意见": "Opinions on assignment", + "dj-c-请填写意见": "Fill in comments", + "dj-c-重办意见": "Reorganized comments", + "dj-c-请填写重办意见": "Please fill in reorganized comments", + "dj-c-请输入发票代号": "Please input invoice code", + "dj-c-请输入发票号码": "Please enter invoice number", + "dj-c-请输入开票日期": "Please enter billing date", + "dj-c-请输入金额": "Please input the amount(Excluding tax)", + "dj-c-上传发票": "Upload Invoice", + "dj-c-支持上传多张发票": "Support to upload multiple invoices", + "dj-c-请留言": "Please input message", + "dj-c-发送": "Send", + "dj-c-通知提醒": "Notice to remind", + "dj-c-msg-content": "Please finish the task as soon as possible ~", + "dj-c-代": "E", + "dj-c-前": " before", + "dj-c-生效": "Valid", + "dj-c-已失效": "Invalid", + "dj-c-已保存": "Saved", + "dj-c-未保存": "Not saved", + "dj-c-已选中n项": "{{ n }} selected", + "dj-c-m来源共n项发生变更": "{{m}} total {{n}} item changed", + "dj-c-查看甘特图": "View Gantt chart", + "dj-c-甘特图": "Gantt chart", + "dj-c-异常": "abnormal", + "dj-c-逾期n天": "overdue for {{n}} days", + "dj-c-全部信息请输入关键字搜索": "Please enter keyword search for all information", + "dj-c-*至少选中一项数据": "*Select at least one item of data", + "dj-c-已选n项": "{{ n }} items selected", + "dj-c-荐": "Recommendation", + "dj-c-请输入专案编号": "Please enter project number", + "dj-c-请输入专案名称": "Please enter project name" +} diff --git a/efm-demo-web/src/assets/i18n/en_US/basic.json b/efm-demo-web/src/assets/i18n/en_US/basic.json new file mode 100644 index 0000000..3590881 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/en_US/basic.json @@ -0,0 +1,157 @@ +{ + "dj-请输入": "Please Input ", + "dj-请选择": "Please Select ", + "dj-搜索点什么吧": "Search for date, project target, task name, charge person or executor", + "dj-历史记录": "Search History", + "dj-登出": "Sign Out", + "dj-管理模组": "Management Module", + "dj-交付设计器": "Delivery Designer", + "menu": { + "project-center": "Projects Center" + }, + "dj-全部关闭": "Close All", + "dj-批量操作": "Batch", + "dj-来源由n张工单组成": "source:There are {{ n }} {{sourceName}} such as {{ ids }}", + "dj-来源由n张x单组成": "source:There are {{taskName}}", + "dj-来源由n张如ids的x单组成": "source:There are {{ n }} {{taskName}} such as {{ ids }}", + "dj-倒计时": "Countdown", + "dj-预计开工日": "Expected commencement date", + "dj-来源": "Source", + "dj-由Athena发起当前项目": "Current project initiated by Athena", + "dj-人工": "Manual", + "dj-自动": "Auto", + "dj-未完成": "Unfinished", + "dj-需完成": "Finished", + "dj-共计": "Total", + "dj-共n笔": "{{n}} in total", + "dj-n笔": "{{n}}", + "dj-待入库n项": "{{n}} items to be warehoused", + "dj-我知道了": "I got it!", + "dj-立即查看": "detail", + "dj-切换企业": "Switch Companies", + "dj-个性化设定": "Settings", + "dj-常用设置": "Common Settings", + "dj-开启勿扰": "Do not disturb has been turned on", + "dj-关闭勿扰": "Do not disturb has been turned off", + "dj-开启代理人": "Agent has been turned on", + "dj-关闭代理人": "Agent has been turned off", + "dj-基本设置": "Personalized Settings", + "dj-工作桌面": "Desktop", + "dj-搜索结果": "Search Result", + "dj-进度查询": "Progress Inquiry", + "dj-发起项目": "Add Project", + "dj-项目任务": "Tasks", + "dj-当责者": "Charge Person", + "dj-项目名称": "Project Name", + "dj-状态": "Status", + "dj-task-report-项目状况查询": "Project Status", + "dj-task-report-历史项目查询": "Project History", + "dj-task-report-区间": "Interval", + "dj-task-report-天": "Day", + "dj-task-report-周": "Week", + "dj-task-report-月": "Month", + "dj-task-report-季度": "Season", + "dj-task-report-项目名称": "Project Name", + "dj-task-report-当责者": "Charge Person", + "dj-task-report-筛查": "Search", + "dj-task-report-重置": "Reset", + "dj-task-report-目标": "Target", + "dj-task-report-子项目": "Children Project", + "dj-task-report-子项目数单位": "", + "dj-task-report-请选择项目名称": "Please select project name", + "dj-task-report-请选择当责者": "Please select charge person", + "dj-task-report-没有结果": "No related project found, please check again", + "dj-task-report-项": "item", + "dj-set-用户ID": "ID", + "dj-set-用户名称": "Name", + "dj-set-手机号码": "Phone", + "dj-set-所属组织": "Organization", + "dj-set-运营单位": "Business Unit", + "dj-set-语言设定": "Language", + "dj-set-时区选择": "Timezone", + "dj-set-变更密码": "Password", + "dj-set-点此修改": "Click Here", + "dj-set-代理人设置": "Agent Setup", + "dj-set-代理人": "Agent", + "dj-set-代理区间": "Agency Interval", + "dj-set-勿扰模式": "Do Not Disturb", + "dj-set-开始时间": "Start Time", + "dj-set-结束时间": "End Time", + "dj-set-设置代理区间成功": "Set proxy interval successfully", + "dj-set-设置代理区间失败": "Failed to set proxy interval", + "dj-是否确认提交": "Are you sure to submit ?", + "dj-取消": "Cancel", + "dj-确认": "Confirm", + "dj-提交": "Submit", + "dj-下一步": "Next Step", + "dj-提示": "Tips", + "dj-拒绝时审核意见必填哦": "approval comments required when rejecting~", + "dj-是否签核": "whether to sign off for {{title}} ?", + "dj-操作成功": "execute successfully", + "dj-上传成功": "upload successfully", + "dj-加载中": "Loading", + "dj-通知执行人": "Notification to executor", + "dj-去执行待办": "Go to the to-do list", + "dj-分享链接": "Share links", + "dj-查看子项目详情": "View sub project details", + "dj-复制成功": "Copied Successfully", + "dj-通知成功": "Notification successful", + "dj-消息通知": "Message Notification", + "dj-重要消息": "Important Message", + "dj-工作动态": "Work News", + "dj-紧急": "Urgent", + "dj-重要": "Focus", + "dj-变更": "Change", + "dj-共n个任务异常": "Total of {{n}} task exceptions", + "dj-共n个任务进行中": "{{n}} tasks are in progress", + "dj-已逾期": "Overdue", + "dj-小时": "hours", + "dj-天": "days", + "dj-标记所有为已读": "Mark all as read", + "dj-删除所有已读消息": "Delete all read messages", + "dj-通知设置": "Notification settings", + "dj-项目通知": "Project Notification", + "dj-暂无消息": "No Messages", + "dj-分钟前": "minutes ago", + "dj-今天": "today", + "dj-昨天": "yesterday", + "dj-周一": "Monday", + "dj-周二": "Tuesday", + "dj-周三": "Wednesday", + "dj-周四": "Thursday", + "dj-周五": "Friday", + "dj-周六": "Saturday", + "dj-周日": "Sunday", + "dj-任务通知": "task notice", + "dj-刚刚": "moment ago", + "dj-系统消息": "System Messaage", + "dj-异常排除": "exception exclusion", + "dj-任务已关闭": "The task has been closed", + "dj-暂无更多项目类型": "No more project types", + "dj-工单有变更,查看详情": "There are changes to the work order. Please check the details", + "dj-等": " etc.", + "dj-共": " Totally", + "dj-个": " ", + "dj-张": " ", + "dj-运营单元-1": "Branch Companies", + "dj-运营单元-2": "Factories", + "dj-运营单元-3": "Workshops", + "dj-工单明细": "Work Order Details", + "dj-明细": "Details", + "dj-数据上传中": "Data uploading", + "dj-数据校验中": "Data verification in progress", + "dj-msg-ATHENA_REMIND": "Athena Remind", + "dj-msg-EXCEPTION_OR_OVERDUE": "Exception/Overdue", + "dj-msg-INTERNAL_REMIND": "Notice", + "dj-msg-PROXY_REMIND": "Agency Remind", + "dj-msg-option-ALL": "All", + "dj-msg-option-EMERGENCY": "Emergency", + "dj-msg-option-EXCEPTION_OR_OVERDUE": "Exception/Overdue", + "dj-msg-option-NOTICE": "Notice", + "dj-msg-option-PROXY": "Agency", + "dj-msg-option-OTHER": "Other", + "dj-提醒关注": "reminds you to pay attention", + "dj-基础资料录入": "Basic data entry", + "dj-请输入需要录入的基础资料模板名称": "Please enter the name of the master data template to be entered", + "dj-已通知x": "also notice {{x}}" +} diff --git a/efm-demo-web/src/assets/i18n/en_US/default.json b/efm-demo-web/src/assets/i18n/en_US/default.json new file mode 100644 index 0000000..1797133 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/en_US/default.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/efm-demo-web/src/assets/i18n/en_US/task.json b/efm-demo-web/src/assets/i18n/en_US/task.json new file mode 100644 index 0000000..769d984 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/en_US/task.json @@ -0,0 +1,36 @@ +{ + "dj-task-日": "Day", + "dj-task-月": "Month", + "dj-task-今天": "Today", + "dj-task-本月": "Current month", + "dj-task-week1": "Monday", + "dj-task-week2": "Tuesday", + "dj-task-week3": "Wednesday", + "dj-task-week4": "Thursday", + "dj-task-week5": "Friday", + "dj-task-week6": "Saturday", + "dj-task-week0": "Sunday", + "dj-task-逾期任务": "Overdue Tasks", + "dj-task-暂无更多任务逾期": "No more tasks overdue", + "dj-task-任务未逾期": "The work is well done and the tasks is not overdue", + "dj-task-暂无异常排除": "There is no exception exclusion task to track", + "dj-task-暂无项目逾期": "There is no project overdue to be followed up", + "dj-task-今日需完成n项任务": "Tasks need to be completed today {{ n }} ", + "dj-task-需完成n项任务": "You need to complete {{ n }} tasks", + "dj-task-共n项任务": "{{ m }} tasks in total", + "dj-task-共计n项任务": "Total {{ n }} tasks", + "dj-task-查看完整版": "Enter the task of the day and view the full version", + "dj-task-项目逾期需跟催": "Overdue projects need to be followed up", + "dj-task-异常排除需追踪": "Exception elimination needs tracking", + "dj-task-今日优先处理任务": "Priority tasks today", + "dj-task-今日一般任务": "General tasks today", + "dj-task-可提前处理任务": "Tasks can be processed ahead of time", + "dj-task-暂无任务": "No task", + "dj-task-暂无任务可执行": "No task to execute", + "dj-task-all": "All", + "dj-task-等n个": " etc., totally {{ n }} ", + "dj-task-unit-1": "Branch Companies", + "dj-task-unit-2": "Factories", + "dj-task-unit-3": "Workshops", + "dj-task-确定": "OK" +} \ No newline at end of file diff --git a/efm-demo-web/src/assets/i18n/zh_CN/ant-components.json b/efm-demo-web/src/assets/i18n/zh_CN/ant-components.json new file mode 100644 index 0000000..0f09eed --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_CN/ant-components.json @@ -0,0 +1,215 @@ +{ + "dj-c-由Athena发起当前项目": "由Athena发起当前项目", + "dj-c-预计开工日": "预计开工日", + "dj-c-来源由n张工单组成": "来源:由{{ taskName }}组成", + "dj-c-来源由n张ids工单组成": "来源:由 {{ ids }} 等{{ n }}张{{ taskName }}组成", + "dj-c-倒计时": "倒计时", + "dj-c-需完成": "需完成", + "dj-c-收起": "收起", + "dj-c-更多": "更多", + "dj-c-操作": "操作", + "dj-c-更换": "更换", + "dj-c-提示": "提示", + "dj-c-我知道了": "我知道了", + "dj-c-存在异常是否忽略提交": "存在 {{n}} 项异常,
是否确定提交?", + "dj-c-是否确定提交": "是否确定提交", + "dj-c-请确认是否填写完整": "请确认是否填写完整", + "dj-c-取消": "取消", + "dj-c-确认": "确认", + "dj-c-确定": "确定", + "dj-c-明细": "明细", + "dj-c-下载": "下载", + "dj-c-预览": "预览", + "dj-c-已读n次": "已读 {{ n }} 次", + "dj-c-取消拆行": "取消拆行", + "dj-c-拆行": "拆行", + "dj-c-旧公式": "旧公式", + "dj-c-新公式": "新公式", + "dj-c-查看模拟推估": "查看模拟推估", + "dj-c-权重总和应等于100": "权重总和应等于100", + "dj-c-暂无数据": "暂无数据", + "dj-c-必填": "必填", + "dj-c-重新编辑": "重新编辑", + "dj-c-编辑": "编辑", + "dj-c-请选择需要提交的数据": "请选择需要提交的数据", + "dj-c-收货地址": "收货地址", + "dj-c-采购员编号": "采购员编号", + "dj-c-转派至": "转派至", + "dj-c-员工编号": "员工编号", + "dj-c-员工姓名": "员工姓名", + "dj-c-请输入员工编号": "请输入员工编号", + "dj-c-将此任务转派至您": "将此任务转派至您", + "dj-c-退回重签至": "退回重签至", + "dj-c-请输入签核意见": "请输入签核意见", + "dj-c-签核意见": "签核意见", + "dj-c-是否确定转派": "是否确定转派", + "dj-c-是否确定退回": "是否确定退回", + "dj-c-签核进程": "签核进程", + "dj-c-查看签核进度": "查看签核进度", + "dj-c-是否确定同意": "是否确定同意", + "dj-c-非必填": "非必填", + "dj-c-未开始": "未开始", + "dj-c-进行中": "进行中", + "dj-c-已完成": "已完成", + "dj-c-退回": "退回", + "dj-c-加签": "加签", + "dj-c-已同意": "已同意", + "dj-c-已撤销": "已撤销", + "dj-c-已中止": "已中止", + "dj-c-已暂停": "已暂停", + "dj-c-不需签核": "不需签核", + "dj-c-需签核": "需签核", + "dj-c-取回重办": "取回重办", + "dj-c-已通知": "已通知", + "dj-c-已会办": "已会办", + "dj-c-正在进行": "正在进行", + "dj-c-逾期": "逾期", + "dj-c-紧急": "紧急", + "dj-c-天": "天", + "dj-c-时": "时", + "dj-c-分钟": "分钟", + "dj-c-最早": "最早", + "dj-c-最大逾期": "最大逾期", + "dj-c-共n项": "共{{ n }}项", + "dj-c-共str": "共{{ str }}", + "dj-c-个": "个", + "dj-c-页面加载失败": "页面加载失败", + "dj-c-重新加载": "重新加载", + "dj-c-请不要输入表情": "请不要输入表情", + "dj-c-不能选择当前用户": "不能选择当前用户", + "dj-c-是否确定退回重办": "是否确定退回重办", + "dj-c-所有计量": "所有计量", + "dj-c-库存年月": "库存年月", + "dj-c-周转天数": "周转天数", + "dj-c-平均存货净额": "平均存货净额", + "dj-c-销售净额": "销售净额", + "dj-c-平均耗量(年月)": "平均耗量(年月)", + "dj-c-标准差(年月)": "标准差(年月)", + "dj-c-平均销售金额(年月)": "平均销售金额(年月)", + "dj-c-标准化生产": "标准化生产", + "dj-c-不可放弃": "不可放弃", + "dj-c-接单再做": "接单再做", + "dj-c-允许低缺料": "允许低缺料", + "dj-c-修改": "修改", + "dj-c-已": "已", + "dj-c-总量": "总量", + "dj-c-目标:差异率小于n": "目标:差异率小于{{n}}", + "dj-c-共n项定位调整": "共{{n}}项定位调整", + "dj-c-实际": "实际", + "dj-c-合理": "合理", + "dj-c-建议": "建议", + "dj-c-本期共": "本期共", + "dj-c-项": "项", + "dj-c-检测出现定位调整,建议修改参数": "检测出现定位调整,建议修改参数", + "dj-c-成品": "成品", + "dj-c-半成品": "半成品", + "dj-c-原材料": "原材料", + "dj-c-耗用金额": "耗用金额", + "dj-c-高": "高", + "dj-c-中": "中", + "dj-c-低": "低", + "dj-c-频进货": "频进货", + "dj-c-原材料机制调整建议": "原材料机制调整建议", + "dj-c-项采纳": "项采纳", + "dj-c-项拒绝": "项拒绝", + "dj-c-共计": "共计", + "dj-c-n项": "{{n}}项", + "dj-c-返回": "返回", + "dj-c-统计": "统计", + "dj-c-标准差异率n": "标准差异率{{n}}", + "dj-c-采购间隔参数": "采购间隔参数", + "dj-c-实际采购LT": "实际采购LT", + "dj-c-实际采购": "实际采购", + "dj-c-机制调整建议": "机制调整建议", + "dj-c-建议新定位": "建议新定位", + "dj-c-高频进货": "高频进货", + "dj-c-中频进货": "中频进货", + "dj-c-低频进货": "低频进货", + "dj-c-高频进货n项": "高频进货{{n}}项", + "dj-c-中频进货n项": "中频进货{{n}}项", + "dj-c-低频进货n项": "低频进货{{n}}项", + "dj-c-没有可获取到的可退回列表": "没有可获取到的可退回列表", + "dj-c-数据加载异常": "数据加载异常", + "dj-c-正在校验": "正在校验", + "dj-c-输入错误": "输入错误", + "dj-c-输入不完整": "输入不完整", + "dj-c-输入不完整或者错误": "输入不完整或者输入错误", + "dj-c-校验失败": "校验失败", + "dj-c-支持批量提交但未选择对象": "支持批量提交但未选择对象", + "dj-c-差异": "差异", + "dj-c-方案进度": "方案进度", + "dj-c-加量": "加量", + "dj-c-减量": "减量", + "dj-c-延迟": "延迟", + "dj-c-提早": "提早", + "dj-c-拆行输入错误": "拆行输入错误", + "dj-c-请上传": "请上传", + "dj-c-上传于": "{{user}}上传于{{date}}", + "dj-c-已删除附件": "附件已删除", + "dj-c-删除附件失败": "删除附件失败", + "dj-c-上传失败": "上传失败", + "dj-c-转派": "转派", + "dj-c-没有查询到可退回的关卡名称": "没有查询到可退回的关卡名称", + "dj-c-请刷新重试": "请刷新重试", + "dj-c-当前任务已完成": "当前任务已完成", + "dj-c-加签意见": "加签意见", + "dj-c-请选择加签方式": "请选择加签方式", + "dj-c-向前加签": "向前加签", + "dj-c-向后加签": "向后加签", + "dj-c-签核人": "签核人", + "dj-c-请选择": "请选择", + "dj-c-请选择签核人": "请选择签核人", + "dj-c-是否确定撤回": "是否确定撤回", + "dj-c-撤回后同一方案且同一批提交的方案将同步撤回": "撤回后同一方案且同一批提交的方案将同步撤回", + "dj-c-撤回意见": "撤回意见", + "dj-c-发票上传": "发票上传", + "dj-c-发票代号": "发票代号", + "dj-c-发票号码": "发票号码", + "dj-c-开票日期": "开票日期", + "dj-c-校验码(后6位)": "校验码(后6位)", + "dj-c-请将6位校验码输入完整": "请将6位校验码输入完整", + "dj-c-金额(不含税)": "金额(不含税)", + "dj-c-只能输入数字": "只能输入数字", + "dj-c-只能输入整数或者带2位小数": "只能输入整数或者带2位小数", + "dj-c-限制类型": "只支持{{ n }}", + "dj-c-不限制大小": "大小不限制", + "dj-c-限制大小": "大小限制{{ n }}", + "dj-c-请输入关键字": "请输入关键字", + "dj-c-合计": "合计", + "dj-c-是否确定加签": "是否确定加签", + "dj-c-已撤回": "已撤回", + "dj-c-请输入撤回意见": "请输入撤回意见", + "dj-c-重签意见": "重签意见", + "dj-c-转派意见": "转派意见", + "dj-c-请填写意见": "请填写意见", + "dj-c-重办意见": "重办意见", + "dj-c-请填写重办意见": "请填写重办意见", + "dj-c-请输入发票代号": "请输入发票代号", + "dj-c-请输入发票号码": "请输入发票号码", + "dj-c-请输入开票日期": "请输入开票日期", + "dj-c-请输入金额": "请输入金额(不含税)", + "dj-c-上传发票": "上传发票", + "dj-c-支持上传多张发票": "支持上传多张发票", + "dj-c-请留言": "请输入留言~", + "dj-c-发送": "发送", + "dj-c-通知提醒": "通知提醒", + "dj-c-msg-content": "请尽快完成任务~", + "dj-c-代": "代", + "dj-c-前": "前", + "dj-c-生效": "生效", + "dj-c-已失效": "已失效", + "dj-c-已保存": "已保存", + "dj-c-未保存": "未保存", + "dj-c-已选中n项": "已选中{{ n }}项", + "dj-c-m来源共n项发生变更": "{{m}}共{{n}}项发生变更", + "dj-c-查看甘特图": "查看甘特图", + "dj-c-甘特图": "甘特图", + "dj-c-异常": "异常", + "dj-c-逾期n天": "逾期{{ n }}天", + "dj-c-全部信息请输入关键字搜索": "全部信息请输入关键字搜索", + "dj-c-*至少选中一项数据": "*至少选中一项数据", + "dj-c-已选n项": "已选{{ n }}项", + "dj-c-荐": "荐", + "dj-c-请输入专案编号": "请输入专案编号", + "dj-c-请输入专案名称": "请输入专案名称" +} diff --git a/efm-demo-web/src/assets/i18n/zh_CN/basic.json b/efm-demo-web/src/assets/i18n/zh_CN/basic.json new file mode 100644 index 0000000..2dd8521 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_CN/basic.json @@ -0,0 +1,167 @@ +{ + "dj-请输入": "请输入", + "dj-请选择": "请选择", + "dj-搜索点什么吧": "搜索点什么吧", + "dj-历史记录": "搜索历史", + "dj-登出": "登出", + "dj-管理模组": "管理模组", + "dj-交付设计器": "交付设计器", + "menu": { + "project-center": "项目中心" + }, + "dj-全部关闭": "全部关闭", + "dj-批量操作": "批量操作", + "dj-来源由n张工单组成": "来源:由 {{ ids }} 等 {{ n }} 张{{sourceName}}组成", + "dj-来源由n张x单组成": "来源:由 {{taskName}} 组成", + "dj-来源由n张如ids的x单组成": "来源:由 {{ ids }} 等 {{ n }} 张 {{taskName}} 组成", + "dj-倒计时": "倒计时", + "dj-预计开工日": "预计开工日", + "dj-来源": "来源", + "dj-由Athena发起当前项目": "由Athena发起当前项目", + "dj-人工": "人工", + "dj-自动": "自动", + "dj-未完成": "未完成", + "dj-需完成": "需完成", + "dj-共计": "共计", + "dj-共n笔": "共 {{n}} 笔", + "dj-n笔": "{{n}} 笔", + "dj-待入库n项": "待入库 {{n}} 项", + "dj-我知道了": "我知道了", + "dj-立即查看": "立即查看", + "dj-切换企业": "切换企业", + "dj-个性化设定": "设置", + "dj-常用设置": "常用设置", + "dj-开启勿扰": "已开启勿扰", + "dj-关闭勿扰": "已关闭勿扰", + "dj-开启代理人": "已开启代理人", + "dj-关闭代理人": "已关闭代理人", + "dj-基本设置": "个性化设定", + "dj-工作桌面": "工作桌面", + "dj-搜索结果": "搜索结果", + "dj-进度查询": "进度查询", + "dj-发起项目": "发起项目", + "dj-项目任务": "项目任务", + "dj-当责者": "当责者", + "dj-项目名称": "项目名称", + "dj-状态": "状态", + "dj-task-report-项目状况查询": "项目状况查询", + "dj-task-report-历史项目查询": "历史项目查询", + "dj-task-report-区间": "区间", + "dj-task-report-天": "天", + "dj-task-report-周": "周", + "dj-task-report-月": "月", + "dj-task-report-季度": "季度", + "dj-task-report-项目名称": "项目名称", + "dj-task-report-当责者": "当责者", + "dj-task-report-筛查": "筛查", + "dj-task-report-重置": "重置", + "dj-task-report-目标": "目标", + "dj-task-report-子项目": "子项目", + "dj-task-report-子项目数": "子项目数", + "dj-task-report-子项目数单位": "个", + "dj-task-report-请选择项目名称": "请选择项目名称", + "dj-task-report-请选择当责者": "请选择当责者", + "dj-task-report-没有结果": "没有找到相关项目,请重新筛查", + "dj-task-report-项": "项", + "dj-set-用户ID": "用户ID", + "dj-set-用户名称": "用户名称", + "dj-set-手机号码": "手机号码", + "dj-set-所属组织": "所属组织", + "dj-set-运营单位": "运营单位", + "dj-set-语言设定": "语言设定", + "dj-set-时区选择": "时区选择", + "dj-set-变更密码": "变更密码", + "dj-set-点此修改": "点此修改", + "dj-set-代理人设置": "代理人设置", + "dj-set-代理人": "代理人", + "dj-set-代理区间": "代理区间", + "dj-set-勿扰模式": "勿扰模式", + "dj-set-开始时间": "开始时间", + "dj-set-结束时间": "结束时间", + "dj-set-设置代理区间成功": "设置代理区间成功", + "dj-set-设置代理区间失败": "设置代理区间失败", + "dj-是否确认提交": "是否确认提交", + "dj-取消": "取消", + "dj-确认": "确认", + "dj-提交": "提交", + "dj-下一步": "下一步", + "dj-拒绝时审核意见必填哦": "拒绝时审核意见必填哦~", + "dj-提示": "提示", + "dj-是否签核": "是否 {{title}} 签核", + "dj-操作成功": "操作成功", + "dj-上传成功": "上传成功", + "dj-加载中": "加载中", + "dj-通知执行人": "通知执行人", + "dj-去执行待办": "去执行待办", + "dj-分享链接": "分享链接", + "dj-查看子项目详情": "查看子项目详情", + "dj-复制成功": "复制成功", + "dj-通知成功": "通知成功", + "dj-消息通知": "消息通知", + "dj-重要消息": "重要消息", + "dj-工作动态": "工作动态", + "dj-紧急": "紧急", + "dj-重要": "特别关注", + "dj-变更": "变更", + "dj-共n个任务异常": "共{{ n }}个任务异常", + "dj-共n个任务进行中": "共{{ n }}个任务进行中", + "dj-已逾期": "已逾期", + "dj-小时": "小时", + "dj-天": "天", + "dj-标记所有为已读": "标记所有为已读", + "dj-删除所有已读消息": "删除所有已读消息", + "dj-通知设置": "通知设置", + "dj-项目通知": "项目通知", + "dj-暂无消息": "暂无消息", + "dj-分钟前": "分钟前", + "dj-今天": "今天", + "dj-昨天": "昨天", + "dj-周一": "周一", + "dj-周二": "周二", + "dj-周三": "周三", + "dj-周四": "周四", + "dj-周五": "周五", + "dj-周六": "周六", + "dj-周日": "周日", + "dj-任务通知": "任务通知", + "dj-刚刚": "刚刚", + "dj-系统消息": "系统消息", + "dj-异常排除": "异常排除", + "dj-任务已关闭": "当前任务已关闭", + "dj-暂无更多项目类型": "暂无更多项目类型", + "dj-工单有变更,查看详情": "工单有变更,查看详情", + "dj-等": "等", + "dj-共": "共", + "dj-个": "个", + "dj-张": "张", + "dj-运营单元-1": "分公司", + "dj-运营单元-2": "工厂", + "dj-运营单元-3": "车间", + "dj-工单明细": "工单明细", + "dj-明细": "明细", + "dj-数据上传中": "数据上传中", + "dj-数据校验中": "数据校验中", + "dj-msg-ATHENA_REMIND": "ATHENA提醒", + "dj-msg-EXCEPTION_OR_OVERDUE": "项目异常/逾期提醒", + "dj-msg-INTERNAL_REMIND": "内部提醒", + "dj-msg-PROXY_REMIND": "代理人提醒", + "dj-msg-option-ALL": "全部", + "dj-msg-option-EMERGENCY": "紧急", + "dj-msg-option-EXCEPTION_OR_OVERDUE": "异常/逾期", + "dj-msg-option-NOTICE": "通知", + "dj-msg-option-PROXY": "代理", + "dj-msg-option-OTHER": "其他", + "dj-提醒关注": "提醒您关注", + "dj-基础资料录入": "基础资料录入", + "dj-请输入需要录入的基础资料模板名称": "请输入需要录入的基础资料模板名称", + "dj-已通知x": "已通知{{x}}", + "dj-全部": "全部", + "dj-包含": "包含", + "dj-搜索关键字": "搜索关键字", + "dj-重置": "重置", + "dj-搜索": "搜索", + "dj-栏位": "栏位", + "dj-公式": "公式", + "dj-新增查询条件": "新增查询条件", + "dj-最多同时查询3个条件": "最多同时查询3个条件" +} \ No newline at end of file diff --git a/efm-demo-web/src/assets/i18n/zh_CN/default.json b/efm-demo-web/src/assets/i18n/zh_CN/default.json new file mode 100644 index 0000000..1797133 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_CN/default.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/efm-demo-web/src/assets/i18n/zh_CN/task.json b/efm-demo-web/src/assets/i18n/zh_CN/task.json new file mode 100644 index 0000000..7f13079 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_CN/task.json @@ -0,0 +1,36 @@ +{ + "dj-task-日": "日", + "dj-task-月": "月", + "dj-task-今天": "今天", + "dj-task-本月": "本月", + "dj-task-week1": "星期一", + "dj-task-week2": "星期二", + "dj-task-week3": "星期三", + "dj-task-week4": "星期四", + "dj-task-week5": "星期五", + "dj-task-week6": "星期六", + "dj-task-week0": "星期日", + "dj-task-逾期任务": "逾期任务", + "dj-task-暂无更多任务逾期": "暂无更多任务逾期", + "dj-task-任务未逾期": "工作完成良好,任务未逾期", + "dj-task-暂无异常排除": "暂无异常排除任务需跟踪", + "dj-task-暂无项目逾期": "暂无项目逾期需跟催", + "dj-task-今日需完成n项任务": "今日需完成任务 {{ n }}", + "dj-task-需完成n项任务": "需完成{{ n }}项任务", + "dj-task-共n项任务": "共{{ n }}项任务", + "dj-task-共计n项任务": "共计{{ n }}项任务", + "dj-task-查看完整版": "进入当天任务,查看完整版", + "dj-task-项目逾期需跟催": "项目逾期需跟催", + "dj-task-异常排除需追踪": "异常排除需追踪", + "dj-task-今日优先处理任务": "今日优先处理任务", + "dj-task-今日一般任务": "今日一般任务", + "dj-task-可提前处理任务": "可提前处理任务", + "dj-task-暂无任务": "暂无任务", + "dj-task-暂无任务可执行": "暂无任务可执行", + "dj-task-all": "全部", + "dj-task-等n个": "…等{{ n }}个", + "dj-task-unit-1": "分公司", + "dj-task-unit-2": "工厂", + "dj-task-unit-3": "车间", + "dj-task-确定": "确定" +} \ No newline at end of file diff --git a/efm-demo-web/src/assets/i18n/zh_TW/ant-components.json b/efm-demo-web/src/assets/i18n/zh_TW/ant-components.json new file mode 100644 index 0000000..9d0003e --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_TW/ant-components.json @@ -0,0 +1,217 @@ +{ + "dj-c-预计开工日": "預計開工日", + "dj-c-由Athena发起当前项目": "由Athena發起當前項目", + "dj-c-来源由n张工单组成": "來源:由{{ taskName }}組成", + "dj-c-来源由n张ids工单组成": "來源:由 {{ ids }} 等{{ n }}張{{ taskName }}組成", + "dj-c-倒计时": "倒計時", + "dj-c-需完成": "需完成", + "dj-c-收起": "收起", + "dj-c-更多": "更多", + "dj-c-操作": "操作", + "dj-c-更换": "更換", + "dj-c-提示": "提示", + "dj-c-我知道了": "我知道了", + "dj-c-存在异常是否忽略提交": "存在 {{n}} 項异常,
是否確定提交?", + "dj-c-是否确定提交": "是否確定提交?", + "dj-c-请确认是否填写完整": "請確認是否填寫完整", + "dj-c-取消": "取消", + "dj-c-确认": "確認", + "dj-c-确定": "確定", + "dj-c-明细": "明細", + "dj-c-下载": "下載", + "dj-c-预览": "預覽", + "dj-c-已读n次": "已讀 {{ n }} 次", + "dj-c-取消拆行": "取消拆行", + "dj-c-拆行": "拆行", + "dj-c-旧公式": "舊公式", + "dj-c-新公式": "新公式", + "dj-c-查看模拟推估": "查看類比推估", + "dj-c-权重总和应等于100": "權重總和應等於100", + "dj-c-暂无数据": "暫無數據", + "dj-c-必填": "必填", + "dj-c-重新编辑": "重新編輯", + "dj-c-编辑": "編輯", + "dj-c-请选择需要提交的数据": "請選擇需要提交的數據", + "dj-c-收货地址": "收貨地址", + "dj-c-采购员编号": "採購員編號", + "dj-c-转派至": "轉派至", + "dj-c-员工编号": "員工編號", + "dj-c-员工姓名": "員工姓名", + "dj-c-请输入员工编号": "請輸入員工編號", + "dj-c-将此任务转派至您": "將此任務轉派至您", + "dj-c-退回重签至": "退回重簽至", + "dj-c-请输入签核意见": "請輸入簽核意見", + "dj-c-签核意见": "簽核意見", + "dj-c-查看签核进度": "查看簽核進度", + "dj-c-是否确定转派": "是否確定轉派", + "dj-c-是否确定退回": "是否確定退回", + "dj-c-签核进程": "簽核進程", + "dj-c-是否确定同意": "是否確定同意", + "dj-c-非必填": "非必填", + "dj-c-未开始": "未開始", + "dj-c-进行中": "進行中", + "dj-c-已完成": "已完成", + "dj-c-退回": "退回", + "dj-c-加签": "加簽", + "dj-c-已同意": "已同意", + "dj-c-已撤销": "已撤銷", + "dj-c-已中止": "已中止", + "dj-c-已暂停": "已暫停", + "dj-c-不需签核": "不需簽核", + "dj-c-需签核": "需簽核", + "dj-c-取回重办": "取回重辦", + "dj-c-已通知": "已通知", + "dj-c-已会办": "已會辦", + "dj-c-正在进行": "正在進行", + "dj-c-逾期": "逾期", + "dj-c-紧急": "緊急", + "dj-c-天": "天", + "dj-c-时": "時", + "dj-c-分钟": "分鐘", + "dj-c-最早": "最早", + "dj-c-最大逾期": "最大逾期", + "dj-c-共n项": "共{{ n }}項", + "dj-c-共str": "共{{ str }}", + "dj-c-个": "個", + "dj-c-页面加载失败": "頁面加載失敗", + "dj-c-重新加载": "重新加載", + "dj-c-请不要输入表情": "請不要輸入表情", + "dj-c-不能选择当前用户": "不能選擇當前用戶", + "dj-c-是否确定退回重办": "是否確定退回重辦", + "dj-c-所有计量": "所有計量", + "dj-c-库存年月": "庫存年月", + "dj-c-周转天数": "周轉天數", + "dj-c-平均存货净额": "平均存貨淨額", + "dj-c-销售净额": "銷售淨額", + "dj-c-平均耗量(年月)": "平均耗量(年月)", + "dj-c-标准差(年月)": "標準差(年月)", + "dj-c-平均销售金额(年月)": "平均銷售金額(年月)", + "dj-c-标准化生产": "標準化生產", + "dj-c-修改": "修改", + "dj-c-已": "已", + "dj-c-总量": "總量", + "dj-c-目标:差异率小于n": "目标:差异率小于{{n}}", + "dj-c-共n项定位调整": "共{{n}}项定位调整", + "dj-c-实际": "實際", + "dj-c-合理": "合理", + "dj-c-建议": "建議", + "dj-c-本期共": "本期共", + "dj-c-项": "項", + "dj-c-检测出现定位调整,建议修改参数": "检测出现定位调整,建议修改参数", + "dj-c-成品": "成品", + "dj-c-半成品": "半成品", + "dj-c-原材料": "原材料", + "dj-c-耗用金额": "耗用金額", + "dj-c-高": "高", + "dj-c-中": "中", + "dj-c-低": "低", + "dj-c-频进货": "頻進貨", + "dj-c-原材料机制调整建议": "原材料機制調整建議", + "dj-c-项采纳": "項采納", + "dj-c-项拒绝": "項拒絕", + "dj-c-共计": "共計", + "dj-c-n项": "{{n}}項", + "dj-c-返回": "返回", + "dj-c-统计": "統計", + "dj-c-标准差异率n": "標準差異率{{n}}", + "dj-c-采购间隔参数": "采購間隔參數", + "dj-c-实际采购LT": "實際采購LT", + "dj-c-实际采购": "實際采購", + "dj-c-机制调整建议": "機制調整建議", + "dj-c-建议新定位": "建議新定位", + "dj-c-高频进货": "高頻進貨", + "dj-c-中频进货": "中頻進貨", + "dj-c-低频进货": "低頻進貨", + "dj-c-高频进货n项": "高頻進貨{{n}}項", + "dj-c-中频进货n项": "中頻進貨{{n}}項", + "dj-c-低频进货n项": "低頻進貨{{n}}項", + "dj-c-没有可获取到的可退回列表": "沒有可獲取到的可退回列表", + "dj-c-数据加载异常": "數據加載異常", + "dj-c-正在校验": "正在校驗", + "dj-c-输入错误": "輸入錯誤", + "dj-c-输入不完整": "輸入不完整", + "dj-c-输入不完整或者错误": "輸入不完整或者輸入錯誤", + "dj-c-校验失败": "校驗失敗", + "dj-c-支持批量提交但未选择对象": "支持批量提交但未選擇對象", + "dj-c-差异": "差異", + "dj-c-方案进度": "方案進度", + "dj-c-加量": "加量", + "dj-c-减量": "減量", + "dj-c-延迟": "延遲", + "dj-c-提早": "提早", + "dj-c-拆行输入错误": "拆行輸入錯誤", + "dj-c-请上传": "請上傳", + "dj-c-上传于": "{{user}}上傳于{{date}}", + "dj-c-已删除附件": "附件已刪除", + "dj-c-删除附件失败": "删除附件失敗", + "dj-c-上传失败": "上傳失敗", + "dj-c-转派": "轉派", + "dj-c-没有查询到可退回的关卡名称": "沒有査詢到可退回的關卡名稱", + "dj-c-请刷新重试": "請刷新重試", + "dj-c-当前任务已完成": "當前任務已完成", + "dj-c-加签意见": "加簽意見", + "dj-c-请选择加签方式": "請選擇加簽方式", + "dj-c-向前加签": "向前加簽", + "dj-c-向后加签": "向後加簽", + "dj-c-签核人": "簽核人", + "dj-c-请选择": "請選擇", + "dj-c-请选择签核人": "請選擇簽核人", + "dj-c-是否确定撤回": "是否確定撤回", + "dj-c-撤回后同一方案且同一批提交的方案将同步撤回": "撤回後同一方案且同一批提交的方案將同步撤回", + "dj-c-撤回意见": "撤回意見", + "dj-c-发票上传": "發票上傳", + "dj-c-发票代号": "發票代號", + "dj-c-发票号码": "發票號碼", + "dj-c-开票日期": "開票日期", + "dj-c-校验码(后6位)": "校驗碼(後6位)", + "dj-c-请将6位校验码输入完整": "請將6位校驗碼輸入完整", + "dj-c-金额(不含税)": "金額(不含稅)", + "dj-c-只能输入数字": "只能輸入數位", + "dj-c-只能输入整数或者带2位小数": "只能輸入整數或者帶2位小數", + "dj-c-限制类型": "只支持{{ n }}", + "dj-c-不限制大小": "大小不限制", + "dj-c-限制大小": "大小限制{{ n }}", + "dj-c-请输入关键字": "請輸入關鍵字", + "dj-c-合计": "合計", + "dj-c-是否确定加签": "是否確定加簽", + "dj-c-已撤回": "已撤回", + "dj-c-请输入撤回意见": "請輸入撤回意見", + "dj-c-重签意见": "重簽意見", + "dj-c-转派意见": "轉派意見", + "dj-c-请填写意见": "請填寫意見", + "dj-c-重办意见": "重辦意見", + "dj-c-请填写重办意见": "請填寫重辦意見", + "dj-c-请输入发票代号": "請輸入發票代號", + "dj-c-请输入发票号码": "請輸入發票號碼", + "dj-c-请输入开票日期": "請輸入開票日期", + "dj-c-请输入金额": "請輸入金額(不含稅)", + "dj-c-上传发票": "上傳發票", + "dj-c-支持上传多张发票": "支持上傳多張發票", + "dj-c-请留言": "請輸入留言~", + "dj-c-发送": "發送", + "dj-c-通知提醒": "通知提醒", + "dj-c-msg-content": "請盡快完成任務~", + "dj-c-代": "代", + "dj-c-前": "前", + "dj-c-生效": "生效", + "dj-c-已失效": "已失效", + "dj-c-已保存": "已保存", + "dj-c-未保存": "未保存", + "dj-c-已选中n项": "已選中{{ n }}項", + "dj-c-m来源共n项发生变更": "{{m}}共{{n}}項發生變更", + "dj-c-查看甘特图": "查看甘特圖", + "dj-c-甘特图": "甘特圖", + "dj-c-异常": "異常", + "dj-c-逾期n天": "逾期{{ n }}天", + "dj-c-全部信息请输入关键字搜索": "全部信息請輸入關鍵字搜索", + "dj-c-*至少选中一项数据": "*至少選中一項數據", + "dj-c-已选n项": "已選{{ n }}項", + "dj-c-荐": "薦", + "dj-c-请输入专案编号": "請輸入專案編號", + "dj-c-请输入专案名称": "請輸入專案名稱", + "dj-c-计划维护": "計畫維護", + "dj-c-专案基础信息维护": "專案基礎信息維護", + "dj-c-启动专案": "啟動專案", + "dj-c-专案已启动": "專案已啟動", + "dj-c-专案已暂停": "專案已暫停" +} diff --git a/efm-demo-web/src/assets/i18n/zh_TW/basic.json b/efm-demo-web/src/assets/i18n/zh_TW/basic.json new file mode 100644 index 0000000..d9cd18b --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_TW/basic.json @@ -0,0 +1,158 @@ +{ + "dj-请输入": "請輸入", + "dj-请选择": "請選擇", + "dj-搜索点什么吧": "請輸入日期/項目目標/任務名稱/當責者/執行人", + "dj-历史记录": "搜索歷史", + "dj-登出": "登出", + "dj-管理模组": "管理模組", + "dj-交付设计器": "交付设计器", + "menu": { + "project-center": "項目中心" + }, + "dj-全部关闭": "全部關閉", + "dj-批量操作": "批量操作", + "dj-来源由n张工单组成": "來源:由 {{ids}} 等 {{n}} 張 {{sourceName}} 組成", + "dj-来源由n张x单组成": "來源: 由{{taskName}} 組成", + "dj-来源由n张如ids的x单组成": "來源:由 {{ ids }} 等 {{ n }} 張 {{taskName}} 組成", + "dj-倒计时": "倒計時", + "dj-预计开工日": "預計開工日", + "dj-来源": "來源", + "dj-由Athena发起当前项目": "由Athena發起當前項目", + "dj-人工": "人工", + "dj-自动": "自動", + "dj-未完成": "未完成", + "dj-需完成": "需完成", + "dj-共计": "共計", + "dj-共n笔": "共 {{n}} 筆", + "dj-n笔": "{{n}} 筆", + "dj-待入库n项": "待入庫 {{n}} 項", + "dj-我知道了": "我知道了", + "dj-立即查看": "立即查看", + "dj-切换企业": "切換企業", + "dj-个性化设定": "設置", + "dj-常用设置": "常用設置", + "dj-基本设置": "個性化設定", + "dj-开启勿扰": "已開啟勿擾", + "dj-关闭勿扰": "已關閉勿擾", + "dj-开启代理人": "已開啟代理人", + "dj-关闭代理人": "已關閉代理人", + "dj-工作桌面": "工作桌面", + "dj-搜索结果": "搜索結果", + "dj-进度查询": "進度查詢", + "dj-发起项目": "發起項目", + "dj-项目任务": "項目任務", + "dj-当责者": "當責者", + "dj-项目名称": "項目名稱", + "dj-状态": "狀態", + "dj-task-report-项目状况查询": "項目狀況查詢", + "dj-task-report-历史项目查询": "歷史項目查詢", + "dj-task-report-区间": "區間", + "dj-task-report-天": "天", + "dj-task-report-周": "周", + "dj-task-report-月": "月", + "dj-task-report-季度": "季度", + "dj-task-report-项目名称": "項目名稱", + "dj-task-report-当责者": "當責者", + "dj-task-report-筛查": "篩查", + "dj-task-report-重置": "重置", + "dj-task-report-目标": "目標", + "dj-task-report-子项目": "子項目", + "dj-task-report-子项目数": "子項目數", + "dj-task-report-子项目数单位": "个", + "dj-task-report-请选择项目名称": "請選擇項目名稱", + "dj-task-report-请选择当责者": "請選擇當責者", + "dj-task-report-没有结果": "沒有找到相關項目,請重新篩查", + "dj-task-report-项": "項", + "dj-set-用户ID": "用戶ID", + "dj-set-用户名称": "用戶名稱", + "dj-set-手机号码": "手機號碼", + "dj-set-所属组织": "所屬組織", + "dj-set-运营单位": "運營單位", + "dj-set-语言设定": "語言設定", + "dj-set-时区选择": "時區選擇", + "dj-set-变更密码": "變更密碼", + "dj-set-点此修改": "點此修改", + "dj-set-代理人设置": "代理人設置", + "dj-set-代理人": "代理人", + "dj-set-代理区间": "代理區間", + "dj-set-勿扰模式": "勿擾模式", + "dj-set-开始时间": "開始時間", + "dj-set-结束时间": "結束時間", + "dj-set-设置代理区间成功": "設置代理區間成功", + "dj-set-设置代理区间失败": "设置代理区间失敗", + "dj-是否确认提交": "是否確認提交", + "dj-取消": "取消", + "dj-确认": "確認", + "dj-提交": "提交", + "dj-下一步": "下一步", + "dj-拒绝时审核意见必填哦": "拒絕時稽核意見必填哦~", + "dj-提示": "提示", + "dj-是否签核": "是否 {{title}} 簽核", + "dj-操作成功": "操作成功", + "dj-上传成功": "上傳成功", + "dj-加载中": "加載中", + "dj-通知执行人": "通知執行人", + "dj-去执行待办": "去執行待辦", + "dj-分享链接": "分享連結", + "dj-查看子项目详情": "查看子項目詳情", + "dj-复制成功": "複製成功", + "dj-通知成功": "通知成功", + "dj-消息通知": "消息通知", + "dj-重要消息": "重要消息", + "dj-工作动态": "工作動態", + "dj-紧急": "緊急", + "dj-重要": "特別關注", + "dj-变更": "變更", + "dj-共n个任务异常": "共{{ n }}個任務异常", + "dj-共n个任务进行中": "共{{ n }}個任務進行中", + "dj-已逾期": "已逾期", + "dj-小时": "小時", + "dj-天": "天", + "dj-标记所有为已读": "標記所有為已讀", + "dj-删除所有已读消息": "删除所有已讀消息", + "dj-通知设置": "通知設定", + "dj-项目通知": "項目通知", + "dj-暂无消息": "暫無消息", + "dj-分钟前": "分鐘前", + "dj-今天": "今天", + "dj-昨天": "昨天", + "dj-周一": "週一", + "dj-周二": "週二", + "dj-周三": "週三", + "dj-周四": "週四", + "dj-周五": "週五", + "dj-周六": "週六", + "dj-周日": "週日", + "dj-任务通知": "任務通知", + "dj-刚刚": "剛剛", + "dj-系统消息": "系統消息", + "dj-异常排除": "異常排除", + "dj-任务已关闭": "當前任務已關閉", + "dj-暂无更多项目类型": "暫無更多項目類型", + "dj-工单有变更,查看详情": "工單有變更,查看詳情", + "dj-等": "等", + "dj-共": "共", + "dj-个": "個", + "dj-张": "張", + "dj-运营单元-1": "分公司", + "dj-运营单元-2": "工廠", + "dj-运营单元-3": "車間", + "dj-工单明细": "工單明細", + "dj-明细": "明細", + "dj-数据上传中": "數據上傳中", + "dj-数据校验中": "數據校驗中", + "dj-msg-ATHENA_REMIND": "ATHENA提醒", + "dj-msg-EXCEPTION_OR_OVERDUE": "項目異常/逾期提醒", + "dj-msg-INTERNAL_REMIND": "内部提醒", + "dj-msg-PROXY_REMIND": "代理人提醒", + "dj-msg-option-ALL": "全部", + "dj-msg-option-EMERGENCY": "緊急", + "dj-msg-option-EXCEPTION_OR_OVERDUE": "異常/逾期", + "dj-msg-option-NOTICE": "通知", + "dj-msg-option-PROXY": "代理", + "dj-msg-option-OTHER": "其他", + "dj-提醒关注": "提醒您關注", + "dj-基础资料录入": "基礎資料錄入", + "dj-请输入需要录入的基础资料模板名称": "請輸入需要錄入的基礎資料模板名稱", + "dj-已通知x": "已通知{{x}}" +} diff --git a/efm-demo-web/src/assets/i18n/zh_TW/default.json b/efm-demo-web/src/assets/i18n/zh_TW/default.json new file mode 100644 index 0000000..1797133 --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_TW/default.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/efm-demo-web/src/assets/i18n/zh_TW/task.json b/efm-demo-web/src/assets/i18n/zh_TW/task.json new file mode 100644 index 0000000..6c1c8ff --- /dev/null +++ b/efm-demo-web/src/assets/i18n/zh_TW/task.json @@ -0,0 +1,36 @@ +{ + "dj-task-日": "日", + "dj-task-月": "月", + "dj-task-今天": "今天", + "dj-task-本月": "本月", + "dj-task-week1": "星期一", + "dj-task-week2": "星期二", + "dj-task-week3": "星期三", + "dj-task-week4": "星期四", + "dj-task-week5": "星期五", + "dj-task-week6": "星期六", + "dj-task-week0": "星期日", + "dj-task-逾期任务": "逾期任務", + "dj-task-暂无更多任务逾期": "暫無更多任務逾期", + "dj-task-任务未逾期": "工作完成良好,任務未逾期", + "dj-task-暂无异常排除": "暫無異常排除任務需跟蹤", + "dj-task-暂无项目逾期": "暫無項目逾期需跟催", + "dj-task-今日需完成n项任务": "今日需完成任務 {{ n }}", + "dj-task-需完成n项任务": "需完成{{ n }}項任務", + "dj-task-共n项任务": "共{{ n }}項任務", + "dj-task-共计n项任务": "共計{{ n }}項任務", + "dj-task-查看完整版": "進入當天任務,查看完整版", + "dj-task-项目逾期需跟催": "項目逾期需跟催", + "dj-task-异常排除需追踪": "異常排除需跟蹤", + "dj-task-今日优先处理任务": "今日優先處理任務", + "dj-task-今日一般任务": "今日一般任務", + "dj-task-可提前处理任务": "可提前處理任務", + "dj-task-暂无任务": "暫無任務", + "dj-task-暂无任务可执行": "暫無任務可執行", + "dj-task-all": "全部", + "dj-task-等n个": "…等{{ n }}個", + "dj-task-unit-1": "分公司", + "dj-task-unit-2": "工廠", + "dj-task-unit-3": "車間", + "dj-task-确定": "確定" +} \ No newline at end of file diff --git a/efm-demo-web/src/assets/iconfont/iconfont.css b/efm-demo-web/src/assets/iconfont/iconfont.css new file mode 100644 index 0000000..b4bf625 --- /dev/null +++ b/efm-demo-web/src/assets/iconfont/iconfont.css @@ -0,0 +1,669 @@ +@font-face { + font-family: 'font-class'; + src: url('iconfont.ttf?t=1621938128860') format('truetype'); + /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ +} + +.iconfont { + width: 1em; + height: 1em; + vertical-align: -0.072em; + fill: currentColor; + overflow: hidden; +} + +.font-class { + font-family: 'font-class' !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.iconrenwuyuqishuaitishi:before { + content: "\e69d"; +} + +.iconyingwanchengshengyugongshi:before { + content: "\e69c"; +} + +.iconbiaogezhonglahou:before { + content: "\e69b"; +} + +.iconbiaogezhongchaoqian:before { + content: "\e69a"; +} + +.iconlahou:before { + content: "\e699"; +} + +.iconchaoqian:before { + content: "\e698"; +} + +.iconzhunshi:before { + content: "\e697"; +} + +.iconsousuo:before { + content: "\e633"; +} + +.iconhuishouzhan1:before { + content: "\e696"; +} + +.iconbianzu:before { + content: "\e695"; +} + +.icondelete3:before { + content: "\e65c"; +} + +.iconselectRelation:before { + content: "\e69e"; +} + +.iconjiaofuwu:before { + content: "\e692"; +} + +.iconlichengbei:before { + content: "\e693"; +} + +.iconqianhe:before { + content: "\e694"; +} + +.iconzhuomian:before { + content: "\e690"; +} + +.iconprev:before { + content: "\e68f"; +} + +.iconnext:before { + content: "\e68e"; +} + +.icon_back_to_top:before { + content: "\e68d"; +} + +.iconbeizhu:before { + content: "\e68c"; +} + +.iconzhankai:before { + content: "\e68b"; +} + +.iconshouqi:before { + content: "\e68a"; +} + +.iconzhixingren:before { + content: "\e689"; +} + +.iconmuban:before { + content: "\e688"; +} + +.iconupload1:before { + content: "\e687"; +} + +.icondelete2:before { + content: "\e686"; +} + +.icon_icon_location:before { + content: "\e685"; +} + +.icon_single_arrow:before { + content: "\e684"; +} + +.icon_eye_open:before { + content: "\e683"; +} + +.icon_eye_close:before { + content: "\e680"; +} + +.icon_doughnut_legend2:before { + content: "\e681"; +} + +.icon_doughnut_legend:before { + content: "\e682"; +} + +.iconshaixuan2:before { + content: "\e67f"; +} + +.iconquanpin:before { + content: "\e67b"; +} + +.iconkehu:before { + content: "\e67c"; +} + +.iconshuoming:before { + content: "\e67d"; +} + +.icontcqp:before { + content: "\e67e"; +} + +.iconzhuanpai:before { + content: "\e67a"; +} + +.icon_proxy_date:before { + content: "\e679"; +} + +.icon_arrow_right:before { + content: "\e678"; +} + +.icondaoru:before { + content: "\e672"; +} + +.icondaoruchenggong:before { + content: "\e673"; +} + +.iconzhengzaijinhang:before { + content: "\e674"; +} + +.iconshijian:before { + content: "\e675"; +} + +.iconyichangtishi:before { + content: "\e676"; +} + +.iconchenggongda:before { + content: "\e677"; +} + +.icon_bot_speak_dot:before { + content: "\e671"; +} + +.icon_bot_eye:before { + content: "\e670"; +} + +.icon_desktop_performer:before { + content: "\e66f"; +} + +.icon_desktop_notice:before { + content: "\e66e"; +} + +.iconxiala:before { + content: "\e66d"; +} + +.iconicon_init-project:before { + content: "\e665"; +} + +.iconicon_design:before { + content: "\e666"; +} + +.iconicon_login-out:before { + content: "\e667"; +} + +.iconicon_basic-data:before { + content: "\e668"; +} + +.iconicon_project-progress:before { + content: "\e669"; +} + +.iconicon_my-task:before { + content: "\e66a"; +} + +.iconicon_progress-check:before { + content: "\e66b"; +} + +.iconicon_project-view:before { + content: "\e66c"; +} + +.iconzuixiaocengjiicon:before { + content: "\e664"; +} + +.iconicon_setting:before { + content: "\e605"; +} + +.iconicon_notice:before { + content: "\e661"; +} + +.iconicon_all-menu:before { + content: "\e662"; +} + +.iconicon_module:before { + content: "\e663"; +} + +.iconicon_tenant:before { + content: "\e600"; +} + +.iconxinjianicon:before { + content: "\e660"; +} + +.iconxiaotianjiazixiang:before { + content: "\e65f"; +} + +.iconriqi:before { + content: "\e65e"; +} + +.iconqianzhirenwu:before { + content: "\e65d"; +} + +.icongongshi:before { + content: "\e65b"; +} + +.iconfuzeren:before { + content: "\e65a"; +} + +.iconcengji:before { + content: "\e659"; +} + +.icongouxuan:before { + content: "\e658"; +} + +.iconbianzu12:before { + content: "\e657"; +} + +.iconguanbi2:before { + content: "\e656"; +} + +.iconguanbi1:before { + content: "\e655"; +} + +.iconyichangxiaoicon:before { + content: "\e654"; +} + +.iconyuqixiao2:before { + content: "\e653"; +} + +.iconyuqi1:before { + content: "\e651"; +} + +.iconyuqixiao1:before { + content: "\e652"; +} + +.iconyiwancheng-xuanzhong:before { + content: "\e650"; +} + +.iconbianzu22:before { + content: "\e64f"; +} + +.iconzhengchang-guanliren:before { + content: "\e64e"; +} + +.iconyichang-guanliren:before { + content: "\e64d"; +} + +.iconperson:before { + content: "\e64c"; +} + +.iconxingzhuangjiehe:before { + content: "\e641"; +} + +.iconlujing1:before { + content: "\e63e"; +} + +.iconlujing:before { + content: "\e606"; +} + +.iconxingzhuang:before { + content: "\e602"; +} + +.iconshebeizong:before { + content: "\e601"; +} + +.iconz1:before { + content: "\e64a"; +} + +.iconproject:before { + content: "\e64b"; +} + +.iconz:before { + content: "\e648"; +} + +.iconjy:before { + content: "\e647"; +} + +.iconsc:before { + content: "\e644"; +} + +.iconsj:before { + content: "\e645"; +} + +.iconyc:before { + content: "\e646"; +} + +.icongf1:before { + content: "\e643"; +} + +.iconwf:before { + content: "\e642"; +} + +.iconxin:before { + content: "\e640"; +} + +.iconyuan:before { + content: "\e63f"; +} + +.iconnone:before { + content: "\e63d"; +} + +.iconclose:before { + content: "\e63c"; +} + +.icontip:before { + content: "\e63b"; +} + +.iconsuggestion:before { + content: "\e637"; +} + +.iconhousehold:before { + content: "\e638"; +} + +.icontotal:before { + content: "\e639"; +} + +.iconraw-material:before { + content: "\e63a"; +} + +.iconicon-test:before { + content: "\e636"; +} + +.icondate-red:before { + content: "\e635"; +} + +.icondate1:before { + content: "\e634"; +} + +.iconset:before { + content: "\e631"; +} + +.iconshare:before { + content: "\e632"; +} + +.iconUpload-more:before { + content: "\e630"; +} + +.icondown:before { + content: "\e62e"; +} + +.iconup:before { + content: "\e62f"; +} + +.iconchaxun:before { + content: "\e62a"; +} + +.iconfaqi:before { + content: "\e62b"; +} + +.iconjindu:before { + content: "\e62c"; +} + +.iconrenwu:before { + content: "\e62d"; +} + +.iconyuqi:before { + content: "\e628"; +} + +.iconjinji:before { + content: "\e629"; +} + +.iconconduct:before { + content: "\e627"; +} + +.iconmore3:before { + content: "\e649"; +} + +.iconmore2:before { + content: "\e626"; +} + +.iconback:before { + content: "\e625"; +} + +.icondelete1:before { + content: "\e624"; +} + +.iconmore:before { + content: "\e623"; +} + +.icondai:before { + content: "\e622"; +} + +.iconnew:before { + content: "\e621"; +} + +.iconwarn:before { + content: "\e61b"; +} + +.iconagent:before { + content: "\e61e"; +} + +.iconabnormal:before { + content: "\e61f"; +} + +.iconnews:before { + content: "\e620"; +} + +.iconimportant:before { + content: "\e61c"; +} + +.iconoverdue:before { + content: "\e61d"; +} + +.icongreen-hook:before { + content: "\e619"; +} + +.iconignore:before { + content: "\e61a"; +} + +.iconreasonable:before { + content: "\e618"; +} + +.iconsuggest:before { + content: "\e617"; +} + +.iconchanging:before { + content: "\e615"; +} + +.iconchanged:before { + content: "\e616"; +} + +.iconexplain:before { + content: "\e614"; +} + +.iconreplace:before { + content: "\e613"; +} + +.iconnotice2:before { + content: "\e611"; +} + +.iconnotice:before { + content: "\e612"; +} + +.iconProcessing:before { + content: "\e610"; +} + +.iconschedule:before { + content: "\e60f"; +} + +.icondate:before { + content: "\e60d"; +} + +.icondelete:before { + content: "\e60e"; +} + +.icondownload:before { + content: "\e60a"; +} + +.icondrop-down1:before { + content: "\e60b"; +} + +.icondismantle:before { + content: "\e60c"; +} + +.iconsee:before { + content: "\e607"; +} + +.iconrefresh:before { + content: "\e608"; +} + +.iconupload:before { + content: "\e609"; +} + +.iconedit1:before { + content: "\e603"; +} + +.iconcall1:before { + content: "\e604"; +} + +.iconstart:before { + content: "\e770"; +} + +.iconcenter:before { + content: "\e771"; +} + +.iconend:before { + content: "\e773"; +} + +.iconstartstop:before { + content: "\e775"; +} diff --git a/efm-demo-web/src/assets/iconfont/iconfont.js b/efm-demo-web/src/assets/iconfont/iconfont.js new file mode 100644 index 0000000..151b10e --- /dev/null +++ b/efm-demo-web/src/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(a){var l,h,c,i,o,m='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),z=function(a,l){l.parentNode.insertBefore(a,l)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function v(){o||(o=!0,c())}function p(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}v()}l=function(){var a,l=document.createElement("div");l.innerHTML=m,m=null,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?z(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),l()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(c=l,i=a.document,o=!1,p(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window); \ No newline at end of file diff --git a/efm-demo-web/src/assets/iconfont/iconfont.ttf b/efm-demo-web/src/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000..fc0e0ee Binary files /dev/null and b/efm-demo-web/src/assets/iconfont/iconfont.ttf differ diff --git a/efm-demo-web/src/assets/icons/icon-128x128.png b/efm-demo-web/src/assets/icons/icon-128x128.png new file mode 100644 index 0000000..9f9241f Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-128x128.png differ diff --git a/efm-demo-web/src/assets/icons/icon-144x144.png b/efm-demo-web/src/assets/icons/icon-144x144.png new file mode 100644 index 0000000..4a5f8c1 Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-144x144.png differ diff --git a/efm-demo-web/src/assets/icons/icon-152x152.png b/efm-demo-web/src/assets/icons/icon-152x152.png new file mode 100644 index 0000000..34a1a8d Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-152x152.png differ diff --git a/efm-demo-web/src/assets/icons/icon-192x192.png b/efm-demo-web/src/assets/icons/icon-192x192.png new file mode 100644 index 0000000..9172e5d Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-192x192.png differ diff --git a/efm-demo-web/src/assets/icons/icon-384x384.png b/efm-demo-web/src/assets/icons/icon-384x384.png new file mode 100644 index 0000000..e54e8d3 Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-384x384.png differ diff --git a/efm-demo-web/src/assets/icons/icon-512x512.png b/efm-demo-web/src/assets/icons/icon-512x512.png new file mode 100644 index 0000000..51ee297 Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-512x512.png differ diff --git a/efm-demo-web/src/assets/icons/icon-72x72.png b/efm-demo-web/src/assets/icons/icon-72x72.png new file mode 100644 index 0000000..2814a3f Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-72x72.png differ diff --git a/efm-demo-web/src/assets/icons/icon-96x96.png b/efm-demo-web/src/assets/icons/icon-96x96.png new file mode 100644 index 0000000..d271025 Binary files /dev/null and b/efm-demo-web/src/assets/icons/icon-96x96.png differ diff --git a/efm-demo-web/src/assets/img/dwLogo.svg b/efm-demo-web/src/assets/img/dwLogo.svg new file mode 100644 index 0000000..b7f1aa9 --- /dev/null +++ b/efm-demo-web/src/assets/img/dwLogo.svg @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/efm-demo-web/src/assets/img/user-pic.png b/efm-demo-web/src/assets/img/user-pic.png new file mode 100644 index 0000000..cab086b Binary files /dev/null and b/efm-demo-web/src/assets/img/user-pic.png differ diff --git a/efm-demo-web/src/assets/jsstore/jsstore.min.js b/efm-demo-web/src/assets/jsstore/jsstore.min.js new file mode 100644 index 0000000..c924604 --- /dev/null +++ b/efm-demo-web/src/assets/jsstore/jsstore.min.js @@ -0,0 +1,7 @@ +/*! + * @license :jsstore - V4.0.1 - 19/04/2023 + * https://github.com/ujjwalguptaofficial/JsStore + * Copyright (c) 2023 @Ujjwal Gupta; Licensed MIT + */ +var JsStore=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([,function(e,t,n){"use strict";n.r(t),n.d(t,"Connection",(function(){return y})),n.d(t,"DATA_TYPE",(function(){return i}));var r,o,i,u,s,a,p,c,l,d=function(){function e(e,t){this.type=e,this._info=t,this.message=this.getMsg()}return e.prototype.throw=function(){throw this.get()},e.prototype.log=function(e){this.status&&console.log(e)},e.prototype.logError=function(){console.error(this.get())},e.prototype.logWarning=function(){console.warn(this.get())},e.prototype.get=function(){return{message:this.message,type:this.type}},e.prototype.getMsg=function(){return this.type,this.message},e}();!function(e){e.UndefinedColumn="undefined_column",e.UndefinedValue="undefined_value",e.UndefinedColumnName="undefined_column_name",e.UndefinedDbName="undefined_database_name",e.UndefinedColumnValue="undefined_column_value",e.NotArray="not_array",e.NoValueSupplied="no_value_supplied",e.ColumnNotExist="column_not_exist",e.EnableSearchOff="enable_search_off",e.InvalidOp="invalid_operator",e.NullValue="null_value",e.WrongDataType="wrong_data_type",e.TableNotExist="table_not_exist",e.DbNotExist="db_not_exist",e.ConnectionAborted="connection_aborted",e.ConnectionClosed="connection_closed",e.NotObject="not_object",e.InvalidConfig="invalid_config",e.DbBlocked="Db_blocked",e.IndexedDbNotSupported="indexeddb_not_supported",e.NullValueInWhere="null_value_in_where",e.InvalidJoinQuery="invalid_join_query",e.InvalidOrderQuery="invalid_order_query",e.InvalidQuery="invalid_query",e.InvalidGroupQuery="invalid_group_query",e.ImportScriptsFailed="import_scripts_failed",e.MethodNotExist="method_not_exist",e.Unknown="unknown"}(r||(r={})),function(e){e.Registered="registerd",e.Failed="failed",e.NotStarted="not_started"}(o||(o={})),function(e){e.String="string",e.Object="object",e.Array="array",e.Number="number",e.Boolean="boolean",e.Null="null",e.DateTime="date_time"}(i||(i={})),function(e){e.InitDb="init_db",e.Get="get",e.Set="set",e.Select="select",e.Insert="insert",e.Update="update",e.Remove="remove",e.OpenDb="open_db",e.Clear="clear",e.DropDb="drop_db",e.Count="count",e.ChangeLogStatus="change_log_status",e.Terminate="terminate",e.Transaction="transaction",e.CloseDb="close_db",e.Union="union",e.Intersect="intersect",e.ImportScripts="import_scripts"}(u||(u={})),function(e){e.RequestQueueEmpty="requestQueueEmpty",e.RequestQueueFilled="requestQueueFilled"}(s||(s={})),function(e){e.Where="where",e.Like="like",e.Regex="regex",e.In="in",e.Equal="=",e.Between="-",e.GreaterThan=">",e.LessThan="<",e.GreaterThanEqualTo=">=",e.LessThanEqualTo="<=",e.NotEqualTo="!=",e.Aggregate="aggregate",e.Max="max",e.Min="min",e.Avg="avg",e.Count="count",e.Sum="sum",e.Or="or",e.Skip="skip",e.Limit="limit",e.And="and",e.IgnoreCase="ignoreCase",e.Then="then"}(a||(a={})),function(e){e.ReadOnly="readonly",e.ReadWrite="readwrite"}(p||(p={})),function(e){e.First="f",e.Last="l",e.Any="a"}(c||(c={})),function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start",e.ClosedByJsStore="closed_by_jsstore"}(l||(l={}));var h,f=function(){function e(e){this.isConOpened_=!1,this.isDbIdle_=!0,this.requestQueue_=[],this.isCodeExecuting_=!1,this.inactivityTimer_=-1e3,this.eventQueue=[],this.middlewares=[],this.whiteListApi_=[u.InitDb,u.OpenDb,u.Get,u.Set,u.ChangeLogStatus,u.Terminate,u.DropDb],this.isRuningInWorker=!0,this.logger=new d(null),e?(this.worker_=e,this.worker_.onmessage=this.onMessageFromWorker_.bind(this)):(this.isRuningInWorker=!1,this.initQueryManager_())}return Object.defineProperty(e.prototype,"jsstoreWorker",{get:function(){return this.$worker||window.JsStoreWorker},enumerable:!1,configurable:!0}),e.prototype.initQueryManager_=function(){var e=this.jsstoreWorker;e&&(this.queryManager=new e.QueryManager(this.processFinishedQuery_.bind(this)))},e.prototype.onMessageFromWorker_=function(e){this.processFinishedQuery_(e.data)},e.prototype.processFinishedQuery_=function(e){var t=this.requestQueue_.shift();if(t){if(this.logger.log("request "+t.name+" finished"),e.error)t.onError(e.error);else{switch(t.name){case u.OpenDb:case u.InitDb:this.isConOpened_=!0;break;case u.Terminate:this.isConOpened_=!1,!0===this.isRuningInWorker&&this.worker_.terminate();case u.DropDb:this.isConOpened_=!1,this.requestQueue_=[],this.isDbIdle_=!0;break;case u.CloseDb:this.requestQueue_.length>0?this.openDb_():(this.isDbIdle_=!0,this.callEvent(s.RequestQueueEmpty,[]))}t.onSuccess(e.result)}this.isCodeExecuting_=!1,this.executeQry_()}},e.prototype.openDb_=function(){this.prcoessExecutionOfQry_({name:u.OpenDb,query:{name:this.database.name,version:this.database.version},onSuccess:function(){},onError:function(e){console.error(e)}},0)},e.prototype.executeMiddleware_=function(e){var t=this;return new Promise((function(n){var r=0,o=t.middlewares.length-1,i=function(){r<=o?t.middlewares[r++](e,i):n()};i()}))},e.prototype.pushApi=function(e){var t=this;return new Promise((function(n,r){t.executeMiddleware_(e).then((function(){(e.onSuccess=n,e.onError=r,0===t.requestQueue_.length)&&(t.callEvent(s.RequestQueueFilled,[]),!([u.CloseDb,u.DropDb,u.OpenDb,u.Terminate].indexOf(e.name)>=0)&&t.isDbIdle_&&t.isConOpened_?t.openDb_():clearTimeout(t.inactivityTimer_));t.prcoessExecutionOfQry_(e)})).catch(r)}))},e.prototype.prcoessExecutionOfQry_=function(e,t){this.isDbIdle_=!1,null!=t?this.requestQueue_.splice(t,0,e):this.requestQueue_.push(e),this.logger.log("request pushed: "+e.name),this.executeQry_()},e.prototype.executeQry_=function(){var e=this,t=this.requestQueue_.length;if(!this.isCodeExecuting_&&t>0){if(!0===this.isConOpened_)return void this.sendRequestToWorker_(this.requestQueue_[0]);var n=this.requestQueue_.findIndex((function(t){return e.whiteListApi_.indexOf(t.name)>=0}));n>=0&&(this.requestQueue_.splice(0,0,this.requestQueue_.splice(n,1)[0]),this.sendRequestToWorker_(this.requestQueue_[0]))}else 0===t&&!1===this.isDbIdle_&&this.isConOpened_&&(this.inactivityTimer_=setTimeout((function(){e.prcoessExecutionOfQry_({name:u.CloseDb,onSuccess:function(){},onError:function(e){console.error(e)}})}),100))},e.prototype.sendRequestToWorker_=function(e){this.isCodeExecuting_=!0,this.logger.log("request executing: "+e.name);var t={name:e.name,query:e.query};!0===this.isRuningInWorker?this.worker_.postMessage(t):this.queryManager.run(t)},e.prototype.callEvent=function(e,t){this.eventQueue.filter((function(t){if(t.event===e)return t})).forEach((function(e){e.callback.apply(e,t)}))},e}(),_=(h=function(e,t){return(h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}h(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),y=function(e){function t(t){return e.call(this,t)||this}return _(t,e),t.prototype.initDb=function(e){return this.database=e,this.pushApi({name:u.InitDb,query:e})},t.prototype.dropDb=function(){return this.pushApi({name:u.DropDb})},t.prototype.select=function(e){return this.pushApi({name:u.Select,query:e})},t.prototype.count=function(e){return this.pushApi({name:u.Count,query:e})},t.prototype.insert=function(e){return this.pushApi({name:u.Insert,query:e})},t.prototype.update=function(e){return this.pushApi({name:u.Update,query:e})},t.prototype.remove=function(e){return this.pushApi({name:u.Remove,query:e})},t.prototype.clear=function(e){return this.pushApi({name:u.Clear,query:e})},Object.defineProperty(t.prototype,"logStatus",{set:function(e){this.logger.status=e,this.pushApi({name:u.ChangeLogStatus,query:e})},enumerable:!1,configurable:!0}),t.prototype.openDb=function(e,t){var n=this;return this.pushApi({name:u.OpenDb,query:{version:t,name:e}}).then((function(e){return n.database=e,e}))},t.prototype.getDbList=function(){return console.warn("Api getDbList is recommended to use for debugging only. Do not use in code."),indexedDB.databases()},t.prototype.get=function(e){return this.pushApi({name:u.Get,query:e})},t.prototype.set=function(e,t){return this.pushApi({name:u.Set,query:{key:e,value:t}})},t.prototype.terminate=function(){return this.pushApi({name:u.Terminate})},t.prototype.transaction=function(e){return this.pushApi({name:u.Transaction,query:e})},t.prototype.on=function(e,t){this.eventQueue.push({event:e,callback:t})},t.prototype.off=function(e,t){var n=this;if(t){var r=this.eventQueue.findIndex((function(t){return t.event===e}));this.eventQueue.splice(r,0)}else{var o=[];this.eventQueue.forEach((function(t,n){t.event===e&&o.push(n)})),o.forEach((function(e){n.eventQueue.splice(e,1)}))}},t.prototype.union=function(e){return this.pushApi({name:u.Union,query:e})},t.prototype.intersect=function(e){return this.pushApi({name:u.Intersect,query:e})},t.prototype.addPlugin=function(e,t){e.setup(this,t)},t.prototype.addMiddleware=function(e){this.middlewares.push(e)},t.prototype.importScripts=function(){for(var e=[],t=0;t",e.LessThan="<",e.GreaterThanEqualTo=">=",e.LessThanEqualTo="<=",e.NotEqualTo="!=",e.Aggregate="aggregate",e.Max="max",e.Min="min",e.Avg="avg",e.Count="count",e.Sum="sum",e.Or="or",e.Skip="skip",e.Limit="limit",e.And="and",e.IgnoreCase="ignoreCase",e.Then="then"}(a||(a={})),function(e){e.ReadOnly="readonly",e.ReadWrite="readwrite"}(c||(c={})),function(e){e.First="f",e.Last="l",e.Any="a"}(l||(l={})),function(e){e.Connected="connected",e.Closed="closed",e.NotStarted="not_started",e.UnableToStart="unable_to_start",e.ClosedByJsStore="closed_by_jsstore"}(h||(h={}));var f,p=function(e){return new Promise(e)};!function(e){e.Create="create",e.Delete="delete"}(f||(f={}));var d,y=function(){function e(e,t){this.autoIncColumnValue={};var n=[];for(var r in e.columns){var o=e.columns[r];o.name=r,o.autoIncrement&&(this.autoIncColumnValue[r]=0),o.primaryKey&&(this.primaryKey=r),o.enableSearch=null==o.enableSearch||o.enableSearch,n.push(o)}this.columns=n,this.name=e.name,this.version=e.version||1,t>this.version&&(this.version=t),this.setState_()}return e.prototype.setState_=function(){this.state=f.Create},e}(),v=function(){function e(){}return e.autoIncrementKey=function(e,t){return"JsStore_"+e+"_"+t+"_Value"},e.set=function(t,n,r){r.tx||r.createTransaction([e.tableName]);var o=r.objectStore(e.tableName);return p((function(e,r){var i=o.put({key:t,value:n});i.onsuccess=function(){e()},i.onerror=r}))},e.get=function(t,n){n.tx||n.createTransaction([e.tableName]);var r=n.objectStore(e.tableName);return p((function(e,o){var i=r.get(n.keyRange(t));i.onsuccess=function(){var t=i.result;e(t&&t.value)},i.onerror=o}))},e.remove=function(t,n){n.tx||n.createTransaction([e.tableName]);var r=n.objectStore(e.tableName);return p((function(e,o){var i=r.delete(n.keyRange(t));i.onsuccess=e,i.onerror=o}))},e.tableName="JsStore_Meta",e.dbSchema="JsStore_DbSchema",e}(),b=function(e){this.name=e.name,e.tables.push({name:v.tableName,columns:{key:{primaryKey:!0},value:{enableSearch:!1}}}),this.tables=e.tables.map((function(t){return new y(t,e.version)})),this.version=e.version||1},m=function(){function e(e){this.db=e}return e.prototype.emptyTx=function(){this.tx&&(this.tx.oncomplete=null,this.tx.onabort=null,this.tx.onerror=null,this.tx=null)},e.prototype.createTransaction=function(e,t){var n=this;return void 0===t&&(t=c.ReadWrite),this.tx=this.con.transaction(e,t),p((function(e,t){n.tx.oncomplete=e,n.tx.onabort=e,n.tx.onerror=t}))},e.prototype.keyRange=function(e,t){var n;switch(t){case a.Between:n=IDBKeyRange.bound(e.low,e.high,!1,!1);break;case a.GreaterThan:n=IDBKeyRange.lowerBound(e,!0);break;case a.GreaterThanEqualTo:n=IDBKeyRange.lowerBound(e);break;case a.LessThan:n=IDBKeyRange.upperBound(e,!0);break;case a.LessThanEqualTo:n=IDBKeyRange.upperBound(e);break;default:n=IDBKeyRange.only(e)}return n},e.prototype.objectStore=function(e){return this.tx.objectStore(e)},e.prototype.abortTransaction=function(){this.tx&&this.tx.abort()},e.prototype.close=function(){var e=this;return this.con&&this.con.close(),p((function(t){e.con=null,setTimeout(t,100)}))},e.prototype.initDb=function(){var e=this,t=this.db,n=!1;return p((function(r,o){var i=indexedDB.open(t.name,t.version);i.onsuccess=function(){e.con=i.result,e.con.onversionchange=function(e){e.target.close()},r(n)},i.onerror=function(e){console.error("error",e),o(e)},i.onupgradeneeded=function(e){var r=e.target.result;n=!0;var o=[f.Create,f.Delete];t.tables.forEach((function(e){o.indexOf(e.state)>=0&&function(e){var t=e.primaryKey?{keyPath:e.primaryKey}:{autoIncrement:!0};r.objectStoreNames.contains(e.name)&&r.deleteObjectStore(e.name);var n=r.createObjectStore(e.name,t);e.columns.forEach((function(e){if(e.enableSearch){var t=e.name,r=e.primaryKey?{unique:!0}:{unique:e.unique};r.multiEntry=e.multiEntry;var o=null==e.keyPath?t:e.keyPath;n.createIndex(t,o,r)}}))}(e)}))}}))},e}(),g=function(e){return Promise.all(e)},_=function(e){return Promise.reject(e)},w=function(){function e(e,t){void 0===t&&(t=null),this.type=e,this.info_=t,this.message=this.getMsg_()}return e.prototype.throw=function(){throw this.get()},e.prototype.log=function(e){console.log(e)},e.prototype.logError=function(){console.error(this.get())},e.prototype.get=function(){return{message:this.message,type:this.type}},e.prototype.getMsg_=function(){var e;switch(this.type){case r.NotArray:e="Supplied value is not an array";break;case r.UndefinedColumn:e="Column is undefined in Where";break;case r.UndefinedValue:e="Value is undefined in Where";break;case r.UndefinedColumnName:e="Column name is undefined '"+this.info_.TableName+"'";break;case r.UndefinedDbName:e="Database name is not supplied";break;case r.UndefinedColumnValue:e="Column value is undefined";break;case r.NoValueSupplied:e="No value is supplied";break;case r.InvalidOp:e="Invalid Op Value '"+this.info_.Op+"'";break;case r.ColumnNotExist:e=this.info_.isOrder?"Column '"+this.info_.column+"' in order query does not exist":"Column '"+this.info_.column+"' does not exist";break;case r.EnableSearchOff:e="Search is turned off for the Column '"+this.info_.column+"'";break;case r.NullValue:e="Null value is not allowed for column '"+this.info_.ColumnName+"'";break;case r.WrongDataType:e="Supplied value for column '"+this.info_.column+"' have wrong data type";break;case r.TableNotExist:e="Table '"+this.info_.tableName+"' does not exist";break;case r.DbNotExist:e="Database with name "+this.info_.dbName+" does not exist";break;case r.NotObject:e="supplied value is not object";break;case r.InvalidOp:e="Invalid Config '"+this.info_.Config+" '";break;case r.DbBlocked:e="database is blocked, cant be deleted right now";break;case r.NullValueInWhere:e="Null/undefined is not allowed in where. Column '"+this.info_.column+"' has null";break;case r.MethodNotExist:e="method "+this.info_+" does not exist.";break;case r.IndexedDbNotSupported:e="Browser does not support indexeddb";break;case r.InvalidJoinQuery:case r.InvalidGroupQuery:case r.InvalidOrderQuery:case r.ImportScriptsFailed:e=this.info_;break;default:this.type||(this.type=r.Unknown),e=this.message}return e},e}(),x=function(e){if(e instanceof w)return e.logError(),e.get();var t=void 0;return e.name?(t=new w(e.name)).message=e.message:(t=new w(e.target.error.name)).message=e.target.error.message,t.get()},k=function(){function e(){this.rowAffected=0,this.isTxQuery=!1,this.results=[]}return e.prototype.table=function(e){var t=e||this.tableName;return this.db.tables.find((function(e){return e.name===t}))},e.prototype.primaryKey=function(e){return this.table(e).primaryKey},e.prototype.getColumnInfo=function(e,t){return this.table(t).columns.find((function(t){return t.name===e}))},e.prototype.onException=function(e,t){return console.error(e),this.util.abortTransaction(),_(function(e,t){return void 0===t&&(t=r.InvalidQuery),e.name=t,x(e)}(e,t))},e}(),E=function(e){if(null==e)return i.Null;var t=typeof e;switch(t){case"object":if(Array.isArray(e))return i.Array;if(e instanceof Date)return i.DateTime}return t},T=function(e){if(null==e)return!0;switch(typeof e){case"string":return 0===e.length;case"number":return isNaN(e)}return!1},q=function(){function e(e,t){this.table=e,this.autoIncrementValue=t}return e.prototype.checkAndModifyValues=function(e){var t,n=this;return e.every((function(e){return!(t=n.checkAndModifyValue(e))})),{err:t,values:e}},e.prototype.checkAndModifyValue=function(e){var t,n=this;return this.table.columns.every((function(r){return!(t=n.checkAndModifyColumnValue_(r,e))})),t},e.prototype.checkNotNullAndDataType_=function(e,t){return e.notNull&&T(t[e.name])?this.getError(r.NullValue,{ColumnName:e.name}):e.dataType&&!T(t[e.name])&&E(t[e.name])!==e.dataType?this.getError(r.WrongDataType,{column:e.name}):void 0},e.prototype.checkAndModifyColumnValue_=function(e,t){var n=t[e.name];return e.autoIncrement?T(n)?t[e.name]=++this.autoIncrementValue[e.name]:E(n)===i.Number&&n>this.autoIncrementValue[e.name]&&(this.autoIncrementValue[e.name]=n):void 0!==e.default&&T(n)&&(t[e.name]=e.default),this.checkNotNullAndDataType_(e,t)},e.prototype.getError=function(e,t){return new w(e,t)},e}(),S=function(){function e(e){this.table=e}return e.prototype.check=function(e,t){var n,o=this;return typeof e===i.Object?this.table?this.table.columns.every((function(t){return t.name in e&&(n=o.checkByColumn_(t,e[t.name])),!n})):n=new w(r.TableNotExist,{tableName:t}):n=new w(r.NotObject),n},e.prototype.checkByColumn_=function(e,t){if(!0===e.notNull&&T(t))return new w(r.NullValue,{ColumnName:e.name});var n=E(t),o=null!=t;if(e.dataType&&o&&n!==e.dataType&&"object"!==n)return new w(r.WrongDataType,{column:e.name});if(o&&"object"===n){var i=["+","-","*","/","{push}"];for(var u in t)if(i.indexOf(u)<0&&e.dataType&&n!==e.dataType)return new w(r.WrongDataType,{column:e.name})}},e}(),C=function(){function e(e){this.db=e}return e.prototype.validate=function(e,t){switch(e){case u.Select:case u.Remove:case u.Count:return this.checkSelect(t);case u.Insert:return this.checkInsertQuery(t);case u.Update:return this.checkUpdate(t)}},e.prototype.getTable_=function(e){return this.db.tables.find((function(t){return t.name===e}))},e.prototype.isInsertQryValid_=function(e){var t,n=this.getTable_(e.into);if(n)switch(E(e.values)){case i.Array:break;case i.Null:t=new w(r.NoValueSupplied);break;default:t=new w(r.NotArray)}else t=new w(r.TableNotExist,{tableName:e.into});return{table:n,log:t}},e.prototype.checkUpdate=function(e){var t=new S(this.getTable_(e.in)).check(e.set,e.in);if(t)return t;if(null!=e.where){if(t=this.checkForNullInWhere_(e))return t;this.addGreatAndLessToNotOp_(e)}},e.prototype.checkSelect=function(e){if(!this.getTable_(e.from))return new w(r.TableNotExist,{tableName:e.from});if(e.where){var t=this.checkForNullInWhere_(e);if(t)return t;this.addGreatAndLessToNotOp_(e)}},e.prototype.checkForNullInWhere_=function(e){for(var t in e.where)if(null==e.where[t])return new w(r.NullValueInWhere,{column:t})},e.prototype.addGreatAndLessToNotOp_=function(e){var t=e.where,n=function(e,t){return t.findIndex((function(t){return null!=e[t][a.NotEqualTo]}))>=0},r=function(e,t){var n;return t.forEach((function(t){null!=(n=e[t])[a.NotEqualTo]&&(e[t][a.GreaterThan]=n[a.NotEqualTo],void 0===e[a.Or]?(e[a.Or]={},e[a.Or][t]={}):void 0===e[a.Or][t]&&(e[a.Or][t]={}),e[a.Or][t][a.LessThan]=n[a.NotEqualTo],delete e[t][a.NotEqualTo])})),e};switch(E(t)){case i.Object:var o=Object.keys(t);if(n(t,o))if(1===o.length)e.where=r(t,o);else{var u=[];o.forEach((function(e){var n;u.push(r(((n={})[e]=t[e],n),[e]))})),e.where=u}break;default:var s=[];t.forEach((function(e){var t=Object.keys(e);n(e,t)&&(e=r(e,t)),s.push(e)})),e.where=s}},e.prototype.checkInsertQuery=function(e){var t=this.isInsertQryValid_(e),n=t.table,r=t.log;if(r)return r;if(!e.skipDataCheck){var o=new q(n,n.autoIncColumnValue).checkAndModifyValues(e.values),i=o.values,u=o.err;return e.values=i,u}},e}(),O=(d=function(e,t){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}d(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),I=function(e){function t(t,n){var r=e.call(this)||this;return r.valuesAffected_=[],r.query=t,r.util=n,r.tableName=t.into,r}return O(t,e),t.prototype.execute=function(e){var t=this,n=new C(e).validate(u.Insert,this.query);return n?_(n):this.insertData_(e).then((function(e){return t.query.return?t.valuesAffected_:t.rowAffected})).catch((function(e){return t.util.abortTransaction(),_(e)}))},t.prototype.insertData_=function(e){var t,n,r,o=this;return n=this.query.return?function(e){o.valuesAffected_.push(e)}:function(e){++o.rowAffected},r=this.query.upsert?function(e){return t.put(e)}:function(e){return t.add(e)},this.isTxQuery||this.util.createTransaction([this.query.into,v.tableName]),t=this.util.objectStore(this.tableName),g(this.query.values.map((function(e){return p((function(t,o){var i=r(e);i.onerror=o,i.onsuccess=function(){n(e),t()}}))}))).then((function(){v.set(v.dbSchema,e,o.util)}))},t}(k),j=void 0===self.alert&&"undefined"==typeof ServiceWorkerGlobalScope,A=function(){try{if(indexedDB||(indexedDB=self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB),!indexedDB)return!1;IDBTransaction=IDBTransaction||self.webkitIDBTransaction||self.msIDBTransaction,self.IDBKeyRange=self.IDBKeyRange||self.webkitIDBKeyRange||self.msIDBKeyRange}catch(e){return!1}return!0}(),N=function(e){return Object.keys(e)},R=function(e){return Array.isArray(e)},Q=function(e){return N(e).length},D=function(e){for(var t in e)return t},L=function(){var e=this;this.query.case?this.pushResult=function(t){var n;for(n in e.thenEvaluator.setCaseAndValue(e.query.case,t),e.query.case)t[n]=e.thenEvaluator.setColumn(n).evaluate();e.results.push(t)}:this.pushResult=function(t){e.results.push(t)}},V=function(){this.query.limit&&(this.shouldEvaluateLimitAtEnd=!0),this.query.skip&&(this.shouldEvaluateSkipAtEnd=!0)},W=function(){var e=this.results;this.results=null;for(var t=this.primaryKey(),n={},r=0,o=e.length;re[t])return!0;break;case a.Equal:if(this.value[this.columnName_]===e[t])return!0;break;case a.LessThan:if(this.value[this.columnName_]=e[t])return!0;break;case a.LessThanEqualTo:if(this.value[this.columnName_]<=e[t])return!0;break;case a.NotEqualTo:if(this.value[this.columnName_]!==e[t])return!0;break;case a.Between:if(this.value[this.columnName_]>e[t].low&&this.value[this.columnName_]0?e:null}this.query.groupBy?this.query.aggregate?this.executeAggregateGroupBy():this.processGroupBy():this.query.aggregate&&this.processAggregateQry()},z=function(e){var t;if(null==this.query.join)t=this.getColumnInfo(e);else{var n=J(e).split(".");e=n[1],t=this.getColumnInfo(e,n[0])}if(null==t){var o=this.results[0][e];if(o)return{dataType:E(o),name:e};throw new w(r.ColumnNotExist,{column:e,isOrder:!0})}return t},$=function(e,t){return t.localeCompare(e)},H=function(e,t){return e.localeCompare(t)},X=function(e,t){return new String(t).localeCompare(e)},Y=function(e,t){return new String(e).localeCompare(t)},Z=function(e,t){return t-e},ee=function(e,t){return e-t},te=function(e,t){return t.getTime()-e.getTime()},ne=function(e,t){return e.getTime()-t.getTime()},re=function(e,t,n){for(var r in n){this.thenEvaluator.setCaseAndValue(n,e);var o=this.thenEvaluator.setColumn(r).evaluate();this.thenEvaluator.setCaseAndValue(n,t);var u=this.thenEvaluator.setColumn(r).evaluate();switch(typeof e[o]){case i.String:return $(e[o],t[u]);default:return Z(e[o],t[u])}}},oe=function(e,t,n){for(var r in n){this.thenEvaluator.setCaseAndValue(n,e);var o=this.thenEvaluator.setColumn(r).evaluate();this.thenEvaluator.setCaseAndValue(n,t);var u=this.thenEvaluator.setColumn(r).evaluate();switch(typeof e[o]){case i.String:return H(e[o],t[u]);default:return ee(e[o],t[u])}}},ie=function(e,t){switch(e.dataType){case i.String:return"asc"===t.type?H:$;case i.Number:return"asc"===t.type?ee:Z;case i.DateTime:return"asc"===t.type?ne:te;default:return"asc"===t.type?Y:X}},ue=function(e){var t,n=this;e.type=se(e.type);var r=e.by;if(null!=r&&typeof r===i.Object)"asc"===e.type?this.results.sort((function(e,t){return oe.call(n,e,t,r)})):this.results.sort((function(e,t){return re.call(n,e,t,r)}));else{var o=z.call(this,r);if(null!=o){var u=ie(o,e);r=o.name,null==e.case?this.results.sort((function(e,t){return u(e[r],t[r])})):(this.thenEvaluator.setCaseAndColumn(((t={})[r]=e.case,t),r),this.results.sort((function(e,t){return u(n.thenEvaluator.setValue(e).evaluate(),n.thenEvaluator.setValue(t).evaluate())})))}}},se=function(e){return null==e?"asc":e.toLowerCase()},ae=function(){var e=this.query.order;if(e&&this.results.length>0&&!this.sorted){var t=E(e);if(t===i.Object)ue.call(this,e);else if(t===i.Array){ue.call(this,e[0]);for(var n=function(t,n){var o=e[t-1].by,i=e[t],u=i.by,s=z.call(r,u);if(null!=s){u=s.name,i.type=se(i.type);var a=ie(s,i);r.results.sort((function(e,t){return e[o]===t[o]?a(e[u],t[u]):0}))}},r=this,o=1,u=e.length;ot[r][e]?n:t[r][e];return n},s=function(){var n=1/0,r=1/0;for(var o in t)n=n<(r=t[o][e]?t[o][e]:1/0)?n:r;return n},a=function(){var n=0;for(var r in t)n+=t[r][e];return n},c=function(){var r=0;for(var o in t)r+=t[o][e];return r/n};for(var l in this.query.aggregate){var h=this.query.aggregate[l],f=E(h),p=void 0;switch(l){case"count":p=o;break;case"max":p=u;break;case"min":p=s;break;case"sum":p=a;break;case"avg":p=c}switch(f){case i.String:r[l+"("+(e=h)+")"]=p();break;case i.Array:for(var d in h)r[l+"("+(e=h[d])+")"]=p()}}for(var l in r)t[0][l]=r[l];this.results=[t[0]]},le=function(){var e=this.query.groupBy,t=this.results,n={};if(this.results=this.query.groupBy=null,E(e)!==i.Object)if(E(e)===i.String)for(var r in t)n[t[r][e]]=t[r];else{var o=void 0;for(var r in t){for(var u in o="",e)o+=t[r][e[u]];n[o]=t[r]}}else if(1===Object.keys(e).length){var s=D(e);for(var r in this.thenEvaluator.setCaseAndColumn(e,s),t)n[this.thenEvaluator.setValue(t[r]).evaluate()]=t[r]}else{o=void 0;for(var r in t){for(var u in o="",this.thenEvaluator.setCaseAndValue(e,t[r]),e)o+=this.thenEvaluator.setColumn(u).evaluate();n[o]=t[r]}}for(var r in t=[],n)t.push(n[r]);this.results=t},he=function(){var e=this.query.groupBy,t=this.results;this.results=void 0;var n,r,o,u,s={},c=this.query.aggregate,l=function(){var e=function(){return o=(o=s[r])?o["count("+u+")"]:0,o+=t[n][u]?1:0},l=function(){return o=(o=s[r])?o["max("+u+")"]:0,t[n][u]=t[n][u]?t[n][u]:0,o>t[n][u]?o:t[n][u]},h=function(){return o=(o=s[r])?o["min("+u+")"]:1/0,t[n][u]=t[n][u]?t[n][u]:1/0,o2?l.Any:l.Last):(t=r[0],n=l.First),n){case l.First:return new RegExp("^"+t,"i");case l.Last:return new RegExp(t+"$","i");default:return new RegExp(""+t,"i")}},me=function(e){return"object"===E(e)&&!(e instanceof RegExp)},ge=function(e){if(me(e)){var t={};for(var n in e)t[n]=null!=e[n]&&me(e[n])?ge(e[n]):e[n];return t}return e},_e=function(e,t,n){var r=E(e);if(r!==E(t))return!1;switch(r===i.DateTime&&(e=e.getTime(),t=t.getTime()),n){case a.GreaterThan:return e>t;case a.LessThan:return e=t;case a.NotEqualTo:return e!==t;default:return e===t}},we=function(){function e(e,t){this.where=ge(e),this.checkFlag=t}return e.prototype.remove=function(e){var t=e.pop();delete e.reduce((function(e,t){return e&&e[t]}),this.where)[t]},e.prototype.check=function(e){var t=!0;if(!this.checkFlag)return t;for(var n in this.where){if(!t)return t;var r=this.where[n],o=e[n];if("object"===E(r))for(var i in r){if(!t)return t;switch(i){case a.In:t=this.checkIn(n,o);break;case a.Like:t=this.checkLike_(n,o);break;case a.Regex:t=this.checkRegex(n,o);break;case a.Between:case a.GreaterThan:case a.LessThan:case a.GreaterThanEqualTo:case a.LessThanEqualTo:case a.NotEqualTo:t=this.checkComparisionOp_(n,o,i);break;default:t=!1}}else t=_e(r,o)}return t},e.prototype.checkIn=function(e,t){return null!=this.where[e][a.In].find((function(e){return _e(e,t)}))},e.prototype.checkLike_=function(e,t){return be(this.where[e][a.Like]).test(t)},e.prototype.checkRegex=function(e,t){return this.where[e][a.Regex].test(t)},e.prototype.checkComparisionOp_=function(e,t,n){var r=this.where[e][n];return n!=a.Between?_e(t,r,n):_e(t,r.low,">=")&&_e(t,r.high,"<=")},e}(),xe=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),ke=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.shouldEvaluateLimitAtEnd=!1,t.shouldEvaluateSkipAtEnd=!1,t}return xe(t,e),t.prototype.goToWhereLogic=function(){var e=this.query,t=D(e.where);if(!this.objectStore.indexNames.contains(t)){var n=this.getColumnInfo(t),o=new w(null==n?r.ColumnNotExist:r.EnableSearchOff,{column:t});return _(o)}var i=e.where[t];if("object"!==E(i)){u=Q(e.where)>1;return this.whereCheckerInstance=new we(e.where,u),this.whereCheckerInstance.remove([t]),this.executeWhereLogic(t,i,null,"next")}var u=Q(i)>1||Q(e.where)>1;this.whereCheckerInstance=new we(e.where,u);var s=D(i);switch(this.whereCheckerInstance.remove([t,s]),s){case a.Like:var c=be(i[a.Like]);return this.executeRegexLogic(t,c);case a.Regex:return this.executeRegexLogic(t,i[a.Regex]);case a.In:return this.executeInLogic(t,i[a.In]);case a.Between:case a.GreaterThan:case a.LessThan:case a.GreaterThanEqualTo:case a.LessThanEqualTo:return this.executeWhereLogic(t,i,s,"next");case a.Aggregate:break;default:return this.executeWhereLogic(t,i,null,"next")}},t}(k),Ee=function(e,t){var n=this,r=this.skipRecord,o=function(e){0===r?n.pushResult(e):--r},i=function(){if(!1===n.shouldEvaluateLimitAtEnd&&!1===n.shouldEvaluateSkipAtEnd){if(n.skipRecord&&n.limitRecord)return Te;if(n.skipRecord)return qe;n.limitRecord}return Se}(),u=this.objectStore.index(e);return g(t.map((function(e){return t=e,p((function(e,r){var s=u.openCursor(n.util.keyRange(t));s.onsuccess=i.call(n,e,o),s.onerror=r}));var t})))},Te=function(e,t){var n=this;return function(r){var o=r.target.result;if(n.results.length!==n.limitRecord&&o){var i=o.value;n.shouldAddValue(i)&&t(i),o.continue()}else e()}},qe=function(e,t){var n=this;return function(r){var o=r.target.result;if(o){var i=o.value;n.shouldAddValue(i)&&t(i),o.continue()}else e()}},Se=function(e){var t=this;return function(n){var r=n.target.result;if(r){var o=r.value;t.shouldAddValue(o)&&t.pushResult(o),r.continue()}else e()}},Ce=function(e,t){var n=this,r=this.skipRecord,o=function(e){0===r?n.pushResult(e):--r};this.shouldAddValue=function(e){return t.test(e.key)&&n.whereCheckerInstance.check(e.value)};var i=this.objectStore.index(e).openCursor(),u=function(){if(!1===n.shouldEvaluateLimitAtEnd&&!1===n.shouldEvaluateSkipAtEnd){if(n.skipRecord&&n.limitRecord)return Oe;if(n.skipRecord)return Ie;if(n.limitRecord)return je}return Ae}();return p((function(e,t){i.onerror=t,i.onsuccess=u.call(n,e,o)}))},Oe=function(e,t){var n=this;return function(r){var o=r.target.result;n.results.length!==n.limitRecord&&o?(n.shouldAddValue(o)&&t(o.value),o.continue()):e()}},Ie=function(e,t){var n=this;return function(r){var o=r.target.result;o?(n.shouldAddValue(o)&&t(o.value),o.continue()):e()}},je=function(e){var t=this;return function(n){var r=n.target.result;t.results.length!==t.limitRecord&&r?(t.shouldAddValue(r)&&t.pushResult(r.value),r.continue()):e()}},Ae=function(e){var t=this;return function(n){var r=n.target.result;r?(t.shouldAddValue(r)&&t.pushResult(r.value),r.continue()):e()}},Ne=function(){return(Ne=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)try{var t=[],n=Object.keys(this.results[0]).length,o=function(e,t){if(null!=e.as)for(var n in e.as)void 0===t[e.as[n]]&&(t[e.as[n]]=t[n],delete t[n]);return t};this.results.forEach((function(r){for(var i=r[0],u=1;u0&&(u=[],e.results.forEach((function(e){var t;t=e[r],i.findIndex((function(e){return e[r]===t}))>=0&&u.push(e)})),i=u,u=null)}else i.length>0?(e.results=Ve(Ve([],i),e.results),e.removeDuplicates(),i=e.results):i=e.results;var u;if(o=!1,n.length>0)return e.results=[],s();e.results=i},s=function(){return e.query.where=n.shift(),e.query.where[a.Or]&&1===Q(e.query.where)?(t=a.Or,e.query.where=e.query.where[a.Or]):t=a.And,e.processWhere_().then(u)};return s()},t.prototype.initTransaction_=function(){this.isTxQuery||this.util.createTransaction([this.tableName],c.ReadOnly),this.objectStore=this.util.objectStore(this.tableName)},t.prototype.processWhere_=function(){var e=this;return this.shouldAddValue=function(t){return e.whereCheckerInstance.check(t)},this.query.where.or&&this.processOrLogic_(),this.goToWhereLogic().then((function(){return e.onWhereEvaluated()}))},t.prototype.onWhereEvaluated=function(){if(this.isOr)return this.orQuerySuccess_()},t.prototype.orQueryFinish_=function(){this.isOr=!1,this.results=this.orInfo.results,this.orInfo=null,this.removeDuplicates()},t.prototype.orQuerySuccess_=function(){if(this.orInfo.results=Ve(Ve([],this.orInfo.results),this.results),!this.query.limit||this.query.limit>this.orInfo.results.length){this.results=[];var e=D(this.orInfo.orQuery);if(null!=e){var t={};return t[e]=this.orInfo.orQuery[e],delete this.orInfo.orQuery[e],this.query.where=t,this.goToWhereLogic().then(this.onWhereEvaluated.bind(this))}}return this.orQueryFinish_()},t.prototype.processOrLogic_=function(){this.isOr=!0;var e=this.query.where;this.orInfo={orQuery:e.or,results:[]},delete e.or},t}(ke),Be=function(){var e,t,n=this,r=n.objectStore.count?(e=n.objectStore.count(),function(t){return function(){n.resultCount=e.result,t()}}):(e=n.objectStore.openCursor(),function(e){return function(r){(t=r.target.result)?(++n.resultCount,t.continue()):e()}});return p((function(t,n){e.onerror=n,e.onsuccess=r(t)}))},Pe=function(e,t,n){var r,o,i=this;return t=n?t[n]:t,p((function(u,s){1===Q(i.query.where)&&i.objectStore.count?(r=i.objectStore.index(e).count(i.util.keyRange(t,n))).onsuccess=function(){i.resultCount=r.result,u()}:(r=i.objectStore.index(e).openCursor(i.util.keyRange(t,n))).onsuccess=function(e){(o=e.target.result)?(i.whereCheckerInstance.check(o.value)&&++i.resultCount,o.continue()):u()},r.onerror=s}))},Ue=function(e,t){var n,r=this,o=this.objectStore.index(e).openCursor();return this.shouldAddValue=function(e){return t.test(e.key)&&r.whereCheckerInstance.check(e.value)},p((function(e,t){o.onerror=t,o.onsuccess=function(t){(n=t.target.result)?(r.shouldAddValue(n)&&++r.resultCount,n.continue()):e()}}))},Ge=function(e,t){var n,r=this,o=this.objectStore.index(e);return g(t.map((function(e){return t=e,i=r.util.keyRange(t),r.objectStore.count?p((function(e,t){var n=o.count(i);n.onsuccess=function(t){r.resultCount+=t.target.result,e()},n.onerror=t})):p((function(e,t){var u=o.openCursor(i);u.onsuccess=function(t){(n=t.target.result)?(r.whereCheckerInstance.check(n.value)&&++r.resultCount,n.continue()):e()},u.onerror=t}));var t,i})))},Fe=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ke=function(e){function t(t,n){var r=e.call(this)||this;return r.resultCount=0,r.executeWhereUndefinedLogic=Be,r.executeWhereLogic=Pe,r.executeRegexLogic=Ue,r.executeInLogic=Ge,r.query=t,r.util=n,r.tableName=t.from,r}return Fe(t,e),t.prototype.execute=function(e){var t=this;this.db=e;var n=new C(e),r=this.query,o=n.validate(u.Count,r);if(o)return _(o);try{var i=void 0,s=function(){var n=new We(t.query,t.util);return n.isTxQuery=t.isTxQuery,n.execute(e).then((function(e){t.resultCount=e.length}))};return null==r.join?null!=r.where?r.where.or||R(this.query.where)?i=s():(this.initTransaction_(),i=this.goToWhereLogic()):(this.initTransaction_(),i=this.executeWhereUndefinedLogic()):i=s(),i.then((function(e){return t.resultCount}))}catch(e){this.onException(e)}},t.prototype.initTransaction_=function(){this.isTxQuery||this.util.createTransaction([this.query.from],c.ReadOnly),this.objectStore=this.util.objectStore(this.query.from)},t}(ke),Je=function(e,t){for(var n in e)if(E(e[n])!==i.Object)t[n]=e[n];else for(var r in e[n]){switch(r){case"+":t[n]+=e[n][r];break;case"-":t[n]-=e[n][r];break;case"*":t[n]*=e[n][r];break;case"/":t[n]/=e[n][r];break;case"{push}":t[n].push(e[n][r]);break;default:t[n]=e[n]}break}return t},Me=function(){var e=this,t=this.objectStore.openCursor(),n=this.query.set;return p((function(r,o){t.onsuccess=function(t){var i=t.target.result;if(i)try{var u=i.update(Je(n,i.value));u.onsuccess=function(){++e.rowAffected,i.continue()},u.onerror=o}catch(e){o(e)}else r()},t.onerror=o}))},ze=function(e,t){var n=this,r=this.objectStore.index(e),o=this.query;return g(t.map((function(e){return t=e,p((function(e,i){var u=r.openCursor(n.util.keyRange(t));u.onsuccess=function(t){var r=t.target.result;if(r){var u=r.value;if(n.whereCheckerInstance.check(u))try{var s=r.update(Je(o.set,u));s.onsuccess=function(){++n.rowAffected,r.continue()},s.onerror=i}catch(e){i(e)}else r.continue()}else e()},u.onerror=i}));var t})))},$e=function(e,t){var n,r=this,o=this.objectStore.index(e).openCursor();this.shouldAddValue=function(e){return t.test(e.key)&&r.whereCheckerInstance.check(e.value)};var i=this.query.set;return p((function(e,t){o.onsuccess=function(o){if(n=o.target.result)if(r.shouldAddValue(n))try{var u=n.update(Je(i,n.value));u.onsuccess=function(){++r.rowAffected,n.continue()},u.onerror=t}catch(e){t(e)}else n.continue();else e()},o.onerror=t}))},He=function(e,t,n){var r=this;t=n?t[n]:t;var o=this.objectStore.index(e).openCursor(this.util.keyRange(t,n)),i=this.query.set;return p((function(e,t){o.onsuccess=function(n){var o=n.target.result;if(o)if(r.whereCheckerInstance.check(o.value))try{var u=o.update(Je(i,o.value));u.onsuccess=function(){++r.rowAffected,o.continue()},u.onerror=t}catch(e){t(e)}else o.continue();else e()},o.onerror=t}))},Xe=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ye=function(e){function t(t,n){var r=e.call(this)||this;return r.executeWhereUndefinedLogic=Me,r.executeInLogic=ze,r.executeRegexLogic=$e,r.executeWhereLogic=He,r.query=t,r.util=n,r.tableName=t.in,r}return Xe(t,e),t.prototype.execute=function(e){var t=this;this.db=e;var n=this.query;try{var r=new C(e).validate(u.Update,n);if(r)return _(r);this.initTransaction();return(null!=n.where?n.where.or||R(n.where)?this.executeComplexLogic_():this.goToWhereLogic():this.executeWhereUndefinedLogic()).then((function(){return t.rowAffected}))}catch(e){return this.onException(e)}},t.prototype.executeComplexLogic_=function(){var e=this,t=this.query,n=new We({from:t.in,where:t.where,ignoreCase:t.ignoreCase},this.util);return n.isTxQuery=this.isTxQuery,n.execute(this.db).then((function(n){var r,o,i=e.primaryKey(t.in),u=[];n.forEach((function(e){u.push(e[i])})),n=null;var s=((r={})[i]=((o={})[a.In]=u,o),r);return e.query.where=s,e.initTransaction(),e.goToWhereLogic()}))},t.prototype.initTransaction=function(){var e=this.query.in;this.isTxQuery||this.util.createTransaction([e]),this.objectStore=this.util.objectStore(e)},t}(ke),Ze=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),et=function(){return(et=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&(s=et({},u)),++i,f()}));var e,a=[],h=void 0,p=o.skip,d=o.limit,y=!1,v=function(){a.push(u[e])},b=function(){a.length0&&this.executeRequest_(this.reqQueue[0])},t.prototype.notExistingTable_=function(e){var t=this,n=null;return e.every((function(e){return null!=t.table(e)||(n=e,!1)})),n},t}(k),ht=function(){function e(e){this.onQryFinished=j?function(e){self.postMessage(e)}:e}return e.prototype.run=function(e){var t,n=this;switch(e.name){case u.OpenDb:t=this.openDb(e.query);break;case u.InitDb:t=this.initDb(e.query);break;case u.CloseDb:t=this.closeDb();break;case u.Insert:t=this.insert(e.query);break;case u.Select:t=this.select(e.query);break;case u.Count:t=this.count(e.query);break;case u.Update:t=new Ye(e.query,this.util).execute(this.db);break;case u.Intersect:t=new tt(e.query,this.util).execute(this.db);break;case u.DropDb:t=this.dropDb();break;case u.Terminate:t=this.terminate();break;case u.Union:t=new ot(e.query,this.util).execute(this.db);break;case u.Remove:t=new ut(e.query,this.util).execute(this.db);break;case u.Clear:t=new at(e.query,this.util).execute(this.db);break;case u.Transaction:t=new lt(e.query,this.util).execute(this.db);break;case u.Get:t=v.get(e.query,this.util);break;case u.Set:var o=e.query;t=v.set(o.key,o.value,this.util);break;case u.ImportScripts:t=p((function(t,n){try{importScripts.apply(void 0,e.query),t()}catch(e){n(new w(r.ImportScriptsFailed,e.message))}}));break;default:0,t=Promise.resolve()}t.then((function(e){n.returnResult_({result:e})})).catch((function(e){var t={error:x(e)};n.returnResult_(t)}))},e.prototype.returnResult_=function(e){this.util&&this.util.emptyTx(),this.onQryFinished(e)},e.prototype.dropDb=function(){var e=this.db.name;return this.terminate().then((function(){return(new nt).execute(e)}))},e.prototype.closeDb=function(){return null==this.util?Promise.resolve():this.util.close()},e.prototype.terminate=function(){var e=this;return this.closeDb().then((function(){e.db=e.util=null}))},e.prototype.openDb=function(e){var t=this;return(this.db&&e.name===this.db.name?this.initDb():this.initDb({name:e.name,tables:[],version:e.version})).then((function(){return t.db}))},e.prototype.initDb=function(e){var t=this;if(!A)return _(new w(r.IndexedDbNotSupported));var n=e?new b(e):this.db;this.util=new m(n);return p((function(e,r){t.util.initDb().then((function(e){return e||(r=e,p((function(e,o){v.get(v.dbSchema,t.util).then((function(i){var u,s=!1;if(i&&(u=i.version,i.tables.forEach((function(e,t){var r=n.tables[t];r&&(e.version/g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("typescript",function(e){var r={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"};return{aliases:["ts"],k:r,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+e.IR+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:e.IR},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:["self",e.CLCM,e.CBCM]}]}]}],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:r,c:["self",e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/%/,r:0},{bK:"constructor",e:/\{/,eE:!0,c:["self",{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}]},{b:/module\./,k:{built_in:"module"},r:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}); \ No newline at end of file diff --git a/efm-demo-web/src/assets/lib/hljs/styles/agate.css b/efm-demo-web/src/assets/lib/hljs/styles/agate.css new file mode 100644 index 0000000..8d64547 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/agate.css @@ -0,0 +1,108 @@ +/*! + * Agate by Taufik Nurrohman + * ---------------------------------------------------- + * + * #ade5fc + * #a2fca2 + * #c6b4f0 + * #d36363 + * #fcc28c + * #fc9b9b + * #ffa + * #fff + * #333 + * #62c8f3 + * #888 + * + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #333; + color: white; +} + +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-code, +.hljs-emphasis { + font-style: italic; +} + +.hljs-tag { + color: #62c8f3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-selector-class { + color: #ade5fc; +} + +.hljs-string, +.hljs-bullet { + color: #a2fca2; +} + +.hljs-type, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-quote, +.hljs-built_in, +.hljs-builtin-name { + color: #ffa; +} + +.hljs-number, +.hljs-symbol, +.hljs-bullet { + color: #d36363; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #fcc28c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-code { + color: #888; +} + +.hljs-regexp, +.hljs-link { + color: #c6b4f0; +} + +.hljs-meta { + color: #fc9b9b; +} + +.hljs-deletion { + background-color: #fc9b9b; + color: #333; +} + +.hljs-addition { + background-color: #a2fca2; + color: #333; +} + +.hljs a { + color: inherit; +} + +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/androidstudio.css b/efm-demo-web/src/assets/lib/hljs/styles/androidstudio.css new file mode 100644 index 0000000..bc8e473 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/androidstudio.css @@ -0,0 +1,66 @@ +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ + +.hljs { + color: #a9b7c6; + background: #282b2e; + display: block; + overflow-x: auto; + padding: 0.5em; +} + +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755; +} + +.hljs-comment, +.hljs-quote { + color: #808080; +} + +.hljs-meta { + color: #bbb529; +} + +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759; +} + +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d; +} + +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/arduino-light.css b/efm-demo-web/src/assets/lib/hljs/styles/arduino-light.css new file mode 100644 index 0000000..4b8b7fd --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/arduino-light.css @@ -0,0 +1,88 @@ +/* + +Arduino® Light Theme - Stefania Mellai + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFFF; +} + +.hljs, +.hljs-subst { + color: #434f54; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D; +} + +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D; +} + +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-comment { + color: rgba(149,165,166,.8); +} + +.hljs-meta-keyword { + color: #728E00; +} + +.hljs-meta { + color: #728E00; + color: #434f54; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-function { + color: #728E00; +} + +.hljs-number { + color: #8A7B52; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/arta.css b/efm-demo-web/src/assets/lib/hljs/styles/arta.css new file mode 100644 index 0000000..75ef3a9 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/arta.css @@ -0,0 +1,73 @@ +/* +Date: 17.V.2011 +Author: pumbur +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; +} + +.hljs, +.hljs-subst { + color: #aaa; +} + +.hljs-section { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444; +} + +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33; +} + +.hljs-number, +.hljs-addition { + color: #00cc66; +} + +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa; +} + +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166; +} + +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/ascetic.css b/efm-demo-web/src/assets/lib/hljs/styles/ascetic.css new file mode 100644 index 0000000..48397e8 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/ascetic.css @@ -0,0 +1,45 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-dark.css new file mode 100644 index 0000000..65428f3 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-dark.css @@ -0,0 +1,83 @@ +/* Base16 Atelier Cave Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7887; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-regexp, +.hljs-link, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #19171c; + color: #8b8792; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-light.css new file mode 100644 index 0000000..b419f9f --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #efecf4; + color: #585260; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-dark.css new file mode 100644 index 0000000..1684f52 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #999580; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #20201d; + color: #a6a28c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-light.css new file mode 100644 index 0000000..547719d --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-dune-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #7d7a68; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fefbec; + color: #6e6b5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-dark.css new file mode 100644 index 0000000..a5e5071 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #878573; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #22221b; + color: #929181; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-light.css new file mode 100644 index 0000000..1daee5d --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-estuary-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #6c6b5a; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4f3ec; + color: #5f5e4e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-dark.css new file mode 100644 index 0000000..0ef4fae --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #9c9491; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1918; + color: #a8a19f; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-light.css new file mode 100644 index 0000000..bbedde1 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-forest-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #766e6b; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f1efee; + color: #68615e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-dark.css new file mode 100644 index 0000000..fe01ff7 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #9e8f9e; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b181b; + color: #ab9bab; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-light.css new file mode 100644 index 0000000..ee43786 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-heath-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #776977; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f7f3f7; + color: #695d69; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-dark.css new file mode 100644 index 0000000..a937d3b --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #7195a8; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #161b1d; + color: #7ea2b4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-light.css new file mode 100644 index 0000000..6c7e8f9 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-lakeside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #5a7b8c; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ebf8ff; + color: #516d7b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-dark.css new file mode 100644 index 0000000..3bb0526 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7777; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1818; + color: #8a8585; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-light.css new file mode 100644 index 0000000..5f0222b --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-plateau-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #655d5d; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4ecec; + color: #585050; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-dark.css new file mode 100644 index 0000000..38f8314 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #78877d; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #171c19; + color: #87928a; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-light.css new file mode 100644 index 0000000..1ccd7c6 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-savanna-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #5f6d64; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ecf4ee; + color: #526057; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-dark.css new file mode 100644 index 0000000..df29949 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #809980; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #131513; + color: #8ca68c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-light.css new file mode 100644 index 0000000..9d960f2 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-seaside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #687d68; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4fbf4; + color: #5e6e5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css new file mode 100644 index 0000000..c2ab793 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #898ea4; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #202746; + color: #979db4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css new file mode 100644 index 0000000..96c47d0 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #6b7394; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f5f7ff; + color: #5e6687; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atom-one-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/atom-one-dark.css new file mode 100644 index 0000000..1616aaf --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atom-one-dark.css @@ -0,0 +1,96 @@ +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/atom-one-light.css b/efm-demo-web/src/assets/lib/hljs/styles/atom-one-light.css new file mode 100644 index 0000000..d5bd1d2 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/atom-one-light.css @@ -0,0 +1,96 @@ +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/brown-paper.css b/efm-demo-web/src/assets/lib/hljs/styles/brown-paper.css new file mode 100644 index 0000000..f0197b9 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/brown-paper.css @@ -0,0 +1,64 @@ +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background:#b7a68e url(./brown-papersq.png); +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #363c69; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/brown-papersq.png b/efm-demo-web/src/assets/lib/hljs/styles/brown-papersq.png new file mode 100644 index 0000000..3813903 Binary files /dev/null and b/efm-demo-web/src/assets/lib/hljs/styles/brown-papersq.png differ diff --git a/efm-demo-web/src/assets/lib/hljs/styles/codepen-embed.css b/efm-demo-web/src/assets/lib/hljs/styles/codepen-embed.css new file mode 100644 index 0000000..195c4a0 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/codepen-embed.css @@ -0,0 +1,60 @@ +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; + color: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d; +} + +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b; +} + +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/color-brewer.css b/efm-demo-web/src/assets/lib/hljs/styles/color-brewer.css new file mode 100644 index 0000000..7934d98 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/color-brewer.css @@ -0,0 +1,71 @@ +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; +} + +.hljs, +.hljs-subst { + color: #000; +} + +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1; +} + +.hljs-comment, +.hljs-quote { + color: #636363; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354; +} + +.hljs-deletion, +.hljs-variable { + color: #88f; +} + + + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-attribute { + color: #e6550d; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/darcula.css b/efm-demo-web/src/assets/lib/hljs/styles/darcula.css new file mode 100644 index 0000000..be182d0 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/darcula.css @@ -0,0 +1,77 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b2b2b; +} + +.hljs { + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/dark.css b/efm-demo-web/src/assets/lib/hljs/styles/dark.css new file mode 100644 index 0000000..b4724f5 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/dark.css @@ -0,0 +1,63 @@ +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #444; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white; +} + +.hljs, +.hljs-subst { + color: #ddd; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #777; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/darkula.css b/efm-demo-web/src/assets/lib/hljs/styles/darkula.css new file mode 100644 index 0000000..f4646c3 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/darkula.css @@ -0,0 +1,6 @@ +/* + Deprecated due to a typo in the name and left here for compatibility purpose only. + Please use darcula.css instead. +*/ + +@import url('darcula.css'); diff --git a/efm-demo-web/src/assets/lib/hljs/styles/default.css b/efm-demo-web/src/assets/lib/hljs/styles/default.css new file mode 100644 index 0000000..f1bfade --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/default.css @@ -0,0 +1,99 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/docco.css b/efm-demo-web/src/assets/lib/hljs/styles/docco.css new file mode 100644 index 0000000..db366be --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #f8f8ff; +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/dracula.css b/efm-demo-web/src/assets/lib/hljs/styles/dracula.css new file mode 100644 index 0000000..d591db6 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/dracula.css @@ -0,0 +1,76 @@ +/* + +Dracula Theme v1.2.0 + +https://github.com/zenorocha/dracula-theme + +Copyright 2015, All rights reserved + +Code licensed under the MIT license +http://zenorocha.mit-license.org + +@author Éverton Ribeiro +@author Zeno Rocha + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282a36; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: #8be9fd; +} + +.hljs-function .hljs-keyword { + color: #ff79c6; +} + +.hljs, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #f1fa8c; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #6272a4; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/far.css b/efm-demo-web/src/assets/lib/hljs/styles/far.css new file mode 100644 index 0000000..2b3f87b --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/far.css @@ -0,0 +1,71 @@ +/* + +FAR Style (c) MajestiC + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000080; +} + +.hljs, +.hljs-subst { + color: #0ff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0; +} + +.hljs-meta { + color: #008080; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/foundation.css b/efm-demo-web/src/assets/lib/hljs/styles/foundation.css new file mode 100644 index 0000000..f1fe64b --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/foundation.css @@ -0,0 +1,88 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eee; color: black; +} + +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.hljs-section, +.hljs-title { + color: #900; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #458; +} + +.hljs-variable, +.hljs-template-variable { + color: #336699; +} + +.hljs-bullet { + color: #997700; +} + +.hljs-meta { + color: #3344bb; +} + +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/github-gist.css b/efm-demo-web/src/assets/lib/hljs/styles/github-gist.css new file mode 100644 index 0000000..155f0b9 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/github-gist.css @@ -0,0 +1,71 @@ +/** + * GitHub Gist Theme + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro + */ + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/github.css b/efm-demo-web/src/assets/lib/hljs/styles/github.css new file mode 100644 index 0000000..791932b --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/googlecode.css b/efm-demo-web/src/assets/lib/hljs/styles/googlecode.css new file mode 100644 index 0000000..884ad63 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/googlecode.css @@ -0,0 +1,89 @@ +/* + +Google Code style (c) Aahan Krish + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #800; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066; +} + +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #606; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/grayscale.css b/efm-demo-web/src/assets/lib/hljs/styles/grayscale.css new file mode 100644 index 0000000..5376f34 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/grayscale.css @@ -0,0 +1,101 @@ +/* + +grayscale style (c) MY Sun + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal { + color: #777; +} + +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold; +} + +.hljs-tag { + color: #333; +} + +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #000; + text-decoration: underline; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + color: #fff; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; +} + +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-dark.css new file mode 100644 index 0000000..f563811 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-dark.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282828; +} + +.hljs, +.hljs-subst { + color: #ebdbb2; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #fb4934; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #83a598; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #fabd2f; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #fe8019; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #b8bb26; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ec07c; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-light.css b/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-light.css new file mode 100644 index 0000000..ff45468 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/gruvbox-light.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fbf1c7; +} + +.hljs, +.hljs-subst { + color: #3c3836; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #9d0006; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #076678; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #b57614; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #af3a03; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #79740e; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #427b58; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/hopscotch.css b/efm-demo-web/src/assets/lib/hljs/styles/hopscotch.css new file mode 100644 index 0000000..32e60d2 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/hopscotch.css @@ -0,0 +1,83 @@ +/* + * Hopscotch + * by Jan T. Sott + * https://github.com/idleberg/Hopscotch + * + * This work is licensed under the Creative Commons CC0 1.0 Universal License + */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #989498; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-deletion { + color: #dd464c; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #fd8b19; +} + +/* Yellow */ +.hljs-class .hljs-title { + color: #fdcc59; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #8fc13e; +} + +/* Aqua */ +.hljs-meta { + color: #149b93; +} + +/* Blue */ +.hljs-function, +.hljs-section, +.hljs-title { + color: #1290bf; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c85e7c; +} + +.hljs { + display: block; + background: #322931; + color: #b9b5b8; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/hybrid.css b/efm-demo-web/src/assets/lib/hljs/styles/hybrid.css new file mode 100644 index 0000000..29735a1 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/hybrid.css @@ -0,0 +1,102 @@ +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ + +/*background color*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1d1f21; +} + +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41; +} + +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41; +} + +/*foreground color*/ +.hljs { + color: #c5c8c6; +} + +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674; +} + +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880; +} + +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} + +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68; +} + +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb; +} + +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be; +} + +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7; +} + +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/idea.css b/efm-demo-web/src/assets/lib/hljs/styles/idea.css new file mode 100644 index 0000000..3bf1892 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/idea.css @@ -0,0 +1,97 @@ +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #fff; +} + +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000; +} + +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic; +} + +.hljs-meta { + color: #808000; +} + +.hljs-tag { + background: #efefef; +} + +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080; +} + +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff; +} + +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal; +} + +.hljs-string { + color: #008000; + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic; +} + +.hljs-doctag { + text-decoration: underline; +} + +.hljs-variable, +.hljs-template-variable { + color: #660e7a; +} + +.hljs-addition { + background: #baeeba; +} + +.hljs-deletion { + background: #ffc8bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/ir-black.css b/efm-demo-web/src/assets/lib/hljs/styles/ir-black.css new file mode 100644 index 0000000..bd4c755 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/ir-black.css @@ -0,0 +1,73 @@ +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe; +} + +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe; +} + +.hljs-number, +.hljs-deletion { + color:#ff73fd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/kimbie.dark.css b/efm-demo-web/src/assets/lib/hljs/styles/kimbie.dark.css new file mode 100644 index 0000000..d139cb5 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/kimbie.dark.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #221a0f; + color: #d3af86; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/kimbie.light.css b/efm-demo-web/src/assets/lib/hljs/styles/kimbie.light.css new file mode 100644 index 0000000..04ff6ed --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/kimbie.light.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fbebd4; + color: #84613d; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/magula.css b/efm-demo-web/src/assets/lib/hljs/styles/magula.css new file mode 100644 index 0000000..44dee5e --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/magula.css @@ -0,0 +1,70 @@ +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background-color: #f4f4f4; +} + +.hljs, +.hljs-subst { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800; +} + +.hljs-deletion, +.hljs-meta { + color: #00e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/mono-blue.css b/efm-demo-web/src/assets/lib/hljs/styles/mono-blue.css new file mode 100644 index 0000000..884c97c --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/mono-blue.css @@ -0,0 +1,59 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eaeef3; +} + +.hljs { + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/monokai-sublime.css b/efm-demo-web/src/assets/lib/hljs/styles/monokai-sublime.css new file mode 100644 index 0000000..2864170 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/monokai.css b/efm-demo-web/src/assets/lib/hljs/styles/monokai.css new file mode 100644 index 0000000..775d53f --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/monokai.css @@ -0,0 +1,70 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/obsidian.css b/efm-demo-web/src/assets/lib/hljs/styles/obsidian.css new file mode 100644 index 0000000..356630f --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/obsidian.css @@ -0,0 +1,88 @@ +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282b2e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763; +} + +.hljs-number { + color: #ffcd22; +} + +.hljs { + color: #e0e2e4; +} + +.hljs-attribute { + color: #668bb0; +} + +.hljs-code, +.hljs-class .hljs-title, +.hljs-section { + color: white; +} + +.hljs-regexp, +.hljs-link { + color: #d39745; +} + +.hljs-meta { + color: #557182; +} + +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad; +} + +.hljs-string, +.hljs-symbol { + color: #ec7600; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96; +} + +.hljs-selector-class { + color: #A082BD +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/ocean.css b/efm-demo-web/src/assets/lib/hljs/styles/ocean.css new file mode 100644 index 0000000..5901581 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/ocean.css @@ -0,0 +1,74 @@ +/* Ocean Dark Theme */ +/* https://github.com/gavsiu */ +/* Original theme - https://github.com/chriskempson/base16 */ + +/* Ocean Comment */ +.hljs-comment, +.hljs-quote { + color: #65737e; +} + +/* Ocean Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #bf616a; +} + +/* Ocean Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #d08770; +} + +/* Ocean Yellow */ +.hljs-attribute { + color: #ebcb8b; +} + +/* Ocean Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #a3be8c; +} + +/* Ocean Blue */ +.hljs-title, +.hljs-section { + color: #8fa1b3; +} + +/* Ocean Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b48ead; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b303b; + color: #c0c5ce; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/paraiso-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/paraiso-dark.css new file mode 100644 index 0000000..e729240 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/paraiso-dark.css @@ -0,0 +1,72 @@ +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2f1e2e; + color: #a39e9b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/paraiso-light.css b/efm-demo-web/src/assets/lib/hljs/styles/paraiso-light.css new file mode 100644 index 0000000..944857c --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/paraiso-light.css @@ -0,0 +1,72 @@ +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #e7e9db; + color: #4f424c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.css b/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.css new file mode 100644 index 0000000..2e07847 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.css @@ -0,0 +1,83 @@ +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926; +} + +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966; +} + +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900; +} + +.hljs-attribute { + color: #b89859; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.jpg b/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.jpg new file mode 100644 index 0000000..9c07d4a Binary files /dev/null and b/efm-demo-web/src/assets/lib/hljs/styles/pojoaque.jpg differ diff --git a/efm-demo-web/src/assets/lib/hljs/styles/purebasic.css b/efm-demo-web/src/assets/lib/hljs/styles/purebasic.css new file mode 100644 index 0000000..5ce9b9e --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/purebasic.css @@ -0,0 +1,96 @@ +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ + +.hljs { /* Common set of rules required by highlight.js (don'r remove!) */ + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFDF; /* Half and Half (approx.) */ +/* --- Uncomment to add PureBASIC native IDE styled font! + font-family: Consolas; +*/ +} + +.hljs, /* --- used for PureBASIC base color --- */ +.hljs-type, /* --- used for PureBASIC Procedures return type --- */ +.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000; /* Black */ +} + +.hljs-comment, /* --- used for PureBASIC Comments --- */ +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA; /* Persian Green (approx.) */ +} + +.hljs-title, /* --- used for PureBASIC Procedures Names --- */ +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666; /* Blue Stone (approx.) */ +} + +.hljs-keyword, /* --- used for PureBASIC Keywords --- */ +.hljs-class, +.hljs-meta-keyword, +.hljs-selector-class, +.hljs-built_in, +.hljs-builtin-name { + color: #006666; /* Blue Stone (approx.) */ + font-weight: bold; +} + +.hljs-string, /* --- used for PureBASIC Strings --- */ +.hljs-selector-attr { + color: #0080FF; /* Azure Radiance (approx.) */ +} + +.hljs-symbol, /* --- used for PureBASIC Constants --- */ +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72; /* Cannon Pink (approx.) */ +} + +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; /* Cannon Pink (approx.) */ + font-weight: bold; +} + +.hljs-strong, +.hljs-name { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_dark.css b/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_dark.css new file mode 100644 index 0000000..7aa56a3 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_dark.css @@ -0,0 +1,83 @@ +/* + +Qt Creator dark color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000000; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff; +} + +.hljs-code +.hljs-selector-class { + color: #aaaaff; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55; +} + +.hljs-attribute { + color: #ff5555; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #8888ff; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_light.css b/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_light.css new file mode 100644 index 0000000..1efa2c6 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/qtcreator_light.css @@ -0,0 +1,83 @@ +/* + +Qt Creator light color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #ffffff; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000; +} + +.hljs-strong, +.hljs-emphasis { + color: #000000; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080; +} + +.hljs-code +.hljs-selector-class { + color: #800080; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000; +} + +.hljs-attribute { + color: #800000; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #0055AF; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/railscasts.css b/efm-demo-web/src/assets/lib/hljs/styles/railscasts.css new file mode 100644 index 0000000..008cdc5 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/railscasts.css @@ -0,0 +1,106 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #232323; + color: #e6e1dc; +} + +.hljs-comment, +.hljs-quote { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-name { + color: #e8bf6a; +} + +.hljs-type { + color: #da4939; +} + + +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-attr, +.hljs-link { + color: #6d9cbe; +} + +.hljs-params { + color: #d0d0ff; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #9b859d; +} + +.hljs-title, +.hljs-section { + color: #ffc66d; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/rainbow.css b/efm-demo-web/src/assets/lib/hljs/styles/rainbow.css new file mode 100644 index 0000000..905eb8e --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/rainbow.css @@ -0,0 +1,85 @@ +/* + +Style with support for rainbow parens + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #474949; + color: #d1d9e1; +} + + +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc; +} + +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157; +} + +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7; +} + +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-class .hljs-title { + color: #ffcc66; +} + +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-attr, +.hljs-attribute { + color: #81a2be; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/routeros.css b/efm-demo-web/src/assets/lib/hljs/styles/routeros.css new file mode 100644 index 0000000..ebe2399 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/routeros.css @@ -0,0 +1,108 @@ +/* + + highlight.js style for Microtik RouterOS script + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + +.hljs-attribute { + color: #0E9A00; +} + +.hljs-function { + color: #99069A; +} + +.hljs-builtin-name { + color: #99069A; +} + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/school-book.css b/efm-demo-web/src/assets/lib/hljs/styles/school-book.css new file mode 100644 index 0000000..964b51d --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/school-book.css @@ -0,0 +1,72 @@ +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 15px 0.5em 0.5em 30px; + font-size: 11px; + line-height:16px; +} + +pre{ + background:#f6f6ae url(./school-book.png); + border-top: solid 2px #d2e8b9; + border-bottom: solid 1px #d2e8b9; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #3e5915; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-builtin-name, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/school-book.png b/efm-demo-web/src/assets/lib/hljs/styles/school-book.png new file mode 100644 index 0000000..956e979 Binary files /dev/null and b/efm-demo-web/src/assets/lib/hljs/styles/school-book.png differ diff --git a/efm-demo-web/src/assets/lib/hljs/styles/solarized-dark.css b/efm-demo-web/src/assets/lib/hljs/styles/solarized-dark.css new file mode 100644 index 0000000..b4c0da1 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/solarized-dark.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #002b36; + color: #839496; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/solarized-light.css b/efm-demo-web/src/assets/lib/hljs/styles/solarized-light.css new file mode 100644 index 0000000..fdcfcc7 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/solarized-light.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} + +.hljs-comment, +.hljs-quote { + color: #93a1a1; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/sunburst.css b/efm-demo-web/src/assets/lib/hljs/styles/sunburst.css new file mode 100644 index 0000000..f56dd5e --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/sunburst.css @@ -0,0 +1,102 @@ +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964; +} + +.hljs-string { + color: #65b042; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff; +} + +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc; +} + +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #8996a8; +} + +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic; +} + +.hljs-addition { + background-color: #253b22; + color: #f8f8f8; +} + +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-blue.css b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-blue.css new file mode 100644 index 0000000..78e59cc --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-blue.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff; +} + +.hljs { + display: block; + overflow-x: auto; + background: #002451; + color: white; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-bright.css b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-bright.css new file mode 100644 index 0000000..e05af8a --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-bright.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8; +} + +.hljs { + display: block; + overflow-x: auto; + background: black; + color: #eaeaea; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-eighties.css b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-eighties.css new file mode 100644 index 0000000..08fd51c --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night-eighties.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Eighties Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #999999; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #f2777a; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffcc66; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #99cc99; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #6699cc; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #cc99cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2d2d2d; + color: #cccccc; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night.css b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night.css new file mode 100644 index 0000000..ddd270a --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow-night.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #de935f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b5bd68; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/tomorrow.css b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow.css new file mode 100644 index 0000000..026a62f --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/tomorrow.css @@ -0,0 +1,72 @@ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #8e908c; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #c82829; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5871f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #eab700; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #718c00; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #4271ae; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8959a8; +} + +.hljs { + display: block; + overflow-x: auto; + background: white; + color: #4d4d4c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/vs.css b/efm-demo-web/src/assets/lib/hljs/styles/vs.css new file mode 100644 index 0000000..c5d07d3 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/vs.css @@ -0,0 +1,68 @@ +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515; +} + +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af; +} + +.hljs-doctag { + color: #808080; +} + +.hljs-attr { + color: #f00; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/vs2015.css b/efm-demo-web/src/assets/lib/hljs/styles/vs2015.css new file mode 100644 index 0000000..d1d9be3 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/vs2015.css @@ -0,0 +1,115 @@ +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1E1E1E; + color: #DCDCDC; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6; +} +.hljs-link { + color: #569CD6; + text-decoration: underline; +} + +.hljs-built_in, +.hljs-type { + color: #4EC9B0; +} + +.hljs-number, +.hljs-class { + color: #B8D7A3; +} + +.hljs-string, +.hljs-meta-string { + color: #D69D85; +} + +.hljs-regexp, +.hljs-template-tag { + color: #9A5334; +} + +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC; +} + +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic; +} + +.hljs-doctag { + color: #608B4E; +} + +.hljs-meta, +.hljs-meta-keyword, +.hljs-tag { + color: #9B9B9B; +} + +.hljs-variable, +.hljs-template-variable { + color: #BD63C5; +} + +.hljs-attr, +.hljs-attribute, +.hljs-builtin-name { + color: #9CDCFE; +} + +.hljs-section { + color: gold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +/*.hljs-code { + font-family:'Monospace'; +}*/ + +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D; +} + +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100%; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/xcode.css b/efm-demo-web/src/assets/lib/hljs/styles/xcode.css new file mode 100644 index 0000000..43dddad --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/xcode.css @@ -0,0 +1,93 @@ +/* + +XCode style (c) Angel Garcia + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #006a00; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #aa0d91; +} + +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string { + color: #c41a16; +} + +.hljs-regexp, +.hljs-link { + color: #080; +} + +.hljs-title, +.hljs-tag, +.hljs-symbol, +.hljs-bullet, +.hljs-number, +.hljs-meta { + color: #1c00cf; +} + +.hljs-section, +.hljs-class .hljs-title, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #5c2699; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/xt256.css b/efm-demo-web/src/assets/lib/hljs/styles/xt256.css new file mode 100644 index 0000000..58df82c --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/xt256.css @@ -0,0 +1,92 @@ + +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + background: #000; + padding: 0.5; +} + +.hljs-subst { + color: #eaeaea; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-builtin-name, +.hljs-type { + color: #eaeaea; +} + +.hljs-params { + color: #da0000; +} + +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder; +} + +.hljs-comment { + color: #969896; +} + +.hljs-selector-id, +.hljs-quote { + color: #00ffff; +} + +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold; +} + +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000; +} + +.hljs-string, +.hljs-bullet { + color: #00ff00; +} + +.hljs-tag, +.hljs-section { + color: #000fff; +} + +.hljs-selector-tag { + color: #000fff; + font-weight: bold; +} + +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff; +} + +.hljs-meta { + color: #fff; + font-weight: bolder; +} diff --git a/efm-demo-web/src/assets/lib/hljs/styles/zenburn.css b/efm-demo-web/src/assets/lib/hljs/styles/zenburn.css new file mode 100644 index 0000000..07be502 --- /dev/null +++ b/efm-demo-web/src/assets/lib/hljs/styles/zenburn.css @@ -0,0 +1,80 @@ +/* + +Zenburn style from voldmar.ru (c) Vladimir Epifanov +based on dark.css by Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #3f3f3f; + color: #dcdcdc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag { + color: #e3ceab; +} + +.hljs-template-tag { + color: #dcdcdc; +} + +.hljs-number { + color: #8cd0d3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute { + color: #efdcbc; +} + +.hljs-literal { + color: #efefaf; +} + +.hljs-subst { + color: #8f8f8f; +} + +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #efef8f; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #dca3a3; +} + +.hljs-deletion, +.hljs-string, +.hljs-built_in, +.hljs-builtin-name { + color: #cc9393; +} + +.hljs-addition, +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7f9f7f; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/efm-demo-web/src/bootstrap.ts b/efm-demo-web/src/bootstrap.ts new file mode 100644 index 0000000..c61d605 --- /dev/null +++ b/efm-demo-web/src/bootstrap.ts @@ -0,0 +1,25 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; + +import { registerLocaleData } from '@angular/common'; +import zh from '@angular/common/locales/zh'; +import { environment } from './environments/environment'; +import { DynamicModuleService } from '@athena/dynamic-core'; + +if (environment.production) { + enableProdMode(); +} + +registerLocaleData(zh); + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .then((appModule) => { + // 加载异步模块 + const dynamicModuleService = appModule.injector.get(DynamicModuleService); + dynamicModuleService.clear(); + dynamicModuleService.addModule(appModule); + }) + .catch((err) => console.error(err)); diff --git a/efm-demo-web/src/e2e/protractor.conf.js b/efm-demo-web/src/e2e/protractor.conf.js new file mode 100644 index 0000000..e69de29 diff --git a/efm-demo-web/src/e2e/tsconfig.json b/efm-demo-web/src/e2e/tsconfig.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/efm-demo-web/src/e2e/tsconfig.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/efm-demo-web/src/environments/environment.prod.ts b/efm-demo-web/src/environments/environment.prod.ts new file mode 100644 index 0000000..02dc154 --- /dev/null +++ b/efm-demo-web/src/environments/environment.prod.ts @@ -0,0 +1,8 @@ +export const environment = { + platformType: 'athena', + production: true, + mock: { + db: {}, + methods: {} + } +}; diff --git a/efm-demo-web/src/environments/environment.ts b/efm-demo-web/src/environments/environment.ts new file mode 100644 index 0000000..aef6d09 --- /dev/null +++ b/efm-demo-web/src/environments/environment.ts @@ -0,0 +1,15 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +import { mockDB, requestMethodImpl } from '../mock-data'; + +export const environment = { + platformType: 'athena', + production: false, + mock: { + db: mockDB, + methods: requestMethodImpl + } +}; diff --git a/efm-demo-web/src/favicon.ico b/efm-demo-web/src/favicon.ico new file mode 100644 index 0000000..51b9b82 Binary files /dev/null and b/efm-demo-web/src/favicon.ico differ diff --git a/efm-demo-web/src/index.html b/efm-demo-web/src/index.html new file mode 100644 index 0000000..475ecd9 --- /dev/null +++ b/efm-demo-web/src/index.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/efm-demo-web/src/main.ts b/efm-demo-web/src/main.ts new file mode 100644 index 0000000..ddbb88f --- /dev/null +++ b/efm-demo-web/src/main.ts @@ -0,0 +1,2 @@ +import('./bootstrap') + .catch(err => console.error(err)); diff --git a/efm-demo-web/src/manifest.webmanifest b/efm-demo-web/src/manifest.webmanifest new file mode 100644 index 0000000..5046c0e --- /dev/null +++ b/efm-demo-web/src/manifest.webmanifest @@ -0,0 +1,51 @@ +{ + "name": "showcaseApp", + "short_name": "showcaseApp", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "/", + "start_url": "/", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/efm-demo-web/src/mock-data/index.ts b/efm-demo-web/src/mock-data/index.ts new file mode 100644 index 0000000..e4a2de0 --- /dev/null +++ b/efm-demo-web/src/mock-data/index.ts @@ -0,0 +1,30 @@ +const i18ntw = require('../assets/i18n/zh_TW/basic.json'); +const i18ncn = require('../assets/i18n/zh_CN/basic.json'); +const i18nen = require('../assets/i18n/en_US/basic.json'); + +// import { demo1DocumentOrder } from './showcase/demo1/document-order/document-order'; + + +export const mockDB = {}; + +mockDB['assets/i18n/zh_TW/basic'] = i18ntw; +mockDB['assets/i18n/zh_CN/basic'] = i18ncn; +mockDB['assets/i18n/en_US/basic'] = i18nen; + +// mockDB['DEMO_DAP_CURRENT/DemoOrder/List'] = demo1DocumentOrder.data; +// mockDB['DEMO_DAP_CURRENT/DemoOrder'] = demo1DocumentOrder.data; + + +export const requestMethodImpl = {}; +// requestMethodImpl['DEMO_DAP_CURRENT/DemoOrder/List'] = { +// get: demo1DocumentOrder.getList, +// post: demo1DocumentOrder.postMethod, +// delete: demo1DocumentOrder.deleteMethod, +// put: demo1DocumentOrder.putMethod +// }; +// requestMethodImpl['DEMO_DAP_CURRENT/DemoOrder'] = { +// get: demo1DocumentOrder.getMethod, +// post: demo1DocumentOrder.postMethod, +// delete: demo1DocumentOrder.deleteMethod, +// put: demo1DocumentOrder.putMethod +// }; diff --git a/efm-demo-web/src/mock-data/typings.d.ts b/efm-demo-web/src/mock-data/typings.d.ts new file mode 100644 index 0000000..bbab69d --- /dev/null +++ b/efm-demo-web/src/mock-data/typings.d.ts @@ -0,0 +1,4 @@ +declare module '*.json' { + const value: any; + export default value; +} diff --git a/efm-demo-web/src/polyfills.ts b/efm-demo-web/src/polyfills.ts new file mode 100644 index 0000000..e4298d1 --- /dev/null +++ b/efm-demo-web/src/polyfills.ts @@ -0,0 +1,32 @@ +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + +// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame +// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick +// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + +/* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/** ************************************************************************************************* + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + + +/** ************************************************************************************************* + * APPLICATION IMPORTS + */ +import 'reflect-metadata'; diff --git a/efm-demo-web/src/styles.less b/efm-demo-web/src/styles.less new file mode 100644 index 0000000..3de4bd3 --- /dev/null +++ b/efm-demo-web/src/styles.less @@ -0,0 +1,8 @@ +/* You can add global styles to this file; and also import other style files */ +/* Third Library */ + +/* 平台UI套件 */ +@import '~ng-zorro-antd/src/ng-zorro-antd.less'; +@import './app/style.less'; +@import './assets/iconfont/iconfont.css'; +@import '~@athena/design-ui/src/styles/index.less'; \ No newline at end of file diff --git a/efm-demo-web/src/test.ts b/efm-demo-web/src/test.ts new file mode 100644 index 0000000..a6f15af --- /dev/null +++ b/efm-demo-web/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/efm-demo-web/src/tsconfig.app.json b/efm-demo-web/src/tsconfig.app.json new file mode 100644 index 0000000..6ba02cf --- /dev/null +++ b/efm-demo-web/src/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": ["node"] + }, + "files": [ + "main.ts", + "polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/efm-demo-web/src/tsconfig.spec.json b/efm-demo-web/src/tsconfig.spec.json new file mode 100644 index 0000000..c89454b --- /dev/null +++ b/efm-demo-web/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/efm-demo-web/src/typings.d.ts b/efm-demo-web/src/typings.d.ts new file mode 100644 index 0000000..eb21f76 --- /dev/null +++ b/efm-demo-web/src/typings.d.ts @@ -0,0 +1,11 @@ +/* SystemJS module definition */ +declare let module: NodeModule; +interface NodeModule { + id: string; +} +declare module '!raw-loader!*' { + const contents: string; + export = contents; +} + +export {}; diff --git a/efm-demo-web/themeCssBuild.js b/efm-demo-web/themeCssBuild.js new file mode 100644 index 0000000..c0e7beb --- /dev/null +++ b/efm-demo-web/themeCssBuild.js @@ -0,0 +1,111 @@ +var fs = require('fs'), + path = require('path'), + exec = require('child_process').exec, + less = require('less'), + sourcePath, targetPath; +// sourcePath = 'src/styles.less'; +// targetPath = 'src/css/'; +sourcePath = 'src/app/theme'; // less檔來源路徑 +targetPath = 'src/assets/themes'; // 轉換為css後存檔路徑 +cssPath = 'assets/themes'; // 專案存取css路徑 +//自訂路徑:获取命令行中的路径 +process.argv.forEach(function (val, index, array) { + console.log(val); + if (index == 2) { + sourcePath = val; + } + if (index == 3) { + targetPath = val; + } + if (index == 4) { + cssPath = val; + } +}) + +var lessc = function (rootPath, targetPath, cssPath) { + + //**簡易測試寫法 */ + // //判断文件是否为less文件 + // if (path.extname(rootPath) === ".less") { + // var currentFilePath = path.resolve(rootPath); + // var newFilePath = path.resolve(targetPath, path.basename(currentFilePath, '.less') + ".css"); + // if (!fs.existsSync(targetPath)) { + // fs.mkdirSync(targetPath); + // } + // // 方法一:用less render + // less.render(fs.readFileSync(currentFilePath).toString(), { + // filename: path.resolve(currentFilePath), + // }, function (e, output) { + // if (e) { + // console.log(e); + // } + // fs.writeFileSync(newFilePath, output.css); + // }); + // ////方法二:使用命令列lessc,但錯誤訊息不知如何列出 + // // exec("lessc -x" + currentFilePath + " > " + newFilePath); + // } + //**簡易測試寫法END */ + + //取得当前绝对路径 + rootPath = path.resolve(rootPath); + //目标路径绝对路径 + targetPath = path.resolve(targetPath); + + //判断目录是否存在 + fs.exists(rootPath, function (exists) { + //路径存在 + if (exists) { + var jsonArr=[]; + //获取当前路径下的所有文件和路径名 + var childArray = fs.readdirSync(rootPath); + if (childArray.length) { + var id = ''; + var themePath = ''; + var jsonFilePath = path.resolve(targetPath, "themeJson.json"); + for (var i = 0; i < childArray.length; i++) { + var currentFilePath = path.resolve(rootPath, childArray[i]); + var currentTargetPath = path.resolve(targetPath, childArray[i]) + //读取文件信息 + var stats = fs.statSync(currentFilePath); + //若是目录则递归调用 + if (stats.isDirectory()) { + //lessc(currentFilePath, currentTargetPath); + } else { + //判断文件是否为less文件 + if (path.extname(currentFilePath) === ".less") { + var newFilePath = path.resolve(targetPath, path.basename(currentFilePath, '.less') + ".css"); + id = path.basename(currentFilePath, '.less'); + themePath = cssPath + '/' + id + '.css'; + if (!fs.existsSync(targetPath)) { + fs.mkdirSync(targetPath); + } + // 方法一:用less render + (function(currentFilePath, newFilePath, id, themePath) { + less.render(fs.readFileSync(currentFilePath).toString(), { + filename: path.resolve(currentFilePath), + javascriptEnabled: true + }, function (e, output) { + if (e) { + console.log(e); // 錯誤訊息 + } + console.log(newFilePath); + jsonArr.push({"id":id, "path":themePath}); + fs.writeFileSync(newFilePath, output.css); // 寫入css + fs.writeFileSync(jsonFilePath,JSON.stringify(jsonArr)); // 產生css名稱及路徑 + }); + })(currentFilePath, newFilePath, id, themePath); + ////方法二:使用命令列lessc,但錯誤訊息不知如何列出 + // exec("lessc -x " + currentFilePath + " > " + newFilePath); + } + } + } + } + + } else { + console.log("directory is not exists"); + } + }); + +} + +lessc(sourcePath, targetPath, cssPath); diff --git a/efm-demo-web/tsconfig.json b/efm-demo-web/tsconfig.json new file mode 100644 index 0000000..39289a7 --- /dev/null +++ b/efm-demo-web/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "downlevelIteration": true, + "module": "es2020", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es2015", + "importHelpers": true, + "types": [ + "node" + ], + "typeRoots": [ + "node_modules/@types" + ], + "baseUrl": "src", + "lib": [ + "es2018", + "dom" + ], + "skipLibCheck": true, + "resolveJsonModule": true + } +} \ No newline at end of file diff --git a/efm-demo-web/webpack-mf-shared.js b/efm-demo-web/webpack-mf-shared.js new file mode 100644 index 0000000..3cb8d7b --- /dev/null +++ b/efm-demo-web/webpack-mf-shared.js @@ -0,0 +1,11 @@ +/* eslint-env es2020 */ +/** + * 需要自定义共享的模块,如果与内置模块重名,将会覆盖内置模块 + * 内置共享模块列表:node_modules/@athena/platform-devkit/lib/webpack/webpack-mf-shared.js + */ +const commonLibs = { +}; + +module.exports = { + commonLibs +}; diff --git a/efm-demo-web/webpack.config.js b/efm-demo-web/webpack.config.js new file mode 100644 index 0000000..af5bd2d --- /dev/null +++ b/efm-demo-web/webpack.config.js @@ -0,0 +1,46 @@ +/* eslint-env es2020 */ +const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin"); +const mf = require("@angular-architects/module-federation/webpack"); +const path = require("path"); +const share = mf.share; +const sharedLib = require('./webpack-mf-shared'); +const { shareAthenaLibs } = require('@athena/platform-devkit/lib/webpack/util'); + +const sharedMappings = new mf.SharedMappings(); +sharedMappings.register( + path.join(__dirname, 'tsconfig.json'), + [/* mapped paths to share */]); + +module.exports = { + output: { + uniqueName: "efm-demoAT", + publicPath: "auto" + }, + optimization: { + runtimeChunk: false + }, + resolve: { + alias: { + ...sharedMappings.getAliases(), + } + }, + plugins: [ + new ModuleFederationPlugin({ + + name: "efmdemoAT", + filename: "EfmDemoATModule.js", + exposes: { + "./efm-demoAT": './src/app/implementation/athena-app.module.ts', + }, + + shared: share({ + ...shareAthenaLibs({ + ...sharedLib.commonLibs + }), + ...sharedMappings.getDescriptors() + }) + + }), + sharedMappings.getPlugin() + ], +}; diff --git a/efm-demo-web/webpack.prod.config.js b/efm-demo-web/webpack.prod.config.js new file mode 100644 index 0000000..0c9447d --- /dev/null +++ b/efm-demo-web/webpack.prod.config.js @@ -0,0 +1 @@ +module.exports = require('./webpack.config');