├── .editorconfig ├── .github ├── CODE_OF_CONDUCT.md ├── README.md ├── crowdin.yml ├── renovate.json5 └── workflows │ ├── ci.yml │ ├── crowdin-ci.yml │ ├── lock-threads.yml │ ├── release.yml │ └── translations.yml ├── .gitignore ├── LICENSE.txt ├── cc.ps1 ├── cc.sh ├── docs ├── index.html ├── js │ ├── 428.chunk.js │ ├── 473.chunk.js │ ├── 591.chunk.js │ ├── 811.chunk.js │ ├── main.js │ └── main.js.LICENSE.txt └── media │ └── logo.png ├── package-lock.json ├── package.json ├── src ├── App.vue ├── app.js ├── assets │ ├── kube-6.5.2 │ │ ├── css │ │ │ └── kube.css │ │ └── js │ │ │ ├── kube.js │ │ │ └── kube.min.js │ └── logo.png ├── components │ ├── ASFConfig.vue │ ├── BotConfig.vue │ ├── Home.vue │ ├── fields │ │ ├── CheckboxGroup.vue │ │ ├── InputCheckbox.vue │ │ ├── InputFlag.vue │ │ ├── InputMap.vue │ │ ├── InputNumber.vue │ │ ├── InputPassword.vue │ │ ├── InputSelect.vue │ │ ├── InputSet.vue │ │ └── InputText.vue │ └── mixin │ │ ├── Config.vue │ │ └── Input.vue ├── i18n.js ├── index.html ├── locale │ ├── README.md │ ├── be-BY.json │ ├── bg-BG.json │ ├── bs-BA.json │ ├── ca-ES.json │ ├── cs-CZ.json │ ├── da-DK.json │ ├── de-DE.json │ ├── el-GR.json │ ├── es-ES.json │ ├── fa-IR.json │ ├── fi-FI.json │ ├── fr-FR.json │ ├── he-IL.json │ ├── hr-HR.json │ ├── hu-HU.json │ ├── id-ID.json │ ├── it-IT.json │ ├── ja-JP.json │ ├── ka-GE.json │ ├── ko-KR.json │ ├── lol-US.json │ ├── lt-LT.json │ ├── lv-LV.json │ ├── nl-NL.json │ ├── no-NO.json │ ├── pl-PL.json │ ├── pt-BR.json │ ├── pt-PT.json │ ├── ro-RO.json │ ├── ru-RU.json │ ├── sk-SK.json │ ├── sr-CS.json │ ├── strings.json │ ├── sv-SE.json │ ├── th-TH.json │ ├── tr-TR.json │ ├── uk-UA.json │ ├── vi-VN.json │ ├── zh-CN.json │ ├── zh-HK.json │ └── zh-TW.json ├── router.js ├── schema.js └── validators.js ├── webpack.config.js └── webpack.dev.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 4 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | 2 | # Contributor Covenant Code of Conduct 3 | 4 | ## Our Pledge 5 | 6 | We as members, contributors, and leaders pledge to make participation in our 7 | community a harassment-free experience for everyone, regardless of age, body 8 | size, visible or invisible disability, ethnicity, sex characteristics, gender 9 | identity and expression, level of experience, education, socio-economic status, 10 | nationality, personal appearance, race, caste, color, religion, or sexual identity 11 | and orientation. 12 | 13 | We pledge to act and interact in ways that contribute to an open, welcoming, 14 | diverse, inclusive, and healthy community. 15 | 16 | ## Our Standards 17 | 18 | Examples of behavior that contributes to a positive environment for our 19 | community include: 20 | 21 | * Demonstrating empathy and kindness toward other people 22 | * Being respectful of differing opinions, viewpoints, and experiences 23 | * Giving and gracefully accepting constructive feedback 24 | * Accepting responsibility and apologizing to those affected by our mistakes, 25 | and learning from the experience 26 | * Focusing on what is best not just for us as individuals, but for the 27 | overall community 28 | 29 | Examples of unacceptable behavior include: 30 | 31 | * The use of sexualized language or imagery, and sexual attention or 32 | advances of any kind 33 | * Trolling, insulting or derogatory comments, and personal or political attacks 34 | * Public or private harassment 35 | * Publishing others' private information, such as a physical or email 36 | address, without their explicit permission 37 | * Other conduct which could reasonably be considered inappropriate in a 38 | professional setting 39 | 40 | ## Enforcement Responsibilities 41 | 42 | Community leaders are responsible for clarifying and enforcing our standards of 43 | acceptable behavior and will take appropriate and fair corrective action in 44 | response to any behavior that they deem inappropriate, threatening, offensive, 45 | or harmful. 46 | 47 | Community leaders have the right and responsibility to remove, edit, or reject 48 | comments, commits, code, wiki edits, issues, and other contributions that are 49 | not aligned to this Code of Conduct, and will communicate reasons for moderation 50 | decisions when appropriate. 51 | 52 | ## Scope 53 | 54 | This Code of Conduct applies within all community spaces, and also applies when 55 | an individual is officially representing the community in public spaces. 56 | Examples of representing our community include using an official e-mail address, 57 | posting via an official social media account, or acting as an appointed 58 | representative at an online or offline event. 59 | 60 | ## Enforcement 61 | 62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 63 | reported to the community leaders responsible for enforcement at **[ASF@JustArchi.net](mailto:ASF@JustArchi.net)**. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available 126 | at [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [Mozilla CoC]: https://github.com/mozilla/diversity 131 | [FAQ]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /.github/README.md: -------------------------------------------------------------------------------- 1 | # ASF-WebConfigGenerator 2 | 3 | Standalone web config generator for ASF 4 | 5 | [![Build status (GitHub)](https://img.shields.io/github/actions/workflow/status/JustArchiNET/ASF-WebConfigGenerator/ci.yml?branch=main&label=Build&logo=github&cacheSeconds=600)](https://github.com/JustArchiNET/ASF-WebConfigGenerator/actions?query=branch%3Amain) 6 | [![Github last commit date](https://img.shields.io/github/last-commit/JustArchiNET/ASF-WebConfigGenerator?label=Updated&maxAge=600)](https://github.com/JustArchiNET/ASF-WebConfigGenerator/commits) 7 | [![License](https://img.shields.io/github/license/JustArchiNET/ASF-WebConfigGenerator?label=License&maxAge=2592000)](https://github.com/JustArchiNET/ASF-WebConfigGenerator/blob/main/LICENSE.txt) 8 | 9 | *** 10 | 11 | ## Build Setup 12 | 13 | ```bash 14 | # install dependencies 15 | npm ci 16 | 17 | # build 18 | npm run build 19 | ``` 20 | 21 | The compiled files are available in `docs` directory. Launch index.html with your browser of choice. 22 | 23 | ## Development Setup 24 | 25 | ```bash 26 | npm run dev 27 | ``` 28 | 29 | A web browser should automatically open `localhost:8080`. Changes in files are automatically reloaded after compilation. 30 | -------------------------------------------------------------------------------- /.github/crowdin.yml: -------------------------------------------------------------------------------- 1 | "base_path": ".." 2 | "preserve_hierarchy": true 3 | "files": [ 4 | { 5 | "source": "/src/locale/strings.json", 6 | "dest": "/ASF-WebConfigGenerator/src/locale/strings.json", 7 | "translation": "/src/locale/%locale%.json" 8 | } 9 | ] 10 | -------------------------------------------------------------------------------- /.github/renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base", 5 | ":assignee(Aareksio)", 6 | ":automergeBranch", 7 | ":automergeDigest", 8 | ":automergeMinor", 9 | ":disableDependencyDashboard", 10 | ":disableRateLimiting", 11 | ":label(🤖 Automatic)" 12 | ], 13 | "packageRules": [ 14 | { 15 | "assignees": [ "JustArchi" ], 16 | "matchManagers": [ "github-actions" ] 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ASF-WebConfigGenerator-ci 2 | 3 | on: [push, pull_request] 4 | 5 | env: 6 | NODE_JS_VERSION: 'lts/*' 7 | 8 | permissions: {} 9 | 10 | jobs: 11 | build: 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | os: [macos-latest, ubuntu-latest, windows-latest] 16 | 17 | runs-on: ${{ matrix.os }} 18 | 19 | steps: 20 | - name: Checkout code 21 | uses: actions/checkout@v4.2.2 22 | with: 23 | show-progress: false 24 | 25 | - name: Setup Node.js with npm 26 | uses: actions/setup-node@v4.4.0 27 | with: 28 | check-latest: true 29 | node-version: ${{ env.NODE_JS_VERSION }} 30 | 31 | - name: Verify Node.js 32 | run: node -v 33 | 34 | - name: Verify npm 35 | run: npm -v 36 | 37 | - name: Install npm modules for ASF-WebConfigGenerator 38 | run: npm ci --no-progress 39 | 40 | - name: Build ASF-WebConfigGenerator 41 | run: npm run-script build --no-progress 42 | 43 | - name: Upload ASF-WebConfigGenerator 44 | uses: actions/upload-artifact@v4.6.2 45 | with: 46 | if-no-files-found: error 47 | name: ${{ matrix.os }}_ASF-WebConfigGenerator 48 | path: docs 49 | -------------------------------------------------------------------------------- /.github/workflows/crowdin-ci.yml: -------------------------------------------------------------------------------- 1 | name: ASF-WebConfigGenerator-crowdin-ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | permissions: {} 9 | 10 | jobs: 11 | upload: 12 | environment: dev-crowdin 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout code 17 | uses: actions/checkout@v4.2.2 18 | with: 19 | show-progress: false 20 | 21 | - name: Upload latest strings for translation on Crowdin 22 | uses: crowdin/github-action@v2.7.1 23 | with: 24 | crowdin_branch_name: main 25 | config: '.github/crowdin.yml' 26 | project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }} 27 | token: ${{ secrets.ASF_CROWDIN_API_TOKEN }} 28 | -------------------------------------------------------------------------------- /.github/workflows/lock-threads.yml: -------------------------------------------------------------------------------- 1 | name: ASF-WebConfigGenerator-lock-threads 2 | 3 | on: 4 | schedule: 5 | - cron: '0 2 * * *' 6 | workflow_dispatch: 7 | 8 | permissions: 9 | discussions: write 10 | issues: write 11 | pull-requests: write 12 | 13 | concurrency: 14 | group: lock-threads 15 | 16 | jobs: 17 | lock: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - name: Lock inactive threads 21 | uses: dessant/lock-threads@v5.0.1 22 | with: 23 | discussion-inactive-days: 90 24 | issue-inactive-days: 30 25 | pr-inactive-days: 30 26 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: ASF-WebConfigGenerator-release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | env: 9 | NODE_JS_VERSION: 'lts/*' 10 | 11 | permissions: 12 | contents: write 13 | 14 | jobs: 15 | release: 16 | environment: release 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: Checkout code 21 | uses: actions/checkout@v4.2.2 22 | with: 23 | show-progress: false 24 | token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} 25 | 26 | - name: Setup Node.js with npm 27 | uses: actions/setup-node@v4.4.0 28 | with: 29 | check-latest: true 30 | node-version: ${{ env.NODE_JS_VERSION }} 31 | 32 | - name: Verify Node.js 33 | run: node -v 34 | 35 | - name: Verify npm 36 | run: npm -v 37 | 38 | - name: Install npm modules for ASF-WebConfigGenerator 39 | run: npm ci --no-progress 40 | 41 | - name: Build ASF-WebConfigGenerator 42 | run: npm run-script build --no-progress 43 | 44 | - name: Import GPG key 45 | uses: crazy-max/ghaction-import-gpg@v6.3.0 46 | with: 47 | gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }} 48 | git_user_signingkey: true 49 | git_commit_gpgsign: true 50 | 51 | - name: Deploy ASF-WebConfigGenerator 52 | shell: sh 53 | run: | 54 | set -eu 55 | 56 | git add -A "docs" 57 | 58 | if ! git diff --cached --quiet; then 59 | git commit -m "Automatic ASF-WebConfigGenerator deployment" 60 | 61 | git push 62 | fi 63 | -------------------------------------------------------------------------------- /.github/workflows/translations.yml: -------------------------------------------------------------------------------- 1 | name: ASF-WebConfigGenerator-translations 2 | 3 | on: 4 | schedule: 5 | - cron: '5 2 * * *' 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: write 10 | 11 | jobs: 12 | update: 13 | environment: dev-crowdin 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Checkout code 18 | uses: actions/checkout@v4.2.2 19 | with: 20 | show-progress: false 21 | token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }} 22 | 23 | - name: Download latest translations from Crowdin 24 | uses: crowdin/github-action@v2.7.1 25 | with: 26 | upload_sources: false 27 | download_translations: true 28 | skip_untranslated_strings: true 29 | push_translations: false 30 | crowdin_branch_name: main 31 | config: '.github/crowdin.yml' 32 | project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }} 33 | token: ${{ secrets.ASF_CROWDIN_API_TOKEN }} 34 | 35 | - name: Import GPG key 36 | uses: crazy-max/ghaction-import-gpg@v6.3.0 37 | with: 38 | gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }} 39 | git_user_signingkey: true 40 | git_commit_gpgsign: true 41 | 42 | - name: Commit and push the changes 43 | shell: sh 44 | run: | 45 | set -eu 46 | 47 | git add -A "src/locale" 48 | 49 | if ! git diff --cached --quiet; then 50 | git commit -m "Automatic translations update" 51 | 52 | git push 53 | fi 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## ASF-WebConfigGenerator 3 | ################# 4 | 5 | .idea 6 | node_modules 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | ############# 12 | ## Windows detritus 13 | ############# 14 | 15 | # Windows image file caches 16 | Thumbs.db 17 | ehthumbs.db 18 | 19 | # Folder config file 20 | Desktop.ini 21 | 22 | # Recycle Bin used on file shares 23 | $RECYCLE.BIN/ 24 | 25 | # Mac crap 26 | .DS_Store 27 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /cc.ps1: -------------------------------------------------------------------------------- 1 | $target = 'docs' # Relative to script directory 2 | 3 | Set-StrictMode -Version Latest 4 | $ErrorActionPreference = 'Stop' 5 | $ProgressPreference = 'SilentlyContinue' 6 | 7 | Push-Location "$PSScriptRoot" 8 | 9 | try { 10 | git pull 11 | 12 | npm ci --no-progress 13 | npm run-script build --no-progress 14 | 15 | git reset 16 | git add -A -f "$target" 17 | git commit -m "ASF-WebConfigGenerator build" 18 | git push 19 | } finally { 20 | Pop-Location 21 | } 22 | -------------------------------------------------------------------------------- /cc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | set -eu 3 | 4 | TARGET="docs" # Relative to script directory 5 | 6 | cd "$(dirname "$(readlink -f "$0")")" 7 | 8 | git pull 9 | 10 | npm ci --no-progress 11 | npm run-script build --no-progress 12 | 13 | git reset 14 | git add -A -f "$TARGET" 15 | git commit -m "ASF-WebConfigGenerator build" 16 | git push 17 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | ASF web config
-------------------------------------------------------------------------------- /docs/js/428.chunk.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunkasf_config_web=self.webpackChunkasf_config_web||[]).push([[428],{3428:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>l});var i=function(){var t=this,s=t._self._c;return s("div",{staticClass:"home"},[s("p",{staticClass:"text-justify",domProps:{innerHTML:t._s(t.$t("home.topic"))}})])};i._withStripped=!0;e(6373);const l=(0,e(4486).A)({},i,[],!1,null,null,null).exports},3672:(t,s,e)=>{var i=e(1601),l=e(6314)(i);l.push([t.id,".text-justify{text-align:justify}",""]),t.exports=l},6373:(t,s,e)=>{var i=e(3672);i.__esModule&&(i=i.default),"string"==typeof i&&(i=[[t.id,i,""]]),i.locals&&(t.exports=i.locals),(0,e(534).A)("98a195f0",i,!1,{})}}]); -------------------------------------------------------------------------------- /docs/js/473.chunk.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkasf_config_web=self.webpackChunkasf_config_web||[]).push([[473],{4473:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var r=function(){var e=this,t=e._self._c;return t("form",{staticClass:"form",attrs:{method:"post",action:"",id:"asf-form",onsubmit:"return false;"}},[e.versions.length>1?t("div",{staticClass:"row align-center"},[t("div",{staticClass:"col col-2"},[t("div",{staticClass:"form-input"},[t("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedVersion,expression:"selectedVersion"}],attrs:{id:"version"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){return"_value"in e?e._value:e.value}));e.selectedVersion=t.target.multiple?n:n[0]}}},e._l(e.versions,(function(n){return t("option",{domProps:{value:n}},[e._v(e._s(n))])})),0)])])]):e._e(),e._v(" "),e._l(e.schema,(function(n){return!n.advanced||e.displayAdvanced?t("fieldset",[t("legend",[e._v(e._s(e.$t(n.legend)))]),e._v(" "),e._l(n.fields,(function(n){return!n.advanced||e.displayAdvanced?t(n.type,{key:n.field,tag:"component",attrs:{schema:n},on:{update:e.updateModel}}):e._e()}))],2):e._e()})),e._v(" "),t("div",{staticClass:"form-item"},[t("button",{staticClass:"button",on:{click:function(t){return t.preventDefault(),e.downloadJSON.apply(null,arguments)}}},[e._v(e._s(e.$t("button.download")))]),e._v(" "),t("button",{staticClass:"button secondary",class:{outline:!e.displayAdvanced},on:{click:function(t){return t.preventDefault(),e.toggleAdvanced.apply(null,arguments)}}},[e._v(e._s(e.$t("button.advanced")))])])],2)};function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0}))),Object.entries(t).forEach((function(e){var n,r,o=(r=2,function(e){if(Array.isArray(e))return e}(n=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,l,a=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw o}}return a}}(n,r)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=o[0],a=o[1];"string"==typeof a&&""===a&&delete t[l]})),t.name&&delete t.name,t}}},u=(0,n(4486).A)(c,r,[],!1,null,null,null).exports}}]); -------------------------------------------------------------------------------- /docs/js/591.chunk.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkasf_config_web=self.webpackChunkasf_config_web||[]).push([[591],{9591:(t,e,n)=>{n.r(e),n.d(e,{default:()=>o});var r=function(){var t=this,e=t._self._c;return e("form",{staticClass:"form",attrs:{method:"post",action:"",id:"asf-form",onsubmit:"return false;"}},[t.versions.length>1?e("div",{staticClass:"row align-center"},[e("div",{staticClass:"col col-2"},[e("div",{staticClass:"form-input"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.selectedVersion,expression:"selectedVersion"}],attrs:{id:"version"},on:{change:function(e){var n=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.selectedVersion=e.target.multiple?n:n[0]}}},t._l(t.versions,(function(n){return e("option",{domProps:{value:n}},[t._v(t._s(n))])})),0)])])]):t._e(),t._v(" "),t._l(t.schema,(function(n){return!n.advanced||t.displayAdvanced?e("fieldset",[e("legend",[t._v(t._s(t.$t(n.legend)))]),t._v(" "),t._l(n.fields,(function(n){return!n.advanced||t.displayAdvanced?e(n.type,{key:n.field,tag:"component",attrs:{schema:n},on:{update:t.updateModel}}):t._e()}))],2):t._e()})),t._v(" "),e("div",{staticClass:"form-item"},[e("button",{staticClass:"button",on:{click:function(e){return e.preventDefault(),t.downloadJSON.apply(null,arguments)}}},[t._v(t._s(t.$t("button.download")))]),t._v(" "),e("button",{staticClass:"button secondary",class:{outline:!t.displayAdvanced},on:{click:function(e){return e.preventDefault(),t.toggleAdvanced.apply(null,arguments)}}},[t._v(t._s(t.$t("button.advanced")))])])],2)};function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0}))),Object.entries(t).forEach((function(e){var n,r,l=(r=2,function(t){if(Array.isArray(t))return t}(n=e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,a,l,o,i=[],s=!0,c=!1;try{if(l=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=l.call(n)).done)&&(i.push(r.value),i.length!==e);s=!0);}catch(t){c=!0,a=t}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return i}}(n,r)||function(t,e){if(t){if("string"==typeof t)return a(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=l[0],i=l[1];"string"==typeof i&&""===i&&delete t[o]})),t}}},o=(0,n(4486).A)(l,r,[],!1,null,null,null).exports}}]); -------------------------------------------------------------------------------- /docs/js/main.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Vue.js v2.7.16 3 | * (c) 2014-2023 Evan You 4 | * Released under the MIT License. 5 | */ 6 | -------------------------------------------------------------------------------- /docs/media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JustArchiNET/ASF-WebConfigGenerator/741eff1e5f9d47cc6a3745d6492fd8ebb8b9f845/docs/media/logo.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "asf-config-web", 3 | "version": "1.0.0", 4 | "description": "ASF config webpage", 5 | "author": "Arkadiusz 'Mole' Sygulski ", 6 | "private": true, 7 | "scripts": { 8 | "build": "webpack", 9 | "dev": "webpack serve --config webpack.dev.config.js --open" 10 | }, 11 | "dependencies": { 12 | "vue": "2.7.16", 13 | "vue-i18n": "8.28.2", 14 | "vue-router": "3.6.5" 15 | }, 16 | "devDependencies": { 17 | "@babel/core": "7.27.4", 18 | "@babel/plugin-syntax-dynamic-import": "7.8.3", 19 | "@babel/preset-env": "7.27.2", 20 | "babel-loader": "8.4.1", 21 | "css-loader": "6.11.0", 22 | "file-loader": "6.2.0", 23 | "html-webpack-plugin": "5.6.3", 24 | "sass": "1.89.1", 25 | "sass-loader": "12.6.0", 26 | "style-loader": "3.3.4", 27 | "url-loader": "4.1.1", 28 | "vue-loader": "15.11.1", 29 | "vue-style-loader": "4.1.3", 30 | "vue-template-compiler": "2.7.16", 31 | "webpack": "5.99.9", 32 | "webpack-cli": "4.10.0", 33 | "webpack-dev-server": "4.15.2" 34 | }, 35 | "engines": { 36 | "node": ">= 8.0.0", 37 | "npm": ">= 5.0.0" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 55 | 56 | 121 | -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | import App from './App.vue'; 4 | import { i18n } from './i18n.js'; 5 | import router from './router.js'; 6 | 7 | new Vue({ 8 | el: '#app', 9 | router, 10 | i18n, 11 | template: '', 12 | components: { App } 13 | }); 14 | -------------------------------------------------------------------------------- /src/assets/kube-6.5.2/js/kube.min.js: -------------------------------------------------------------------------------- 1 | if("undefined"==typeof jQuery)throw new Error("Kube's requires jQuery");!function(t){var e=t.fn.jquery.split(".");if(1==e[0]&&e[1]<8)throw new Error("Kube's requires at least jQuery v1.8")}(jQuery),function(){Function.prototype.inherits=function(t){var e=function(){};e.prototype=t.prototype;var s=new e;for(var i in this.prototype)s[i]=this.prototype[i];this.prototype=s,this.prototype["super"]=t.prototype};var t=function(t,e){e="object"==typeof e?e:{},this.$element=$(t),this.opts=$.extend(!0,this.defaults,$.fn[this.namespace].options,this.$element.data(),e),this.$target="string"==typeof this.opts.target?$(this.opts.target):null};t.prototype={getInstance:function(){return this.$element.data("fn."+this.namespace)},hasTarget:function(){return!(null===this.$target)},callback:function(t){var e=[].slice.call(arguments).splice(1);return this.$element&&(e=this._fireCallback($._data(this.$element[0],"events"),t,this.namespace,e)),this.$target&&(e=this._fireCallback($._data(this.$target[0],"events"),t,this.namespace,e)),this.opts&&this.opts.callbacks&&$.isFunction(this.opts.callbacks[t])?this.opts.callbacks[t].apply(this,e):e},_fireCallback:function(t,e,s,i){if(t&&"undefined"!=typeof t[e])for(var n=t[e].length,o=0;n>o;o++){var a=t[e][o].namespace;if(a===s)var h=t[e][o].handler.apply(this,i)}return"undefined"==typeof h?i:h}},window.Kube=t}(),function(t){t.Plugin={create:function(e,s){return s="undefined"==typeof s?e.toLowerCase():s,$.fn[s]=function(i,n){var o=Array.prototype.slice.call(arguments,1),a="fn."+s,h=[];return this.each(function(){var s=$(this),l=s.data(a);if(n="object"==typeof i?i:n,l||(s.data(a,{}),s.data(a,l=new t[e](this,n))),"string"==typeof i)if($.isFunction(l[i])){var c=l[i].apply(l,o);void 0!==c&&h.push(c)}else $.error('No such method "'+i+'" for '+e)}),0===h.length||1===h.length?0===h.length?this:h[0]:h},$.fn[s].options={},this},autoload:function(t){for(var e=t.split(","),s=e.length,i=0;s>i;i++){var n=e[i].toLowerCase().split(",").map(function(t){return t.trim()}).join(",");this.autoloadQueue.push(n)}return this},autoloadQueue:[],startAutoload:function(){if(window.MutationObserver&&0!==this.autoloadQueue.length){var t=this,e=new MutationObserver(function(e){e.forEach(function(e){var s=e.addedNodes;0===s.length||1===s.length&&3===s.nodeType||t.startAutoloadOnce()})});e.observe(document,{subtree:!0,childList:!0})}},startAutoloadOnce:function(){var t=this,e=$("[data-component]").not("[data-loaded]");e.each(function(){var e=$(this),s=e.data("component");-1!==t.autoloadQueue.indexOf(s)&&(e.attr("data-loaded",!0),e[s]())})},watch:function(){t.Plugin.startAutoloadOnce(),t.Plugin.startAutoload()}},$(window).on("load",function(){t.Plugin.watch()})}(Kube),function(t){t.Animation=function(e,s,i){this.namespace="animation",this.defaults={},t.apply(this,arguments),this.effect=s,this.completeCallback="undefined"==typeof i?!1:i,this.prefixes=["","-moz-","-o-animation-","-webkit-"],this.queue=[],this.start()},t.Animation.prototype={start:function(){this.isSlideEffect()&&this.setElementHeight(),this.addToQueue(),this.clean(),this.animate()},addToQueue:function(){this.queue.push(this.effect)},setElementHeight:function(){this.$element.height(this.$element.height())},removeElementHeight:function(){this.$element.css("height","")},isSlideEffect:function(){return"slideDown"===this.effect||"slideUp"===this.effect},isHideableEffect:function(){var t=["fadeOut","slideUp","flipOut","zoomOut","slideOutUp","slideOutRight","slideOutLeft"];return-1!==$.inArray(this.effect,t)},isToggleEffect:function(){return"show"===this.effect||"hide"===this.effect},storeHideClasses:function(){this.$element.hasClass("hide-sm")?this.$element.data("hide-sm-class",!0):this.$element.hasClass("hide-md")&&this.$element.data("hide-md-class",!0)},revertHideClasses:function(){this.$element.data("hide-sm-class")?this.$element.addClass("hide-sm").removeData("hide-sm-class"):this.$element.data("hide-md-class")?this.$element.addClass("hide-md").removeData("hide-md-class"):this.$element.addClass("hide")},removeHideClass:function(){this.$element.data("hide-sm-class")?this.$element.removeClass("hide-sm"):this.$element.data("hide-md-class")?this.$element.removeClass("hide-md"):this.$element.removeClass("hide")},animate:function(){if(this.storeHideClasses(),this.isToggleEffect())return this.makeSimpleEffects();this.$element.addClass("kubeanimated"),this.$element.addClass(this.queue[0]),this.removeHideClass();var t=this.queue.length>1?null:this.completeCallback;this.complete("AnimationEnd",$.proxy(this.makeComplete,this),t)},makeSimpleEffects:function(){"show"===this.effect?this.removeHideClass():"hide"===this.effect&&this.revertHideClasses(),"function"==typeof this.completeCallback&&this.completeCallback(this)},makeComplete:function(){this.$element.hasClass(this.queue[0])&&(this.clean(),this.queue.shift(),this.queue.length&&this.animate())},complete:function(t,e,s){var i=t.toLowerCase()+" webkit"+t+" o"+t+" MS"+t;this.$element.one(i,$.proxy(function(){"function"==typeof e&&e(),this.isHideableEffect()&&this.revertHideClasses(),this.isSlideEffect()&&this.removeElementHeight(),"function"==typeof s&&s(this),this.$element.off(i)},this))},clean:function(){this.$element.removeClass("kubeanimated").removeClass(this.queue[0])}},t.Animation.inherits(t)}(Kube),function(t){t.fn.animation=function(e,s){var i="fn.animation";return this.each(function(){var n=t(this),o=n.data(i);n.data(i,{}),n.data(i,o=new Kube.Animation(this,e,s))})},t.fn.animation.options={}}(jQuery),function(t){t.Detect=function(){},t.Detect.prototype={isMobile:function(){return/(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent)},isDesktop:function(){return!/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent)},isMobileScreen:function(){return $(window).width()<=768},isTabletScreen:function(){return $(window).width()>=768&&$(window).width()<=1024},isDesktopScreen:function(){return $(window).width()>1024}}}(Kube),function(t){t.FormData=function(t){this.opts=t.opts},t.FormData.prototype={set:function(t){this.data=t},get:function(t){return this.formdata=t,this.opts.appendForms&&this.appendForms(),this.opts.appendFields&&this.appendFields(),this.data},appendFields:function(){var t=$(this.opts.appendFields);if(0!==t.length){var e=this,s="";this.formdata?t.each(function(){e.data.append($(this).attr("name"),$(this).val())}):(t.each(function(){s+="&"+$(this).attr("name")+"="+$(this).val()}),this.data=""===this.data?s.replace(/^&/,""):this.data+s)}},appendForms:function(){var t=$(this.opts.appendForms);if(0!==t.length)if(this.formdata){var e=this,s=$(this.opts.appendForms).serializeArray();$.each(s,function(t,s){e.data.append(s.name,s.value)})}else{var i=t.serialize();this.data=""===this.data?i:this.data+"&"+i}}}}(Kube),function(t){t.Response=function(t){},t.Response.prototype={parse:function(t){if(""===t)return!1;var e={};try{e=JSON.parse(t)}catch(s){return!1}if(void 0!==e[0])for(var i in e)this.parseItem(e[i]);else this.parseItem(e);return e},parseItem:function(t){return"value"===t.type?$.each(t.data,$.proxy(function(t,e){e=null===e||e===!1?0:e,e=e===!0?1:e,$(t).val(e)},this)):"html"===t.type?$.each(t.data,$.proxy(function(t,e){e=null===e||e===!1?"":e,$(t).html(this.stripslashes(e))},this)):"addClass"===t.type?$.each(t.data,function(t,e){$(t).addClass(e)}):"removeClass"===t.type?$.each(t.data,function(t,e){$(t).removeClass(e)}):"command"===t.type?$.each(t.data,function(t,e){$(e)[t]()}):"animation"===t.type?$.each(t.data,function(t,e){e.opts="undefined"==typeof e.opts?{}:e.opts,$(t).animation(e.name,e.opts)}):"location"===t.type?top.location.href=t.data:"notify"===t.type&&$.notify(t.data),t},stripslashes:function(t){return(t+"").replace(/\0/g,"0").replace(/\\([\\'"])/g,"$1")}}}(Kube),function(t){t.Utils=function(){},t.Utils.prototype={disableBodyScroll:function(){var t=$("html"),e=window.innerWidth;if(!e){var s=document.documentElement.getBoundingClientRect();e=s.right-Math.abs(s.left)}var i=document.body.clientWidththis.offsetTop+this.opts.offset},fixed:function(){this.$element.addClass(this.opts.classname).css("top",this.opts.offset+"px"),this.callback("fixed")},unfixed:function(){this.$element.removeClass(this.opts.classname).css("top",""),this.callback("unfixed")}},t.Sticky.inherits(t),t.Plugin.create("Sticky"),t.Plugin.autoload("Sticky")}(Kube),function(t){t.Toggleme=function(e,s){this.namespace="toggleme",this.defaults={toggleEvent:"click",target:null,text:"",animationOpen:"slideDown",animationClose:"slideUp",callbacks:["open","opened","close","closed"]},t.apply(this,arguments),this.start()},t.Toggleme.prototype={start:function(){this.hasTarget()&&this.$element.on(this.opts.toggleEvent+"."+this.namespace,$.proxy(this.toggle,this))},stop:function(){this.$element.off("."+this.namespace),this.revertText()},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},open:function(t){t&&t.preventDefault(),this.isOpened()||(this.storeText(),this.callback("open"),this.$target.animation("slideDown",$.proxy(this.onOpened,this)),setTimeout($.proxy(this.replaceText,this),100))},close:function(t){t&&t.preventDefault(),this.isOpened()&&(this.callback("close"),this.$target.animation("slideUp",$.proxy(this.onClosed,this)))},isOpened:function(){return this.$target.hasClass("open")},onOpened:function(){this.$target.addClass("open"),this.callback("opened")},onClosed:function(){this.$target.removeClass("open"),this.revertText(),this.callback("closed")},storeText:function(){this.$element.data("replacement-text",this.$element.html())},revertText:function(){var t=this.$element.data("replacement-text");t&&this.$element.html(t),this.$element.removeData("replacement-text")},replaceText:function(){""!==this.opts.text&&this.$element.html(this.opts.text)}},t.Toggleme.inherits(t),t.Plugin.create("Toggleme"),t.Plugin.autoload("Toggleme")}(Kube),function(t){t.Offcanvas=function(e,s){this.namespace="offcanvas",this.defaults={target:null,push:!0,width:"250px",direction:"left",toggleEvent:"click",clickOutside:!0,animationOpen:"slideInLeft",animationClose:"slideOutLeft",callbacks:["open","opened","close","closed"]},t.apply(this,arguments),this.utils=new t.Utils,this.detect=new t.Detect,this.start()},t.Offcanvas.prototype={start:function(){this.hasTarget()&&(this.buildTargetWidth(),this.buildAnimationDirection(),this.$close=this.getCloseLink(),this.$element.on(this.opts.toggleEvent+"."+this.namespace,$.proxy(this.toggle,this)),this.$target.addClass("offcanvas"))},stop:function(){this.closeAll(),this.$element.off("."+this.namespace),this.$close.off("."+this.namespace),$(document).off("."+this.namespace)},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},buildTargetWidth:function(){this.opts.width=$(window).width()t||(this.opts.caretUp=!0,this.$caret.addClass("up"))},getCaret:function(){return this.$element.find(".caret")},toggleCaretOpen:function(){this.opts.caretUp?this.$caret.removeClass("up").addClass("down"):this.$caret.removeClass("down").addClass("up")},toggleCaretClose:function(){this.opts.caretUp?this.$caret.removeClass("down").addClass("up"):this.$caret.removeClass("up").addClass("down")},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},open:function(t){t&&t.preventDefault(),this.callback("open"),$(".dropdown").removeClass("open").addClass("hide"),this.opts.height&&this.$target.css("min-height",this.opts.height+"px"),this.opts.width&&this.$target.width(this.opts.width),this.setPosition(),this.toggleCaretOpen(),this.$target.animation(this.opts.animationOpen,$.proxy(this.onOpened,this))},close:function(t){if(this.isOpened()){if(t){if(this.shouldNotBeClosed(t.target))return;t.preventDefault()}this.utils.enableBodyScroll(),this.callback("close"),this.toggleCaretClose(),this.$target.animation(this.opts.animationClose,$.proxy(this.onClosed,this))}},onClosed:function(){this.$target.removeClass("open"),this.disableEvents(),this.callback("closed")},onOpened:function(){this.$target.addClass("open"),this.enableEvents(),this.callback("opened")},isOpened:function(){return this.$target.hasClass("open")},enableEvents:function(){this.detect.isDesktop()&&this.$target.on("mouseover."+this.namespace,$.proxy(this.utils.disableBodyScroll,this.utils)).on("mouseout."+this.namespace,$.proxy(this.utils.enableBodyScroll,this.utils)),$(document).on("scroll."+this.namespace,$.proxy(this.setPosition,this)),$(window).on("resize."+this.namespace,$.proxy(this.setPosition,this)),$(document).on("click."+this.namespace+" touchstart."+this.namespace,$.proxy(this.close,this)),$(document).on("keydown."+this.namespace,$.proxy(this.handleKeyboard,this)),this.$target.find('[data-action="dropdown-close"]').on("click."+this.namespace,$.proxy(this.close,this))},disableEvents:function(){this.$target.off("."+this.namespace),$(document).off("."+this.namespace),$(window).off("."+this.namespace)},handleKeyboard:function(t){27===t.which&&this.close(t)},shouldNotBeClosed:function(t){return"dropdown-close"===$(t).attr("data-action")||t===this.$close[0]?!1:0!==$(t).closest(".dropdown").length},isNavigationFixed:function(){return 0!==this.$element.closest(".fixed").length},getPlacement:function(t){return $(document).height()"),t.each($.proxy(this.buildLiveItem,this)),this.$element.html("").append(this.$liveTabsList))},buildLiveItem:function(t,e){var s=$(e),i=$("
  • "),n=$(""),o=t+1;s.attr("id",this.getLiveItemId(s,o));var a="#"+s.attr("id"),h=this.getLiveItemTitle(s);n.attr("href",a).attr("rel",a).text(h),i.append(n),this.$liveTabsList.append(i)},getLiveItemId:function(t,e){return"undefined"==typeof t.attr("id")?this.opts.live.replace(".","")+e:t.attr("id")},getLiveItemTitle:function(t){return"undefined"==typeof t.attr("data-title")?t.attr("id"):t.attr("data-title")},setActiveItem:function(){this.currentHash?(this.currentItem=this.getItemBy(this.currentHash),this.opts.active=this.currentHash):this.opts.active===!1&&(this.currentItem=this.getItem(this.$items.first()),this.opts.active=this.currentItem.hash),this.addActive(this.currentItem)},addActive:function(t){t.$parent.addClass("active"),t.$tab.removeClass("hide").addClass("open"),this.currentItem=t},removeActive:function(t){t.$parent.removeClass("active"),t.$tab.addClass("hide").removeClass("open"),this.currentItem=!1},next:function(t){t&&t.preventDefault();var e=this.getItem(this.fetchElement("next"));this.open(e.hash),this.callback("next",e)},prev:function(t){t&&t.preventDefault();var e=this.getItem(this.fetchElement("prev"));this.open(e.hash),this.callback("prev",e)},fetchElement:function(t){var e;if(this.currentItem!==!1){if(e=this.currentItem.$parent[t]().find("a"),0===e.length)return}else e=this.$items[0];return e},open:function(t,e){if("undefined"!=typeof t){"object"==typeof t&&t.preventDefault();var s="object"==typeof t?this.getItem(t.target):this.getItemBy(t);this.closeAll(),this.callback("open",s),this.addActive(s),this.pushStateOpen(e,s),this.callback("opened",s)}},pushStateOpen:function(t,e){t!==!1&&this.opts.hash!==!1&&history.pushState(!1,!1,e.hash)},close:function(t){var e=this.getItemBy(t);e.$parent.hasClass("active")&&(this.callback("close",e),this.removeActive(e),this.pushStateClose(),this.callback("closed",e))},pushStateClose:function(){this.opts.hash!==!1&&history.pushState(!1,!1," ")},closeAll:function(){this.$tabs.removeClass("open").addClass("hide"),this.$items.parent().removeClass("active")},getItem:function(t){var e={};return e.$el=$(t),e.hash=e.$el.attr("href"),e.$parent=e.$el.parent(),e.$tab=$(e.hash),e},getItemBy:function(t){var e="number"==typeof t?this.$items.eq(t-1):this.$element.find('[rel="'+t+'"]');return this.getItem(e)},getLocationHash:function(){return this.opts.hash===!1?!1:this.isHash()?top.location.hash:!1},isHash:function(){return!(""===top.location.hash||-1===$.inArray(top.location.hash,this.hashesCollection))},setItemHeight:function(){if(this.opts.equals){var t=this.getItemMaxHeight()+"px";this.$tabs.css("min-height",t)}},getItemMaxHeight:function(){var t=0;return this.$tabs.each(function(){var e=$(this).height();t=e>t?e:t}),t}},t.Tabs.inherits(t),t.Plugin.create("Tabs"),t.Plugin.autoload("Tabs")}(Kube),function(t){t.modalcurrent=null,t.modalwindow=function(e){var s=t.extend({},e,{show:!0}),i=t("");i.modal(s)}}(jQuery),function(t){t.Modal=function(e,s){this.namespace="modal",this.defaults={target:null,show:!1,url:!1,header:!1,width:"600px",height:!1,maxHeight:!1,position:"center",overlay:!0,appendForms:!1,appendFields:!1,animationOpen:"show",animationClose:"hide",callbacks:["open","opened","close","closed"]},t.apply(this,arguments),this.utils=new t.Utils,this.detect=new t.Detect,this.start()},t.Modal.prototype={start:function(){this.hasTarget()&&(this.opts.show?this.load():this.$element.on("click."+this.namespace,$.proxy(this.load,this)))},buildModal:function(){this.$modal=this.$target.find(".modal"),this.$header=this.$target.find(".modal-header"),this.$close=this.$target.find(".close"),this.$body=this.$target.find(".modal-body")},buildOverlay:function(){this.opts.overlay!==!1&&(0!==$("#modal-overlay").length?this.$overlay=$("#modal-overlay"):(this.$overlay=$('