├── .gitignore ├── .idea ├── .gitignore ├── .name ├── compiler.xml ├── deploymentTargetDropDown.xml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml └── other.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── blogspot │ │ └── boltuix │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── 404.html │ │ ├── about.html │ │ ├── activity.html │ │ ├── article.html │ │ ├── blank.html │ │ ├── blog-masonry.html │ │ ├── blog.html │ │ ├── calendar.html │ │ ├── category.html │ │ ├── chart.html │ │ ├── chat.html │ │ ├── checkout.html │ │ ├── coming-soon.html │ │ ├── contact.html │ │ ├── css │ │ │ ├── animate.css │ │ │ ├── ionicons.min.css │ │ │ ├── main.css │ │ │ ├── materialize.min.css │ │ │ ├── normalize.css │ │ │ ├── swipebox.min.css │ │ │ └── swiper.min.css │ │ ├── dual-sidebar.html │ │ ├── error.html │ │ ├── error2.html │ │ ├── event.html │ │ ├── faq.html │ │ ├── favicon.ico │ │ ├── fonts │ │ │ ├── ionicons │ │ │ │ ├── ionicons.eot │ │ │ │ ├── ionicons.svg │ │ │ │ ├── ionicons.ttf │ │ │ │ └── ionicons.woff │ │ │ └── roboto │ │ │ │ ├── Roboto-Bold.eot │ │ │ │ ├── Roboto-Bold.ttf │ │ │ │ ├── Roboto-Bold.woff │ │ │ │ ├── Roboto-Bold.woff2 │ │ │ │ ├── Roboto-Light.eot │ │ │ │ ├── Roboto-Light.ttf │ │ │ │ ├── Roboto-Light.woff │ │ │ │ ├── Roboto-Light.woff2 │ │ │ │ ├── Roboto-Medium.eot │ │ │ │ ├── Roboto-Medium.ttf │ │ │ │ ├── Roboto-Medium.woff │ │ │ │ ├── Roboto-Medium.woff2 │ │ │ │ ├── Roboto-Regular.eot │ │ │ │ ├── Roboto-Regular.ttf │ │ │ │ ├── Roboto-Regular.woff │ │ │ │ ├── Roboto-Regular.woff2 │ │ │ │ ├── Roboto-Thin.eot │ │ │ │ ├── Roboto-Thin.ttf │ │ │ │ ├── Roboto-Thin.woff │ │ │ │ └── Roboto-Thin.woff2 │ │ ├── forgot.html │ │ ├── gallery-card.html │ │ ├── gallery-filter.html │ │ ├── gallery-masonry.html │ │ ├── img │ │ │ ├── 1.jpg │ │ │ ├── 10.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ ├── 6.jpg │ │ │ ├── 7.jpg │ │ │ ├── 8.jpg │ │ │ ├── 9.jpg │ │ │ ├── banner.jpg │ │ │ ├── banner1.jpg │ │ │ ├── banner2.jpg │ │ │ ├── banner3.jpg │ │ │ ├── banner4.jpg │ │ │ ├── big_buck_bunny.mp4 │ │ │ ├── blog.png │ │ │ ├── blur.jpg │ │ │ ├── code.png │ │ │ ├── default-skin.png │ │ │ ├── default-skin.svg │ │ │ ├── featured.png │ │ │ ├── icons.png │ │ │ ├── icons.svg │ │ │ ├── loader.gif │ │ │ ├── material.jpg │ │ │ ├── opacity.jpg │ │ │ ├── palette.png │ │ │ ├── player.jpg │ │ │ ├── preloader.gif │ │ │ ├── product.jpg │ │ │ ├── product2.jpg │ │ │ ├── product3.jpg │ │ │ ├── product4.jpg │ │ │ ├── project.jpg │ │ │ ├── shop.jpg │ │ │ ├── startup │ │ │ │ ├── startup-retina-4in.png │ │ │ │ ├── startup-retina.png │ │ │ │ ├── startup-tablet-landscape-retina.png │ │ │ │ ├── startup-tablet-landscape.png │ │ │ │ ├── startup-tablet-portrait-retina.png │ │ │ │ ├── startup-tablet-portrait.png │ │ │ │ └── startup.png │ │ │ ├── support.png │ │ │ ├── touch │ │ │ │ ├── apple-touch-icon-114x114-precomposed.png │ │ │ │ ├── apple-touch-icon-144x144-precomposed.png │ │ │ │ ├── apple-touch-icon-57x57-precomposed.png │ │ │ │ ├── apple-touch-icon-72x72-precomposed.png │ │ │ │ ├── apple-touch-icon-precomposed.png │ │ │ │ ├── apple-touch-icon.png │ │ │ │ ├── touch-icon-128x128.png │ │ │ │ ├── touch-icon-196x196.png │ │ │ │ └── touch-icon-60x60.png │ │ │ ├── user.jpg │ │ │ ├── user2.jpg │ │ │ ├── user3.jpg │ │ │ ├── user4.jpg │ │ │ ├── user5.jpg │ │ │ ├── user6.jpg │ │ │ ├── user7.jpg │ │ │ ├── user8.jpg │ │ │ ├── v1.jpg │ │ │ ├── v2.jpg │ │ │ ├── v3.jpg │ │ │ ├── v4.jpg │ │ │ ├── v5 copia.jpg │ │ │ ├── v5.jpg │ │ │ └── v6.jpg │ │ ├── index-drawer.html │ │ ├── index-sliced.html │ │ ├── index-slider.html │ │ ├── index-walkthrough.html │ │ ├── index.html │ │ ├── js │ │ │ ├── helper.js │ │ │ ├── main.js │ │ │ └── vendor │ │ │ │ ├── HeadsUp.js │ │ │ │ ├── chart.min.js │ │ │ │ ├── jquery-2.1.0.min.js │ │ │ │ ├── jquery.mixitup.min.js │ │ │ │ ├── jquery.smoothState.js │ │ │ │ ├── jquery.swipebox.min.js │ │ │ │ ├── masonry.min.js │ │ │ │ ├── materialize.min.js │ │ │ │ ├── modernizr-2.7.1.min.js │ │ │ │ └── swiper.min.js │ │ ├── left-sidebar.html │ │ ├── lockscreen.html │ │ ├── login.html │ │ ├── material.html │ │ ├── news.html │ │ ├── player.html │ │ ├── portfolio-card.html │ │ ├── portfolio-filter.html │ │ ├── portfolio-masonry.html │ │ ├── product.html │ │ ├── profile.html │ │ ├── project.html │ │ ├── right-sidebar.html │ │ ├── search.html │ │ ├── shop.html │ │ ├── signup.html │ │ ├── timeline.html │ │ └── todo.html │ ├── ic_launcher-playstore.png │ ├── java │ │ └── com │ │ │ └── blogspot │ │ │ └── boltuix │ │ │ ├── BoltWebViewClient.kt │ │ │ ├── InfoDialog.kt │ │ │ ├── MainActivity.kt │ │ │ └── ui │ │ │ └── theme │ │ │ ├── Color.kt │ │ │ ├── Theme.kt │ │ │ └── Type.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── logo.png │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── raw │ │ └── adblockserverlist.txt │ │ ├── values │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── blogspot │ └── boltuix │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.aar 4 | *.ap_ 5 | *.aab 6 | 7 | # Files for the ART/Dalvik VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # Generated files 14 | bin/ 15 | gen/ 16 | out/ 17 | # Uncomment the following line in case you need and you don't have the release build type files in your app 18 | # release/ 19 | 20 | # Gradle files 21 | .gradle/ 22 | build/ 23 | 24 | # Local configuration file (sdk path, etc) 25 | local.properties 26 | 27 | # Proguard folder generated by Eclipse 28 | proguard/ 29 | 30 | # Log Files 31 | *.log 32 | 33 | # Android Studio Navigation editor temp files 34 | .navigation/ 35 | 36 | # Android Studio captures folder 37 | captures/ 38 | 39 | # IntelliJ 40 | *.iml 41 | .idea/workspace.xml 42 | .idea/tasks.xml 43 | .idea/gradle.xml 44 | .idea/assetWizardSettings.xml 45 | .idea/dictionaries 46 | .idea/libraries 47 | # Android Studio 3 in .gitignore file. 48 | .idea/caches 49 | .idea/modules.xml 50 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 51 | .idea/navEditor.xml 52 | 53 | # Keystore files 54 | # Uncomment the following lines if you do not want to check your keystore files in. 55 | #*.jks 56 | #*.keystore 57 | 58 | # External native build folder generated in Android Studio 2.2 and later 59 | .externalNativeBuild 60 | .cxx/ 61 | 62 | # Google Services (e.g. APIs or Firebase) 63 | # google-services.json 64 | 65 | # Freeline 66 | freeline.py 67 | freeline/ 68 | freeline_project_description.json 69 | 70 | # fastlane 71 | fastlane/report.xml 72 | fastlane/Preview.html 73 | fastlane/screenshots 74 | fastlane/test_output 75 | fastlane/readme.md 76 | 77 | # Version control 78 | vcs.xml 79 | 80 | # lint 81 | lint/intermediates/ 82 | lint/generated/ 83 | lint/outputs/ 84 | lint/tmp/ 85 | # lint/reports/ 86 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Webview -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 29 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/other.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Web-view-jetpack-compose-2022 2 | Compose WebView Part 12 | No internet screen 3 | Compose 4 | https://www.boltuix.com/2022/07/compose-webview-part-12-no-internet.html 5 | 6 | Compose WebView Part 11 | Webpage not available 7 | Compose 8 | https://www.boltuix.com/2022/07/compose-webview-part-11-webpage-not.html 9 | 10 | Compose WebView Part 10 | Show Loader 11 | Compose 12 | https://www.boltuix.com/2022/07/compose-webview-part-10-show-loader.html 13 | 14 | Compose WebView Part 9 | Removes or Stop Ad in web 15 | https://www.boltuix.com/2022/07/compose-webview-part-9-removes-or-stop.html 16 | Compose 17 | 18 | Compose WebView Part 8 | Navigation Go To Previous Page 19 | https://www.boltuix.com/2022/07/compose-webview-part-8-navigation-go-to.html 20 | Compose 21 | 22 | Compose WebView Part 7 | Hide elements from web view 23 | https://www.boltuix.com/2022/07/compose-webview-part-7-hide-elements.html 24 | Compose 25 | 26 | Compose WebView Part 6 | Bind JavaScript code to Android code 27 | https://www.boltuix.com/2022/07/compose-webview-part-6-bind-javascript.html 28 | Compose 29 | 30 | Compose WebView Part 5 | Should Override URL Loading 31 | https://www.boltuix.com/2022/07/compose-webview-part-5-should-override.html 32 | Compose 33 | 34 | Compose WebView Part 4 | OFFLINE 35 | https://www.boltuix.com/2022/07/compose-webview-part-4-offline.html 36 | Compose 37 | 38 | Compose WebView Part 3 | Handle configuration changes 39 | https://www.boltuix.com/2022/07/compose-webview-part-3-handle.html 40 | Compose 41 | 42 | Compose WebView Part 2 Play Video | JS setting 43 | https://www.boltuix.com/2022/07/compose-webview-part-2-play-video.html 44 | Compose 45 | 46 | Compose WebView Part 1 Load URL 47 | https://www.boltuix.com/2022/07/compose-webview-part-1-load-url.html 48 | Compose 49 | 50 | by www.boltuix.com -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.application' 3 | id 'org.jetbrains.kotlin.android' 4 | } 5 | 6 | android { 7 | namespace 'com.blogspot.boltuix' 8 | compileSdk 33 9 | 10 | defaultConfig { 11 | applicationId "com.blogspot.boltuix" 12 | minSdk 24 13 | targetSdk 33 14 | versionCode 1 15 | versionName "1.0" 16 | 17 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 18 | vectorDrawables { 19 | useSupportLibrary true 20 | } 21 | } 22 | 23 | buildTypes { 24 | release { 25 | minifyEnabled false 26 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 27 | } 28 | } 29 | compileOptions { 30 | sourceCompatibility JavaVersion.VERSION_1_8 31 | targetCompatibility JavaVersion.VERSION_1_8 32 | } 33 | kotlinOptions { 34 | jvmTarget = '1.8' 35 | } 36 | buildFeatures { 37 | compose true 38 | } 39 | composeOptions { 40 | kotlinCompilerExtensionVersion '1.2.0-beta01' 41 | } 42 | packagingOptions { 43 | resources { 44 | excludes += '/META-INF/{AL2.0,LGPL2.1}' 45 | } 46 | } 47 | buildToolsVersion '33.0.0' 48 | } 49 | 50 | dependencies { 51 | 52 | implementation 'androidx.core:core-ktx:1.9.0' 53 | implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' 54 | implementation 'androidx.activity:activity-compose:1.6.0' 55 | implementation 'androidx.compose.ui:ui:1.3.0-beta03' 56 | implementation 'androidx.compose.ui:ui-tooling-preview:1.3.0-beta03' 57 | implementation 'androidx.compose.material3:material3:1.0.0-beta03' 58 | implementation 'androidx.webkit:webkit:1.5.0' 59 | implementation 'androidx.appcompat:appcompat:1.5.1' 60 | testImplementation 'junit:junit:4.13.2' 61 | androidTestImplementation 'androidx.test.ext:junit:1.1.3' 62 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' 63 | androidTestImplementation 'androidx.compose.ui:ui-test-junit4:1.3.0-beta03' 64 | debugImplementation 'androidx.compose.ui:ui-tooling:1.3.0-beta03' 65 | debugImplementation 'androidx.compose.ui:ui-test-manifest:1.3.0-beta03' 66 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/androidTest/java/com/blogspot/boltuix/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.blogspot.boltuix 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.blogspot.boltuix", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/assets/blank.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BoltUIX - Material Design Mobile Template 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 |
58 | 59 | 60 |
61 |
62 | 63 |
64 |

BoltUIX

65 |
66 | 67 |
68 |
69 | 70 | 71 | 72 |
73 | 74 | 75 | 76 |
77 | 78 | 79 | 80 | 81 | 219 | 220 | 221 | 377 | 378 | 379 |
380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | -------------------------------------------------------------------------------- /app/src/main/assets/css/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.0 | MIT License | git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined in IE 8/9. 28 | */ 29 | 30 | article, 31 | aside, 32 | details, 33 | figcaption, 34 | figure, 35 | footer, 36 | header, 37 | hgroup, 38 | main, 39 | nav, 40 | section, 41 | summary { 42 | display: block; 43 | } 44 | 45 | /** 46 | * 1. Correct `inline-block` display not defined in IE 8/9. 47 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 48 | */ 49 | 50 | audio, 51 | canvas, 52 | progress, 53 | video { 54 | display: inline-block; /* 1 */ 55 | vertical-align: baseline; /* 2 */ 56 | } 57 | 58 | /** 59 | * Prevent modern browsers from displaying `audio` without controls. 60 | * Remove excess height in iOS 5 devices. 61 | */ 62 | 63 | audio:not([controls]) { 64 | display: none; 65 | height: 0; 66 | } 67 | 68 | /** 69 | * Address `[hidden]` styling not present in IE 8/9. 70 | * Hide the `template` element in IE, Safari, and Firefox < 22. 71 | */ 72 | 73 | [hidden], 74 | template { 75 | display: none; 76 | } 77 | 78 | /* Links 79 | ========================================================================== */ 80 | 81 | /** 82 | * Remove the gray background color from active links in IE 10. 83 | */ 84 | 85 | a { 86 | background: transparent; 87 | } 88 | 89 | /** 90 | * Improve readability when focused and also mouse hovered in all browsers. 91 | */ 92 | 93 | a:active, 94 | a:hover { 95 | outline: 0; 96 | } 97 | 98 | /* Text-level semantics 99 | ========================================================================== */ 100 | 101 | /** 102 | * Address styling not present in IE 8/9, Safari 5, and Chrome. 103 | */ 104 | 105 | abbr[title] { 106 | border-bottom: 1px dotted; 107 | } 108 | 109 | /** 110 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 111 | */ 112 | 113 | b, 114 | strong { 115 | font-weight: bold; 116 | } 117 | 118 | /** 119 | * Address styling not present in Safari 5 and Chrome. 120 | */ 121 | 122 | dfn { 123 | font-style: italic; 124 | } 125 | 126 | /** 127 | * Address variable `h1` font-size and margin within `section` and `article` 128 | * contexts in Firefox 4+, Safari 5, and Chrome. 129 | */ 130 | 131 | h1 { 132 | font-size: 2em; 133 | margin: 0.67em 0; 134 | } 135 | 136 | /** 137 | * Address styling not present in IE 8/9. 138 | */ 139 | 140 | mark { 141 | background: #ff0; 142 | color: #000; 143 | } 144 | 145 | /** 146 | * Address inconsistent and variable font size in all browsers. 147 | */ 148 | 149 | small { 150 | font-size: 80%; 151 | } 152 | 153 | /** 154 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 155 | */ 156 | 157 | sub, 158 | sup { 159 | font-size: 75%; 160 | line-height: 0; 161 | position: relative; 162 | vertical-align: baseline; 163 | } 164 | 165 | sup { 166 | top: -0.5em; 167 | } 168 | 169 | sub { 170 | bottom: -0.25em; 171 | } 172 | 173 | /* Embedded content 174 | ========================================================================== */ 175 | 176 | /** 177 | * Remove border when inside `a` element in IE 8/9. 178 | */ 179 | 180 | img { 181 | border: 0; 182 | } 183 | 184 | /** 185 | * Correct overflow displayed oddly in IE 9. 186 | */ 187 | 188 | svg:not(:root) { 189 | overflow: hidden; 190 | } 191 | 192 | /* Grouping content 193 | ========================================================================== */ 194 | 195 | /** 196 | * Address margin not present in IE 8/9 and Safari 5. 197 | */ 198 | 199 | figure { 200 | margin: 1em 40px; 201 | } 202 | 203 | /** 204 | * Address differences between Firefox and other browsers. 205 | */ 206 | 207 | hr { 208 | -moz-box-sizing: content-box; 209 | box-sizing: content-box; 210 | height: 0; 211 | } 212 | 213 | /** 214 | * Contain overflow in all browsers. 215 | */ 216 | 217 | pre { 218 | overflow: auto; 219 | } 220 | 221 | /** 222 | * Address odd `em`-unit font size rendering in all browsers. 223 | */ 224 | 225 | code, 226 | kbd, 227 | pre, 228 | samp { 229 | font-family: monospace, monospace; 230 | font-size: 1em; 231 | } 232 | 233 | /* Forms 234 | ========================================================================== */ 235 | 236 | /** 237 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 238 | * styling of `select`, unless a `border` property is set. 239 | */ 240 | 241 | /** 242 | * 1. Correct color not being inherited. 243 | * Known issue: affects color of disabled elements. 244 | * 2. Correct font properties not being inherited. 245 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. 246 | */ 247 | 248 | button, 249 | input, 250 | optgroup, 251 | select, 252 | textarea { 253 | color: inherit; /* 1 */ 254 | font: inherit; /* 2 */ 255 | margin: 0; /* 3 */ 256 | } 257 | 258 | /** 259 | * Address `overflow` set to `hidden` in IE 8/9/10. 260 | */ 261 | 262 | button { 263 | overflow: visible; 264 | } 265 | 266 | /** 267 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 268 | * All other form control elements do not inherit `text-transform` values. 269 | * Correct `button` style inheritance in Firefox, IE 8+, and Opera 270 | * Correct `select` style inheritance in Firefox. 271 | */ 272 | 273 | button, 274 | select { 275 | text-transform: none; 276 | } 277 | 278 | /** 279 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 280 | * and `video` controls. 281 | * 2. Correct inability to style clickable `input` types in iOS. 282 | * 3. Improve usability and consistency of cursor style between image-type 283 | * `input` and others. 284 | */ 285 | 286 | button, 287 | html input[type="button"], /* 1 */ 288 | input[type="reset"], 289 | input[type="submit"] { 290 | -webkit-appearance: button; /* 2 */ 291 | cursor: pointer; /* 3 */ 292 | } 293 | 294 | /** 295 | * Re-set default cursor for disabled elements. 296 | */ 297 | 298 | button[disabled], 299 | html input[disabled] { 300 | cursor: default; 301 | } 302 | 303 | /** 304 | * Remove inner padding and border in Firefox 4+. 305 | */ 306 | 307 | button::-moz-focus-inner, 308 | input::-moz-focus-inner { 309 | border: 0; 310 | padding: 0; 311 | } 312 | 313 | /** 314 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 315 | * the UA stylesheet. 316 | */ 317 | 318 | input { 319 | line-height: normal; 320 | } 321 | 322 | /** 323 | * It's recommended that you don't attempt to style these elements. 324 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 325 | * 326 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 327 | * 2. Remove excess padding in IE 8/9/10. 328 | */ 329 | 330 | input[type="checkbox"], 331 | input[type="radio"] { 332 | box-sizing: border-box; /* 1 */ 333 | padding: 0; /* 2 */ 334 | } 335 | 336 | /** 337 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 338 | * `font-size` values of the `input`, it causes the cursor style of the 339 | * decrement button to change from `default` to `text`. 340 | */ 341 | 342 | input[type="number"]::-webkit-inner-spin-button, 343 | input[type="number"]::-webkit-outer-spin-button { 344 | height: auto; 345 | } 346 | 347 | /** 348 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 349 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome 350 | * (include `-moz` to future-proof). 351 | */ 352 | 353 | input[type="search"] { 354 | -webkit-appearance: textfield; /* 1 */ 355 | -moz-box-sizing: content-box; 356 | -webkit-box-sizing: content-box; /* 2 */ 357 | box-sizing: content-box; 358 | } 359 | 360 | /** 361 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 362 | * Safari (but not Chrome) clips the cancel button when the search input has 363 | * padding (and `textfield` appearance). 364 | */ 365 | 366 | input[type="search"]::-webkit-search-cancel-button, 367 | input[type="search"]::-webkit-search-decoration { 368 | -webkit-appearance: none; 369 | } 370 | 371 | /** 372 | * Define consistent border, margin, and padding. 373 | */ 374 | 375 | fieldset { 376 | border: 1px solid #c0c0c0; 377 | margin: 0 2px; 378 | padding: 0.35em 0.625em 0.75em; 379 | } 380 | 381 | /** 382 | * 1. Correct `color` not being inherited in IE 8/9. 383 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 384 | */ 385 | 386 | legend { 387 | border: 0; /* 1 */ 388 | padding: 0; /* 2 */ 389 | } 390 | 391 | /** 392 | * Remove default vertical scrollbar in IE 8/9. 393 | */ 394 | 395 | textarea { 396 | overflow: auto; 397 | } 398 | 399 | /** 400 | * Don't inherit the `font-weight` (applied by a rule above). 401 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 402 | */ 403 | 404 | optgroup { 405 | font-weight: bold; 406 | } 407 | 408 | /* Tables 409 | ========================================================================== */ 410 | 411 | /** 412 | * Remove most spacing between table cells. 413 | */ 414 | 415 | table { 416 | border-collapse: collapse; 417 | border-spacing: 0; 418 | } 419 | 420 | td, 421 | th { 422 | padding: 0; 423 | } 424 | -------------------------------------------------------------------------------- /app/src/main/assets/css/swipebox.min.css: -------------------------------------------------------------------------------- 1 | /*! Swipebox v1.3.0 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */html.swipebox-html.swipebox-touch{overflow:hidden!important}#swipebox-overlay img{border:none!important}#swipebox-overlay{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999!important;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#swipebox-container{position:relative;width:100%;height:100%}#swipebox-slider{-webkit-transition:-webkit-transform .4s ease;transition:transform .4s ease;height:100%;left:0;top:0;width:100%;white-space:nowrap;position:absolute;display:none;cursor:pointer}#swipebox-slider .slide{height:100%;width:100%;line-height:1px;text-align:center;display:inline-block}#swipebox-slider .slide:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#swipebox-slider .slide .swipebox-inline-container,#swipebox-slider .slide .swipebox-video-container,#swipebox-slider .slide img{display:inline-block;max-height:100%;max-width:100%;margin:0;padding:0;width:auto;height:auto;vertical-align:middle}#swipebox-slider .slide .swipebox-video-container{background:0 0;max-width:1140px;max-height:100%;width:100%;padding:5%;-webkit-box-sizing:border-box;box-sizing:border-box}#swipebox-slider .slide .swipebox-video-container .swipebox-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}#swipebox-slider .slide .swipebox-video-container .swipebox-video iframe{width:100%!important;height:100%!important;position:absolute;top:0;left:0}#swipebox-slider .slide-loading{background:url(../img/loader.gif) center center no-repeat}#swipebox-bottom-bar,#swipebox-top-bar{-webkit-transition:.5s;transition:.5s;position:absolute;left:0;z-index:999;height:50px;width:100%}#swipebox-bottom-bar{bottom:-50px}#swipebox-bottom-bar.visible-bars{-webkit-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0)}#swipebox-top-bar{top:-50px}#swipebox-top-bar.visible-bars{-webkit-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0)}#swipebox-title{display:block;width:100%;text-align:center}#swipebox-close,#swipebox-next,#swipebox-prev{background-image:url(../img/icons.png);background-repeat:no-repeat;border:none!important;text-decoration:none!important;cursor:pointer;width:50px;height:50px;top:0}#swipebox-arrows{display:block;margin:0 auto;width:100%;height:50px}#swipebox-prev{background-position:-32px 13px;float:left}#swipebox-next{background-position:-78px 13px;float:right}#swipebox-close{top:0;right:0;position:absolute;z-index:9999;background-position:15px 12px}.swipebox-no-close-button #swipebox-close{display:none}#swipebox-next.disabled,#swipebox-prev.disabled{opacity:.3}.swipebox-no-touch #swipebox-overlay.rightSpring #swipebox-slider{-webkit-animation:rightSpring .3s;animation:rightSpring .3s}.swipebox-no-touch #swipebox-overlay.leftSpring #swipebox-slider{-webkit-animation:leftSpring .3s;animation:leftSpring .3s}.swipebox-touch #swipebox-container:after,.swipebox-touch #swipebox-container:before{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;content:' ';position:absolute;z-index:999;top:0;height:100%;width:20px;opacity:0}.swipebox-touch #swipebox-container:before{left:0;-webkit-box-shadow:inset 10px 0 10px -8px #656565;box-shadow:inset 10px 0 10px -8px #656565}.swipebox-touch #swipebox-container:after{right:0;-webkit-box-shadow:inset -10px 0 10px -8px #656565;box-shadow:inset -10px 0 10px -8px #656565}.swipebox-touch #swipebox-overlay.leftSpringTouch #swipebox-container:before,.swipebox-touch #swipebox-overlay.rightSpringTouch #swipebox-container:after{opacity:1}@-webkit-keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@media screen and (min-width:800px){#swipebox-close{right:10px}#swipebox-arrows{width:92%;max-width:800px}}#swipebox-overlay{background:#0d0d0d}#swipebox-bottom-bar,#swipebox-top-bar{text-shadow:1px 1px 1px #000;background:#000;opacity:.95}#swipebox-top-bar{color:#fff!important;font-size:15px;line-height:43px;font-family:Helvetica,Arial,sans-serif} -------------------------------------------------------------------------------- /app/src/main/assets/css/swiper.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 3.3.1 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * 5 | * http://www.idangero.us/swiper/ 6 | * 7 | * Copyright 2016, Vladimir Kharlampidi 8 | * The iDangero.us 9 | * http://www.idangero.us/ 10 | * 11 | * Licensed under MIT 12 | * 13 | * Released on: February 7, 2016 14 | */ 15 | .swiper-container{margin:0 auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate(0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex:0 0 auto;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform,height}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;-moz-background-size:27px 44px;-webkit-background-size:27px 44px;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-o-transform:translate(0,-50%);-ms-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:rgba(255,255,255,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;-moz-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-moz-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;-moz-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;-webkit-background-size:100%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} -------------------------------------------------------------------------------- /app/src/main/assets/error2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | No Connection 8 | 9 | 10 | 95 | 96 | 97 |

No Connection :(

98 |

Check your WiFi or Mobile Internet!

99 |
100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /app/src/main/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/favicon.ico -------------------------------------------------------------------------------- /app/src/main/assets/fonts/ionicons/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/ionicons/ionicons.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/ionicons/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/ionicons/ionicons.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/ionicons/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/ionicons/ionicons.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Bold.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Bold.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Bold.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Bold.woff2 -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Light.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Light.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Light.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Light.woff2 -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Medium.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Medium.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Medium.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Medium.woff2 -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Regular.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Regular.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Regular.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Regular.woff2 -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Thin.eot -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Thin.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Thin.woff -------------------------------------------------------------------------------- /app/src/main/assets/fonts/roboto/Roboto-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/fonts/roboto/Roboto-Thin.woff2 -------------------------------------------------------------------------------- /app/src/main/assets/img/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/1.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/10.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/3.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/4.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/5.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/6.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/7.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/8.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/9.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/banner.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/banner1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/banner1.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/banner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/banner2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/banner3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/banner3.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/banner4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/banner4.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/big_buck_bunny.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/big_buck_bunny.mp4 -------------------------------------------------------------------------------- /app/src/main/assets/img/blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/blog.png -------------------------------------------------------------------------------- /app/src/main/assets/img/blur.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/blur.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/code.png -------------------------------------------------------------------------------- /app/src/main/assets/img/default-skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/default-skin.png -------------------------------------------------------------------------------- /app/src/main/assets/img/default-skin.svg: -------------------------------------------------------------------------------- 1 | default-skin 2 -------------------------------------------------------------------------------- /app/src/main/assets/img/featured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/featured.png -------------------------------------------------------------------------------- /app/src/main/assets/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/icons.png -------------------------------------------------------------------------------- /app/src/main/assets/img/icons.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/assets/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/loader.gif -------------------------------------------------------------------------------- /app/src/main/assets/img/material.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/material.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/opacity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/opacity.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/palette.png -------------------------------------------------------------------------------- /app/src/main/assets/img/player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/player.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/preloader.gif -------------------------------------------------------------------------------- /app/src/main/assets/img/product.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/product.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/product2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/product2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/product3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/product3.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/product4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/product4.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/project.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/project.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/shop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/shop.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-retina-4in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-retina-4in.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-retina.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-tablet-landscape-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-tablet-landscape-retina.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-tablet-landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-tablet-landscape.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-tablet-portrait-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-tablet-portrait-retina.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup-tablet-portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup-tablet-portrait.png -------------------------------------------------------------------------------- /app/src/main/assets/img/startup/startup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/startup/startup.png -------------------------------------------------------------------------------- /app/src/main/assets/img/support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/support.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon-114x114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon-114x114-precomposed.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon-144x144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon-144x144-precomposed.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon-57x57-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon-57x57-precomposed.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon-72x72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon-72x72-precomposed.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/apple-touch-icon.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/touch-icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/touch-icon-128x128.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/touch-icon-196x196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/touch-icon-196x196.png -------------------------------------------------------------------------------- /app/src/main/assets/img/touch/touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/touch/touch-icon-60x60.png -------------------------------------------------------------------------------- /app/src/main/assets/img/user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user3.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user4.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user5.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user6.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user7.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/user8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/user8.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v1.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v2.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v3.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v4.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v5 copia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v5 copia.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v5.jpg -------------------------------------------------------------------------------- /app/src/main/assets/img/v6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/assets/img/v6.jpg -------------------------------------------------------------------------------- /app/src/main/assets/js/helper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * MBP - Mobile boilerplate helper functions 3 | */ 4 | 5 | (function(document) { 6 | 7 | window.MBP = window.MBP || {}; 8 | 9 | /** 10 | * Fix for iPhone viewport scale bug 11 | * http://www.blog.highub.com/mobile-2/a-fix-for-iphone-viewport-scale-bug/ 12 | */ 13 | 14 | MBP.viewportmeta = document.querySelector && document.querySelector('meta[name="viewport"]'); 15 | MBP.ua = navigator.userAgent; 16 | 17 | MBP.scaleFix = function() { 18 | if (MBP.viewportmeta && /iPhone|iPad|iPod/.test(MBP.ua) && !/Opera Mini/.test(MBP.ua)) { 19 | MBP.viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0'; 20 | document.addEventListener('gesturestart', MBP.gestureStart, false); 21 | } 22 | }; 23 | 24 | MBP.gestureStart = function() { 25 | MBP.viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6'; 26 | }; 27 | 28 | /** 29 | * Normalized hide address bar for iOS & Android 30 | * (c) Scott Jehl, scottjehl.com 31 | * MIT License 32 | */ 33 | 34 | // If we split this up into two functions we can reuse 35 | // this function if we aren't doing full page reloads. 36 | 37 | // If we cache this we don't need to re-calibrate everytime we call 38 | // the hide url bar 39 | MBP.BODY_SCROLL_TOP = false; 40 | 41 | // So we don't redefine this function everytime we 42 | // we call hideUrlBar 43 | MBP.getScrollTop = function() { 44 | var win = window; 45 | var doc = document; 46 | 47 | return win.pageYOffset || doc.compatMode === 'CSS1Compat' && doc.documentElement.scrollTop || doc.body.scrollTop || 0; 48 | }; 49 | 50 | // It should be up to the mobile 51 | MBP.hideUrlBar = function() { 52 | var win = window; 53 | 54 | // if there is a hash, or MBP.BODY_SCROLL_TOP hasn't been set yet, wait till that happens 55 | if (!location.hash && MBP.BODY_SCROLL_TOP !== false) { 56 | win.scrollTo( 0, MBP.BODY_SCROLL_TOP === 1 ? 0 : 1 ); 57 | } 58 | }; 59 | 60 | MBP.hideUrlBarOnLoad = function() { 61 | var win = window; 62 | var doc = win.document; 63 | var bodycheck; 64 | 65 | // If there's a hash, or addEventListener is undefined, stop here 66 | if ( !win.navigator.standalone && !location.hash && win.addEventListener ) { 67 | 68 | // scroll to 1 69 | window.scrollTo( 0, 1 ); 70 | MBP.BODY_SCROLL_TOP = 1; 71 | 72 | // reset to 0 on bodyready, if needed 73 | bodycheck = setInterval(function() { 74 | if ( doc.body ) { 75 | clearInterval( bodycheck ); 76 | MBP.BODY_SCROLL_TOP = MBP.getScrollTop(); 77 | MBP.hideUrlBar(); 78 | } 79 | }, 15 ); 80 | 81 | win.addEventListener('load', function() { 82 | setTimeout(function() { 83 | // at load, if user hasn't scrolled more than 20 or so... 84 | if (MBP.getScrollTop() < 20) { 85 | // reset to hide addr bar at onload 86 | MBP.hideUrlBar(); 87 | } 88 | }, 0); 89 | }, false); 90 | } 91 | }; 92 | 93 | /** 94 | * Fast Buttons - read wiki below before using 95 | * https://github.com/h5bp/mobile-boilerplate/wiki/JavaScript-Helper 96 | */ 97 | 98 | MBP.fastButton = function(element, handler, pressedClass) { 99 | this.handler = handler; 100 | // styling of .pressed is defined in the project's CSS files 101 | this.pressedClass = typeof pressedClass === 'undefined' ? 'pressed' : pressedClass; 102 | 103 | MBP.listenForGhostClicks(); 104 | 105 | if (element.length && element.length > 1) { 106 | for (var singleElIdx in element) { 107 | this.addClickEvent(element[singleElIdx]); 108 | } 109 | } else { 110 | this.addClickEvent(element); 111 | } 112 | }; 113 | 114 | MBP.fastButton.prototype.handleEvent = function(event) { 115 | event = event || window.event; 116 | 117 | switch (event.type) { 118 | case 'touchstart': this.onTouchStart(event); break; 119 | case 'touchmove': this.onTouchMove(event); break; 120 | case 'touchend': this.onClick(event); break; 121 | case 'click': this.onClick(event); break; 122 | } 123 | }; 124 | 125 | MBP.fastButton.prototype.onTouchStart = function(event) { 126 | var element = event.target || event.srcElement; 127 | event.stopPropagation(); 128 | element.addEventListener('touchend', this, false); 129 | document.body.addEventListener('touchmove', this, false); 130 | this.startX = event.touches[0].clientX; 131 | this.startY = event.touches[0].clientY; 132 | 133 | element.className+= ' ' + this.pressedClass; 134 | }; 135 | 136 | MBP.fastButton.prototype.onTouchMove = function(event) { 137 | if (Math.abs(event.touches[0].clientX - this.startX) > 10 || 138 | Math.abs(event.touches[0].clientY - this.startY) > 10) { 139 | this.reset(event); 140 | } 141 | }; 142 | 143 | MBP.fastButton.prototype.onClick = function(event) { 144 | event = event || window.event; 145 | var element = event.target || event.srcElement; 146 | if (event.stopPropagation) { 147 | event.stopPropagation(); 148 | } 149 | this.reset(event); 150 | this.handler.apply(event.currentTarget, [event]); 151 | if (event.type == 'touchend') { 152 | MBP.preventGhostClick(this.startX, this.startY); 153 | } 154 | var pattern = new RegExp(' ?' + this.pressedClass, 'gi'); 155 | element.className = element.className.replace(pattern, ''); 156 | }; 157 | 158 | MBP.fastButton.prototype.reset = function(event) { 159 | var element = event.target || event.srcElement; 160 | rmEvt(element, 'touchend', this, false); 161 | rmEvt(document.body, 'touchmove', this, false); 162 | 163 | var pattern = new RegExp(' ?' + this.pressedClass, 'gi'); 164 | element.className = element.className.replace(pattern, ''); 165 | }; 166 | 167 | MBP.fastButton.prototype.addClickEvent = function(element) { 168 | addEvt(element, 'touchstart', this, false); 169 | addEvt(element, 'click', this, false); 170 | }; 171 | 172 | MBP.preventGhostClick = function(x, y) { 173 | MBP.coords.push(x, y); 174 | window.setTimeout(function() { 175 | MBP.coords.splice(0, 2); 176 | }, 2500); 177 | }; 178 | 179 | MBP.ghostClickHandler = function(event) { 180 | if (!MBP.hadTouchEvent && MBP.dodgyAndroid) { 181 | // This is a bit of fun for Android 2.3... 182 | // If you change window.location via fastButton, a click event will fire 183 | // on the new page, as if the events are continuing from the previous page. 184 | // We pick that event up here, but MBP.coords is empty, because it's a new page, 185 | // so we don't prevent it. Here's we're assuming that click events on touch devices 186 | // that occur without a preceding touchStart are to be ignored. 187 | event.stopPropagation(); 188 | event.preventDefault(); 189 | return; 190 | } 191 | for (var i = 0, len = MBP.coords.length; i < len; i += 2) { 192 | var x = MBP.coords[i]; 193 | var y = MBP.coords[i + 1]; 194 | if (Math.abs(event.clientX - x) < 25 && Math.abs(event.clientY - y) < 25) { 195 | event.stopPropagation(); 196 | event.preventDefault(); 197 | } 198 | } 199 | }; 200 | 201 | // This bug only affects touch Android 2.3 devices, but a simple ontouchstart test creates a false positive on 202 | // some Blackberry devices. https://github.com/Modernizr/Modernizr/issues/372 203 | // The browser sniffing is to avoid the Blackberry case. Bah 204 | MBP.dodgyAndroid = ('ontouchstart' in window) && (navigator.userAgent.indexOf('Android 2.3') != -1); 205 | 206 | MBP.listenForGhostClicks = (function() { 207 | var alreadyRan = false; 208 | 209 | return function() { 210 | if(alreadyRan) { 211 | return; 212 | } 213 | 214 | if (document.addEventListener) { 215 | document.addEventListener('click', MBP.ghostClickHandler, true); 216 | } 217 | addEvt(document.documentElement, 'touchstart', function() { 218 | MBP.hadTouchEvent = true; 219 | }, false); 220 | 221 | alreadyRan = true; 222 | }; 223 | })(); 224 | 225 | MBP.coords = []; 226 | 227 | // fn arg can be an object or a function, thanks to handleEvent 228 | // read more about the explanation at: http://www.thecssninja.com/javascript/handleevent 229 | function addEvt(el, evt, fn, bubble) { 230 | if ('addEventListener' in el) { 231 | // BBOS6 doesn't support handleEvent, catch and polyfill 232 | try { 233 | el.addEventListener(evt, fn, bubble); 234 | } catch(e) { 235 | if (typeof fn == 'object' && fn.handleEvent) { 236 | el.addEventListener(evt, function(e){ 237 | // Bind fn as this and set first arg as event object 238 | fn.handleEvent.call(fn,e); 239 | }, bubble); 240 | } else { 241 | throw e; 242 | } 243 | } 244 | } else if ('attachEvent' in el) { 245 | // check if the callback is an object and contains handleEvent 246 | if (typeof fn == 'object' && fn.handleEvent) { 247 | el.attachEvent('on' + evt, function(){ 248 | // Bind fn as this 249 | fn.handleEvent.call(fn); 250 | }); 251 | } else { 252 | el.attachEvent('on' + evt, fn); 253 | } 254 | } 255 | } 256 | 257 | function rmEvt(el, evt, fn, bubble) { 258 | if ('removeEventListener' in el) { 259 | // BBOS6 doesn't support handleEvent, catch and polyfill 260 | try { 261 | el.removeEventListener(evt, fn, bubble); 262 | } catch(e) { 263 | if (typeof fn == 'object' && fn.handleEvent) { 264 | el.removeEventListener(evt, function(e){ 265 | // Bind fn as this and set first arg as event object 266 | fn.handleEvent.call(fn,e); 267 | }, bubble); 268 | } else { 269 | throw e; 270 | } 271 | } 272 | } else if ('detachEvent' in el) { 273 | // check if the callback is an object and contains handleEvent 274 | if (typeof fn == 'object' && fn.handleEvent) { 275 | el.detachEvent("on" + evt, function() { 276 | // Bind fn as this 277 | fn.handleEvent.call(fn); 278 | }); 279 | } else { 280 | el.detachEvent('on' + evt, fn); 281 | } 282 | } 283 | } 284 | 285 | /** 286 | * Autogrow 287 | * http://googlecode.blogspot.com/2009/07/gmail-for-mobile-html5-series.html 288 | */ 289 | 290 | MBP.autogrow = function(element, lh) { 291 | function handler(e) { 292 | var newHeight = this.scrollHeight; 293 | var currentHeight = this.clientHeight; 294 | if (newHeight > currentHeight) { 295 | this.style.height = newHeight + 3 * textLineHeight + 'px'; 296 | } 297 | } 298 | 299 | var setLineHeight = (lh) ? lh : 12; 300 | var textLineHeight = element.currentStyle ? element.currentStyle.lineHeight : getComputedStyle(element, null).lineHeight; 301 | 302 | textLineHeight = (textLineHeight.indexOf('px') == -1) ? setLineHeight : parseInt(textLineHeight, 10); 303 | 304 | element.style.overflow = 'hidden'; 305 | element.addEventListener ? element.addEventListener('input', handler, false) : element.attachEvent('onpropertychange', handler); 306 | }; 307 | 308 | /** 309 | * Enable CSS active pseudo styles in Mobile Safari 310 | * http://alxgbsn.co.uk/2011/10/17/enable-css-active-pseudo-styles-in-mobile-safari/ 311 | */ 312 | 313 | MBP.enableActive = function() { 314 | document.addEventListener('touchstart', function() {}, false); 315 | }; 316 | 317 | /** 318 | * Prevent default scrolling on document window 319 | */ 320 | 321 | MBP.preventScrolling = function() { 322 | document.addEventListener('touchmove', function(e) { 323 | if (e.target.type === 'range') { return; } 324 | e.preventDefault(); 325 | }, false); 326 | }; 327 | 328 | /** 329 | * Prevent iOS from zooming onfocus 330 | * https://github.com/h5bp/mobile-boilerplate/pull/108 331 | * Adapted from original jQuery code here: http://nerd.vasilis.nl/prevent-ios-from-zooming-onfocus/ 332 | */ 333 | 334 | MBP.preventZoom = function() { 335 | if (MBP.viewportmeta && navigator.platform.match(/iPad|iPhone|iPod/i)) { 336 | var formFields = document.querySelectorAll('input, select, textarea'); 337 | var contentString = 'width=device-width,initial-scale=1,maximum-scale='; 338 | var i = 0; 339 | var fieldLength = formFields.length; 340 | 341 | var setViewportOnFocus = function() { 342 | MBP.viewportmeta.content = contentString + '1'; 343 | }; 344 | 345 | var setViewportOnBlur = function() { 346 | MBP.viewportmeta.content = contentString + '10'; 347 | }; 348 | 349 | for (; i < fieldLength; i++) { 350 | formFields[i].onfocus = setViewportOnFocus; 351 | formFields[i].onblur = setViewportOnBlur; 352 | } 353 | } 354 | }; 355 | 356 | /** 357 | * iOS Startup Image helper 358 | */ 359 | 360 | MBP.startupImage = function() { 361 | var portrait; 362 | var landscape; 363 | var pixelRatio; 364 | var head; 365 | var link1; 366 | var link2; 367 | 368 | pixelRatio = window.devicePixelRatio; 369 | head = document.getElementsByTagName('head')[0]; 370 | 371 | if (navigator.platform === 'iPad') { 372 | portrait = pixelRatio === 2 ? 'img/startup/startup-tablet-portrait-retina.png' : 'img/startup/startup-tablet-portrait.png'; 373 | landscape = pixelRatio === 2 ? 'img/startup/startup-tablet-landscape-retina.png' : 'img/startup/startup-tablet-landscape.png'; 374 | 375 | link1 = document.createElement('link'); 376 | link1.setAttribute('rel', 'apple-touch-startup-image'); 377 | link1.setAttribute('media', 'screen and (orientation: portrait)'); 378 | link1.setAttribute('href', portrait); 379 | head.appendChild(link1); 380 | 381 | link2 = document.createElement('link'); 382 | link2.setAttribute('rel', 'apple-touch-startup-image'); 383 | link2.setAttribute('media', 'screen and (orientation: landscape)'); 384 | link2.setAttribute('href', landscape); 385 | head.appendChild(link2); 386 | } else { 387 | portrait = pixelRatio === 2 ? "img/startup/startup-retina.png" : "img/startup/startup.png"; 388 | portrait = screen.height === 568 ? "img/startup/startup-retina-4in.png" : portrait; 389 | link1 = document.createElement('link'); 390 | link1.setAttribute('rel', 'apple-touch-startup-image'); 391 | link1.setAttribute('href', portrait); 392 | head.appendChild(link1); 393 | } 394 | 395 | //hack to fix letterboxed full screen web apps on 4" iPhone / iPod with iOS 6 396 | if (navigator.platform.match(/iPhone|iPod/i) && (screen.height === 568) && navigator.userAgent.match(/\bOS 6_/)) { 397 | if (MBP.viewportmeta) { 398 | MBP.viewportmeta.content = MBP.viewportmeta.content 399 | .replace(/\bwidth\s*=\s*320\b/, 'width=320.1') 400 | .replace(/\bwidth\s*=\s*device-width\b/, ''); 401 | } 402 | } 403 | }; 404 | 405 | })(document); 406 | -------------------------------------------------------------------------------- /app/src/main/assets/js/main.js: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------ 2 | Theme Name: BoltUIX 3 | Theme URL: http://www.boltuix.com.com 4 | Author: www.boltuix.com 5 | Version: 1.0 6 | Primary use: App & Mobile Website 7 | -------------------------------------------------------------------*/ 8 | 9 | // Adding strict mode 10 | "use strict"; 11 | 12 | // This script prevents links from opening in Mobile Safari. https://gist.github.com/1042026 13 | (function(a, b, c) { 14 | if (c in b && b[c]) { 15 | var d, e = a.location, 16 | f = /^(a|html)$/i; 17 | a.addEventListener("click", function(a) { 18 | d = a.target; 19 | while (!f.test(d.nodeName)) d = d.parentNode; 20 | "href" in d && (d.href.indexOf("http") || ~d.href.indexOf(e.host)) && (a.preventDefault(), e.href = d.href) 21 | }, !1) 22 | } 23 | })(document, window.navigator, "standalone") 24 | 25 | // Tabs 26 | $('ul.tabs').tabs(); 27 | 28 | // Modal 29 | $('.modal-trigger').leanModal(); 30 | 31 | // Accordion 32 | $('.collapsible').collapsible({ 33 | accordion: true 34 | }); 35 | 36 | // Drag 37 | $('.drag-target').remove(); 38 | 39 | // Right Sidebar 40 | $('#open-right').sideNav({ // Trigger id 41 | menuWidth: 280, // Default is 240 42 | edge: 'right', // Choose the horizontal origin 43 | closeOnClick: false // Closes side-nav on clicks, useful for Angular/Meteor 44 | }); 45 | 46 | // Left Sidebar 47 | $('#open-left').sideNav({ // Trigger id 48 | menuWidth: 280, // Default is 240 49 | edge: 'left', // Choose the horizontal origin 50 | closeOnClick: true // Closes side-nav on clicks, useful for Angular/Meteor 51 | }); 52 | 53 | // Swipebox 54 | $('.swipebox').swipebox(); 55 | 56 | // Masonry 57 | $('.grid').masonry({ 58 | itemSelector: '.grid-item' 59 | }); 60 | 61 | // Reinitialize masonry inside each panel after the relative tab link is clicked - 62 | $('.tab a').on('click', function() { 63 | // do async to allow menu to open 64 | setTimeout( function() { 65 | $('.grid').masonry({ 66 | itemSelector: '.grid-item' 67 | }, 1); 68 | }); 69 | }); 70 | 71 | // Material Layout 72 | $('.parallax').parallax(); 73 | $(function () { 74 | var hBanner = $('.hero-material').height(); 75 | var cbHeight = hBanner - 86; 76 | var hHeight = hBanner - 86; // for Title 77 | $(window).scroll(function () { 78 | var scroll = $(window).scrollTop(); 79 | if (scroll >= cbHeight) { 80 | $(".nav-material").addClass('nav-bg'); 81 | } 82 | if (scroll <= cbHeight) { 83 | $(".nav-material").removeClass('nav-bg'); 84 | } 85 | // For heading Title 86 | if (scroll >= hHeight) { 87 | $(".banner-title").hide(); 88 | $(".nav-material .title").show(); 89 | } 90 | if (scroll <= hHeight) { 91 | $(".banner-title").show(); 92 | $(".nav-material .title").hide(); 93 | } 94 | }); 95 | }); 96 | 97 | // Add Primary Color To Header After Scroll Down 98 | $(function() { 99 | //caches a jQuery object containing the header element 100 | var header = $("#toolbar.transparent"); 101 | $(window).scroll(function() { 102 | var scroll = $(window).scrollTop(); 103 | 104 | if (scroll >= 350) { 105 | header.removeClass('transparent').addClass("primary-color"); 106 | } else { 107 | header.removeClass("primary-color").addClass('transparent'); 108 | } 109 | }); 110 | }); 111 | 112 | // Sliders 113 | var swiper = new Swiper('.swiper-slider', { // Default 114 | pagination: '.swiper-pagination', 115 | paginationClickable: true, 116 | nextButton: '.swiper-button-next', 117 | prevButton: '.swiper-button-prev', 118 | autoplay: false, 119 | loop: true, 120 | paginationType: 'progress', 121 | }); 122 | 123 | var swiper = new Swiper('.testimonials', { // Testimonial 124 | pagination: '.swiper-pagination', 125 | slidesPerView: 1, 126 | centeredSlides: true, 127 | paginationClickable: true, 128 | spaceBetween: 20, 129 | loop: true, 130 | }); 131 | 132 | var swiper = new Swiper('.slider-sliced', { // Sliced 133 | pagination: '.swiper-pagination', 134 | slidesPerView: 1, 135 | centeredSlides: true, 136 | paginationClickable: true, 137 | spaceBetween: 0, 138 | }); 139 | 140 | var swiper = new Swiper('.swiper-slider-full', { // Sliced 141 | pagination: '.swiper-pagination', 142 | slidesPerView: 1, 143 | centeredSlides: true, 144 | paginationClickable: true, 145 | spaceBetween: 0, 146 | }); 147 | 148 | var swiper = new Swiper('.slider-drawer', { // Drawer 149 | pagination: '.swiper-pagination', 150 | slidesPerView: 1, 151 | centeredSlides: true, 152 | paginationClickable: true, 153 | spaceBetween: 0, 154 | }); 155 | 156 | var swiper = new Swiper('.steps', { // Walkthrough 157 | pagination: '.swiper-pagination', 158 | slidesPerView: 1, 159 | centeredSlides: true, 160 | paginationClickable: true, 161 | spaceBetween: 0, 162 | }); 163 | 164 | // MixItUp 165 | $(function () { 166 | var layout = 'grid', // Store the current layout as a variable 167 | $container = $('#filter'), // Cache the MixItUp container 168 | $changeLayout = $('#ChangeLayout'); // Cache the changeLayout button 169 | // Instantiate MixItUp with some custom options: 170 | $container.mixItUp({ 171 | animation: { 172 | animateChangeLayout: true, // Animate the positions of targets as the layout changes 173 | animateResizeTargets: true, // Animate the width/height of targets as the layout changes 174 | effects: 'fade rotateX(-40deg) translateZ(-100px)' 175 | }, 176 | layout: { 177 | containerClass: 'grid' // Add the class 'list' to the container on load 178 | } 179 | }); 180 | // MixItUp does not provide a default "change layout" button, so we need to make our own and bind it with a click handler: 181 | $changeLayout.on('click', function () { 182 | // If the current layout is a list, change to grid: 183 | if (layout == 'grid') { 184 | layout = 'list'; 185 | $changeLayout.text('Grid'); // Update the button text 186 | $container.mixItUp('changeLayout', { 187 | containerClass: layout // change the container class to "grid" 188 | }); 189 | // Else if the current layout is a grid, change to list: 190 | } else { 191 | layout = 'grid'; 192 | $changeLayout.text('List'); // Update the button text 193 | $container.mixItUp('changeLayout', { 194 | containerClass: layout // Change the container class to 'list' 195 | }); 196 | } 197 | }); 198 | 199 | // init swiper layout 200 | window.onload = function () { 201 | setTimeout(function () { 202 | ResizeHandler = ResizeHandler || function () { }; 203 | ResizeHandler(); 204 | }, 500) 205 | }; 206 | 207 | }); -------------------------------------------------------------------------------- /app/src/main/assets/js/vendor/HeadsUp.js: -------------------------------------------------------------------------------- 1 | /* 2 | * HeadsUp 1.5.6 3 | * @author Kyle Foster (@hkfoster) 4 | * @license MIT 5 | */ 6 | ;(function( window, document, undefined ) { 7 | 8 | 'use strict'; 9 | 10 | // Extend function 11 | function extend( a, b ) { 12 | for( var key in b ) { 13 | if( b.hasOwnProperty( key ) ) { 14 | a[ key ] = b[ key ]; 15 | } 16 | } 17 | return a; 18 | } 19 | 20 | // Throttle function (http://bit.ly/1eJxOqL) 21 | function throttle( fn, threshhold, scope ) { 22 | threshhold || ( threshhold = 250 ); 23 | var previous, deferTimer; 24 | return function () { 25 | var context = scope || this, 26 | current = Date.now(), 27 | args = arguments; 28 | if ( previous && current < previous + threshhold ) { 29 | clearTimeout( deferTimer ); 30 | deferTimer = setTimeout( function () { 31 | previous = current; 32 | fn.apply( context, args ); 33 | }, threshhold ); 34 | } else { 35 | previous = current; 36 | fn.apply( context, args ); 37 | } 38 | }; 39 | } 40 | 41 | // Class management functions 42 | function classReg( className ) { 43 | return new RegExp( '(^|\\s+)' + className + '(\\s+|$)' ); 44 | } 45 | 46 | function hasClass( el, cl ) { 47 | return classReg( cl ).test( el.className ); 48 | } 49 | 50 | function addClass( el, cl ) { 51 | if ( !hasClass( el, cl ) ) { 52 | el.className = el.className + ' ' + cl; 53 | } 54 | } 55 | 56 | function removeClass( el, cl ) { 57 | el.className = el.className.replace( classReg( cl ), ' ' ); 58 | } 59 | 60 | // Main function definition 61 | function headsUp( selector, options ) { 62 | this.selector = document.querySelector( selector ); 63 | this.options = extend( this.defaults, options ); 64 | this.init(); 65 | } 66 | 67 | // Overridable defaults 68 | headsUp.prototype = { 69 | defaults : { 70 | delay : 300, 71 | sensitivity : 20 72 | }, 73 | 74 | // Init function 75 | init : function( selector ) { 76 | 77 | var self = this, 78 | options = self.options, 79 | selector = self.selector, 80 | oldScrollY = 0, 81 | winHeight; 82 | 83 | // Resize handler function 84 | function resizeHandler() { 85 | winHeight = window.innerHeight; 86 | return winHeight; 87 | } 88 | 89 | // Scroll handler function 90 | function scrollHandler() { 91 | 92 | // Scoped variables 93 | var newScrollY = window.pageYOffset, 94 | docHeight = document.body.scrollHeight, 95 | pastDelay = newScrollY > options.delay, 96 | goingDown = newScrollY > oldScrollY, 97 | fastEnough = newScrollY < oldScrollY - options.sensitivity, 98 | rockBottom = newScrollY < 0 || newScrollY + winHeight >= docHeight; 99 | 100 | // Where the magic happens 101 | if ( pastDelay && goingDown ) { 102 | addClass( selector, 'heads-up' ); 103 | } else if ( !goingDown && fastEnough && !rockBottom || !pastDelay ) { 104 | removeClass( selector, 'heads-up' ); 105 | } 106 | 107 | // Keep on keeping on 108 | oldScrollY = newScrollY; 109 | } 110 | 111 | // Attach listeners 112 | if ( selector ) { 113 | 114 | // Trigger initial resize 115 | resizeHandler(); 116 | 117 | // Resize function listener 118 | window.addEventListener( 'resize', throttle( resizeHandler ), false ); 119 | 120 | // Scroll function listener 121 | window.addEventListener( 'scroll', throttle( scrollHandler, 100 ), false ); 122 | } 123 | } 124 | }; 125 | 126 | window.headsUp = headsUp; 127 | 128 | })( window, document ); 129 | 130 | // Instantiate HeadsUp 131 | new headsUp( '#toolbar' ); -------------------------------------------------------------------------------- /app/src/main/assets/js/vendor/jquery.swipebox.min.js: -------------------------------------------------------------------------------- 1 | /*! Swipebox v1.4.1 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ 2 | !function(a,b,c,d){c.swipebox=function(e,f){var g,h,i={useCSS:!0,useSVG:!0,initialIndexOnArray:0,removeBarsOnMobile:!0,hideCloseButtonOnMobile:!1,hideBarsDelay:3e3,videoMaxWidth:1140,vimeoColor:"cccccc",beforeOpen:null,afterOpen:null,afterClose:null,nextSlide:null,prevSlide:null,loopAtEnd:!1,autoplayVideos:!1,queryStringData:{},toggleClassOnLoad:""},j=this,k=[],l=e.selector,m=c(l),n=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i),o=null!==n||b.createTouch!==d||"ontouchstart"in a||"onmsgesturechange"in a||navigator.msMaxTouchPoints,p=!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,q=a.innerWidth?a.innerWidth:c(a).width(),r=a.innerHeight?a.innerHeight:c(a).height(),s=0,t='
';j.settings={},c.swipebox.close=function(){g.closeSlide()},c.swipebox.extend=function(){return g},j.init=function(){j.settings=c.extend({},i,f),c.isArray(e)?(k=e,g.target=c(a),g.init(j.settings.initialIndexOnArray)):c(b).on("click",l,function(a){if("slide current"===a.target.parentNode.className)return!1;c.isArray(e)||(g.destroy(),h=c(l),g.actions()),k=[];var b,d,f;f||(d="data-rel",f=c(this).attr(d)),f||(d="rel",f=c(this).attr(d)),h=f&&""!==f&&"nofollow"!==f?m.filter("["+d+'="'+f+'"]'):c(l),h.each(function(){var a=null,b=null;c(this).attr("title")&&(a=c(this).attr("title")),c(this).attr("href")&&(b=c(this).attr("href")),k.push({href:b,title:a})}),b=h.index(c(this)),a.preventDefault(),a.stopPropagation(),g.target=c(a.target),g.init(b)})},g={init:function(a){j.settings.beforeOpen&&j.settings.beforeOpen(),this.target.trigger("swipebox-start"),c.swipebox.isOpen=!0,this.build(),this.openSlide(a),this.openMedia(a),this.preloadMedia(a+1),this.preloadMedia(a-1),j.settings.afterOpen&&j.settings.afterOpen()},build:function(){var a,b=this;c("body").append(t),p&&j.settings.useSVG===!0&&(a=c("#swipebox-close").css("background-image"),a=a.replace("png","svg"),c("#swipebox-prev, #swipebox-next, #swipebox-close").css({"background-image":a})),n&&j.settings.removeBarsOnMobile&&c("#swipebox-bottom-bar, #swipebox-top-bar").remove(),c.each(k,function(){c("#swipebox-slider").append('
')}),b.setDim(),b.actions(),o&&b.gesture(),b.keyboard(),b.animBars(),b.resize()},setDim:function(){var b,d,e={};"onorientationchange"in a?a.addEventListener("orientationchange",function(){0===a.orientation?(b=q,d=r):(90===a.orientation||-90===a.orientation)&&(b=r,d=q)},!1):(b=a.innerWidth?a.innerWidth:c(a).width(),d=a.innerHeight?a.innerHeight:c(a).height()),e={width:b,height:d},c("#swipebox-overlay").css(e)},resize:function(){var b=this;c(a).resize(function(){b.setDim()}).resize()},supportTransition:function(){var a,c="transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition".split(" ");for(a=0;a=m||i)){var p=.75-Math.abs(d)/r.height();r.css({top:d+"px"}),r.css({opacity:p}),i=!0}e=b,b=o.pageX-n.pageX,g=100*b/q,!j&&!i&&Math.abs(b)>=l&&(c("#swipebox-slider").css({"-webkit-transition":"",transition:""}),j=!0),j&&(b>0?0===a?c("#swipebox-overlay").addClass("leftSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"})):0>b&&(k.length===a+1?c("#swipebox-overlay").addClass("rightSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(s+g)+"%, 0, 0)",transform:"translate3d("+(s+g)+"%, 0, 0)"}))))}),!1}).bind("touchend",function(a){if(a.preventDefault(),a.stopPropagation(),c("#swipebox-slider").css({"-webkit-transition":"-webkit-transform 0.4s ease",transition:"transform 0.4s ease"}),d=o.pageY-n.pageY,b=o.pageX-n.pageX,g=100*b/q,i)if(i=!1,Math.abs(d)>=2*m&&Math.abs(d)>Math.abs(f)){var k=d>0?r.height():-r.height();r.animate({top:k+"px",opacity:0},300,function(){h.closeSlide()})}else r.animate({top:0,opacity:1},300);else j?(j=!1,b>=l&&b>=e?h.getPrev():-l>=b&&e>=b&&h.getNext()):p.hasClass("visible-bars")?(h.clearTimeout(),h.hideBars()):(h.showBars(),h.setTimeout());c("#swipebox-slider").css({"-webkit-transform":"translate3d("+s+"%, 0, 0)",transform:"translate3d("+s+"%, 0, 0)"}),c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c(".touching").off("touchmove").removeClass("touching")})},setTimeout:function(){if(j.settings.hideBarsDelay>0){var b=this;b.clearTimeout(),b.timeout=a.setTimeout(function(){b.hideBars()},j.settings.hideBarsDelay)}},clearTimeout:function(){a.clearTimeout(this.timeout),this.timeout=null},showBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.addClass("visible-bars"):(c("#swipebox-top-bar").animate({top:0},500),c("#swipebox-bottom-bar").animate({bottom:0},500),setTimeout(function(){a.addClass("visible-bars")},1e3))},hideBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.removeClass("visible-bars"):(c("#swipebox-top-bar").animate({top:"-50px"},500),c("#swipebox-bottom-bar").animate({bottom:"-50px"},500),setTimeout(function(){a.removeClass("visible-bars")},1e3))},animBars:function(){var a=this,b=c("#swipebox-top-bar, #swipebox-bottom-bar");b.addClass("visible-bars"),a.setTimeout(),c("#swipebox-slider").click(function(){b.hasClass("visible-bars")||(a.showBars(),a.setTimeout())}),c("#swipebox-bottom-bar").hover(function(){a.showBars(),b.addClass("visible-bars"),a.clearTimeout()},function(){j.settings.hideBarsDelay>0&&(b.removeClass("visible-bars"),a.setTimeout())})},keyboard:function(){var b=this;c(a).bind("keyup",function(a){a.preventDefault(),a.stopPropagation(),37===a.keyCode?b.getPrev():39===a.keyCode?b.getNext():27===a.keyCode&&b.closeSlide()})},actions:function(){var a=this,b="touchend click";k.length<2?(c("#swipebox-bottom-bar").hide(),d===k[1]&&c("#swipebox-top-bar").hide()):(c("#swipebox-prev").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getPrev(),a.setTimeout()}),c("#swipebox-next").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getNext(),a.setTimeout()})),c("#swipebox-close").bind(b,function(){a.closeSlide()})},setSlide:function(a,b){b=b||!1;var d=c("#swipebox-slider");s=100*-a,this.doCssTrans()?d.css({"-webkit-transform":"translate3d("+100*-a+"%, 0, 0)",transform:"translate3d("+100*-a+"%, 0, 0)"}):d.animate({left:100*-a+"%"}),c("#swipebox-slider .slide").removeClass("current"),c("#swipebox-slider .slide").eq(a).addClass("current"),this.setTitle(a),b&&d.fadeIn(),c("#swipebox-prev, #swipebox-next").removeClass("disabled"),0===a?c("#swipebox-prev").addClass("disabled"):a===k.length-1&&j.settings.loopAtEnd!==!0&&c("#swipebox-next").addClass("disabled")},openSlide:function(b){c("html").addClass("swipebox-html"),o?(c("html").addClass("swipebox-touch"),j.settings.hideCloseButtonOnMobile&&c("html").addClass("swipebox-no-close-button")):c("html").addClass("swipebox-no-touch"),c(a).trigger("resize"),this.setSlide(b,!0)},preloadMedia:function(a){var b=this,c=null;k[a]!==d&&(c=k[a].href),b.isVideo(c)?b.openMedia(a):setTimeout(function(){b.openMedia(a)},1e3)},openMedia:function(a){var b,e,f=this;return k[a]!==d&&(b=k[a].href),0>a||a>=k.length?!1:(e=c("#swipebox-slider .slide").eq(a),void(f.isVideo(b)?e.html(f.getVideo(b)):(e.addClass("slide-loading"),f.loadMedia(b,function(){e.removeClass("slide-loading"),e.html(this)}))))},setTitle:function(a){var b=null;c("#swipebox-title").empty(),k[a]!==d&&(b=k[a].title),b?(c("#swipebox-top-bar").show(),c("#swipebox-title").append(b)):c("#swipebox-top-bar").hide()},isVideo:function(a){if(a){if(a.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||a.match(/vimeo\.com\/([0-9]*)/)||a.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/))return!0;if(a.toLowerCase().indexOf("swipeboxvideo=1")>=0)return!0}},parseUri:function(a,d){var e=b.createElement("a"),f={};return e.href=decodeURIComponent(a),e.search&&(f=JSON.parse('{"'+e.search.toLowerCase().replace("?","").replace(/&/g,'","').replace(/=/g,'":"')+'"}')),c.isPlainObject(d)&&(f=c.extend(f,d,j.settings.queryStringData)),c.map(f,function(a,b){return a&&a>""?encodeURIComponent(b)+"="+encodeURIComponent(a):void 0}).join("&")},getVideo:function(a){var b="",c=a.match(/((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/),d=a.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/),e=a.match(/(?:www\.)?vimeo\.com\/([0-9]*)/),f="";return c||d?(d&&(c=d),f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",v:""}),b=''):e?(f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",byline:"0",portrait:"0",color:j.settings.vimeoColor}),b=''):b='','
'+b+"
"},loadMedia:function(a,b){if(0===a.trim().indexOf("#"))b.call(c("
",{"class":"swipebox-inline-container"}).append(c(a).clone().toggleClass(j.settings.toggleClassOnLoad)));else if(!this.isVideo(a)){var d=c("").on("load",function(){b.call(d)});d.attr("src",a)}},getNext:function(){var a,b=this,d=c("#swipebox-slider .slide").index(c("#swipebox-slider .slide.current"));d+10?(a=c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src"),c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src",a),b--,this.setSlide(b),this.preloadMedia(b-1),j.settings.prevSlide&&j.settings.prevSlide()):(c("#swipebox-overlay").addClass("leftSpring"),setTimeout(function(){c("#swipebox-overlay").removeClass("leftSpring")},500))},nextSlide:function(){},prevSlide:function(){},closeSlide:function(){c("html").removeClass("swipebox-html"),c("html").removeClass("swipebox-touch"),c(a).trigger("resize"),this.destroy()},destroy:function(){c(a).unbind("keyup"),c("body").unbind("touchstart"),c("body").unbind("touchmove"),c("body").unbind("touchend"),c("#swipebox-slider").unbind(),c("#swipebox-overlay").remove(),c.isArray(e)||e.removeData("_swipebox"),this.target&&this.target.trigger("swipebox-destroy"),c.swipebox.isOpen=!1,j.settings.afterClose&&j.settings.afterClose()}},j.init()},c.fn.swipebox=function(a){if(!c.data(this,"_swipebox")){var b=new c.swipebox(this,a);this.data("_swipebox",b)}return this.data("_swipebox")}}(window,document,jQuery); -------------------------------------------------------------------------------- /app/src/main/assets/js/vendor/modernizr-2.7.1.min.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.7.1 (Custom Build) | MIT & BSD 2 | * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f Unit 42 | ) { 43 | Dialog( 44 | onDismissRequest = onDismiss, 45 | properties = DialogProperties(usePlatformDefaultWidth = false), 46 | ) { 47 | Box( 48 | modifier = Modifier 49 | .fillMaxWidth() 50 | .fillMaxHeight() 51 | .background( 52 | color = Color.Transparent, 53 | ) 54 | ) { 55 | 56 | 57 | Box( 58 | modifier = Modifier 59 | .background( 60 | color = MaterialTheme.colorScheme.onPrimary, 61 | shape = RoundedCornerShape(25.dp, 5.dp, 25.dp, 5.dp) 62 | ) 63 | .align(Alignment.BottomCenter), 64 | ) { 65 | 66 | Image( 67 | painter = painterResource(id = R.drawable.logo), 68 | contentDescription = null, 69 | contentScale = ContentScale.Fit, 70 | modifier = Modifier 71 | .height(180.dp) 72 | .fillMaxWidth(), 73 | 74 | ) 75 | Column( 76 | modifier = Modifier.padding(16.dp), 77 | horizontalAlignment = Alignment.CenterHorizontally 78 | ) { 79 | 80 | //.........................Spacer 81 | Spacer(modifier = Modifier.height(24.dp)) 82 | 83 | //.........................Text: title 84 | Text( 85 | text = title!!, 86 | textAlign = TextAlign.Center, 87 | modifier = Modifier 88 | .padding(top = 130.dp) 89 | .fillMaxWidth(), 90 | style = MaterialTheme.typography.headlineSmall, 91 | color = MaterialTheme.colorScheme.primary, 92 | ) 93 | Spacer(modifier = Modifier.height(8.dp)) 94 | 95 | //.........................Text : description 96 | Text( 97 | text = desc!!, 98 | textAlign = TextAlign.Center, 99 | modifier = Modifier 100 | .padding(top = 10.dp, start = 25.dp, end = 25.dp) 101 | .fillMaxWidth(), 102 | style = MaterialTheme.typography.bodyLarge, 103 | color = MaterialTheme.colorScheme.primary, 104 | ) 105 | //.........................Spacer 106 | Spacer(modifier = Modifier.height(24.dp)) 107 | 108 | //.........................Button : OK button 109 | Button( 110 | onClick = onDismiss, 111 | //shape = Shapes.small, 112 | modifier = Modifier.align(Alignment.CenterHorizontally), 113 | colors= ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primary), 114 | //.clip(RoundedCornerShape(25.dp)) 115 | ) { 116 | Text( 117 | text = "OK", 118 | style = MaterialTheme.typography.labelLarge, 119 | color = MaterialTheme.colorScheme.onPrimary, 120 | ) 121 | } 122 | 123 | 124 | 125 | //.........................Spacer 126 | Spacer(modifier = Modifier.height(24.dp)) 127 | 128 | } 129 | 130 | 131 | } 132 | 133 | } 134 | } 135 | } 136 | 137 | 138 | /* 139 | Tek Heist 144 | * */ -------------------------------------------------------------------------------- /app/src/main/java/com/blogspot/boltuix/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.blogspot.boltuix 2 | 3 | import android.annotation.SuppressLint 4 | import android.content.Context 5 | import android.content.res.Configuration 6 | import android.graphics.Bitmap 7 | import android.net.ConnectivityManager 8 | import android.net.NetworkCapabilities 9 | import android.os.Build 10 | import android.os.Bundle 11 | import android.util.Log 12 | import android.view.ViewGroup 13 | import android.webkit.* 14 | import android.widget.Toast 15 | import androidx.activity.ComponentActivity 16 | import androidx.activity.compose.BackHandler 17 | import androidx.activity.compose.setContent 18 | import androidx.compose.foundation.Image 19 | import androidx.compose.foundation.layout.* 20 | import androidx.compose.material3.MaterialTheme 21 | import androidx.compose.material3.Surface 22 | import androidx.compose.material3.Text 23 | import androidx.compose.runtime.* 24 | import androidx.compose.ui.Alignment 25 | import androidx.compose.ui.ExperimentalComposeUiApi 26 | import androidx.compose.ui.Modifier 27 | import androidx.compose.ui.layout.ContentScale 28 | import androidx.compose.ui.platform.LocalConfiguration 29 | import androidx.compose.ui.platform.LocalContext 30 | import androidx.compose.ui.res.painterResource 31 | import androidx.compose.ui.text.font.FontWeight 32 | import androidx.compose.ui.text.style.TextAlign 33 | import androidx.compose.ui.unit.dp 34 | import androidx.compose.ui.unit.sp 35 | import androidx.compose.ui.viewinterop.AndroidView 36 | import androidx.compose.ui.window.Dialog 37 | import androidx.compose.ui.window.DialogProperties 38 | import java.io.BufferedReader 39 | import java.io.ByteArrayInputStream 40 | import java.io.IOException 41 | import java.io.InputStreamReader 42 | 43 | var loadURL = "https://www.boltuix.com/" 44 | 45 | class MainActivity : ComponentActivity() { 46 | 47 | override fun onCreate(savedInstanceState: Bundle?) { 48 | super.onCreate(savedInstanceState) 49 | setContent { 50 | WebViewPage("https://www.boltuix.com/") 51 | //WebViewPage("file:///android_asset/shop.html") //OFFLINE 52 | } 53 | } 54 | } 55 | 56 | 57 | @OptIn(ExperimentalComposeUiApi::class) 58 | @SuppressLint("SetJavaScriptEnabled") 59 | @Composable 60 | fun WebViewPage(url: String){ 61 | 62 | val openFullDialogCustom = remember { mutableStateOf(false) } 63 | if (openFullDialogCustom.value) { 64 | 65 | // Dialog function 66 | Dialog( 67 | onDismissRequest = { 68 | openFullDialogCustom.value = false 69 | }, 70 | properties = DialogProperties( 71 | usePlatformDefaultWidth = false // experimental 72 | ) 73 | ) { 74 | Surface(modifier = Modifier.fillMaxSize()) { 75 | 76 | Column( 77 | modifier = Modifier.fillMaxSize(), 78 | verticalArrangement = Arrangement.Center, 79 | horizontalAlignment = Alignment.CenterHorizontally 80 | ) { 81 | 82 | 83 | 84 | Image( 85 | painter = painterResource(id = R.drawable.logo), 86 | contentDescription = null, 87 | contentScale = ContentScale.Fit, 88 | modifier = Modifier 89 | .height(200.dp) 90 | .fillMaxWidth(), 91 | 92 | ) 93 | 94 | Spacer(modifier = Modifier.height(20.dp)) 95 | //.........................Text: title 96 | Text( 97 | text = "Loading...", 98 | textAlign = TextAlign.Center, 99 | modifier = Modifier 100 | .padding(top = 20.dp) 101 | .fillMaxWidth(), 102 | letterSpacing = 2.sp, 103 | fontWeight = FontWeight.Bold, 104 | style = MaterialTheme.typography.titleLarge, 105 | color = MaterialTheme.colorScheme.primary, 106 | ) 107 | Spacer(modifier = Modifier.height(8.dp)) 108 | 109 | //.........................Text : description 110 | Text( 111 | text = "Please wait", 112 | textAlign = TextAlign.Center, 113 | modifier = Modifier 114 | .padding(top = 10.dp, start = 25.dp, end = 25.dp) 115 | .fillMaxWidth(), 116 | letterSpacing = 3.sp, 117 | style = MaterialTheme.typography.bodyLarge, 118 | color = MaterialTheme.colorScheme.primary, 119 | ) 120 | //.........................Spacer 121 | Spacer(modifier = Modifier.height(24.dp)) 122 | 123 | } 124 | 125 | } 126 | } 127 | 128 | } 129 | //.......................................................................... 130 | 131 | 132 | 133 | 134 | val context = LocalContext.current 135 | 136 | //................................................. 137 | // Compose WebView Part 9 | Removes or Stop Ad in web 138 | val adServers = StringBuilder() 139 | var line: String? = "" 140 | val inputStream = context.resources.openRawResource(R.raw.adblockserverlist) 141 | val br = BufferedReader(InputStreamReader(inputStream)) 142 | try { 143 | while (br.readLine().also { line = it } != null) { 144 | adServers.append(line) 145 | adServers.append("\n") 146 | } 147 | } catch (e: IOException) { 148 | e.printStackTrace() 149 | } 150 | 151 | 152 | var backEnabled by remember { mutableStateOf(false) } 153 | var webView: WebView? = null 154 | 155 | 156 | val mutableStateTrigger = remember { mutableStateOf(false) } 157 | val infoDialog = remember { mutableStateOf(false) } 158 | 159 | 160 | 161 | //The Configuration object represents all of the current configurations, not just the ones that have changed. 162 | val configuration = LocalConfiguration.current 163 | when (configuration.orientation) { 164 | Configuration.ORIENTATION_LANDSCAPE -> { 165 | // Toast.makeText(context, "landscape", Toast.LENGTH_SHORT).show() 166 | } 167 | else -> { 168 | //Toast.makeText(context, "portrait", Toast.LENGTH_SHORT).show() 169 | } 170 | } 171 | 172 | // Adding a WebView inside AndroidView 173 | // with layout as full screen 174 | AndroidView( 175 | factory = { 176 | WebView(it).apply { 177 | layoutParams = ViewGroup.LayoutParams( 178 | ViewGroup.LayoutParams.MATCH_PARENT, 179 | ViewGroup.LayoutParams.MATCH_PARENT 180 | ) 181 | webViewClient = WebViewClient() 182 | 183 | // to play video on a web view 184 | settings.javaScriptEnabled = true 185 | 186 | // to verify that the client requesting your web page is actually your Android app. 187 | settings.userAgentString = System.getProperty("http.agent") //Dalvik/2.1.0 (Linux; U; Android 11; M2012K11I Build/RKQ1.201112.002) 188 | 189 | settings.useWideViewPort = true 190 | 191 | 192 | // Bind JavaScript code to Android code 193 | addJavascriptInterface(WebAppInterface(context,infoDialog), "Android") 194 | 195 | 196 | webViewClient = object : WebViewClient() { 197 | 198 | 199 | override fun onReceivedError(view: WebView?, request: WebResourceRequest?, error: WebResourceError?) { 200 | super.onReceivedError(view, request, error) 201 | Log.d("test001","error") 202 | 203 | loadURL = if(isOnline(context)){ 204 | "file:///android_asset/404.html" // other error 205 | } else{ 206 | "file:///android_asset/error.html" // no internet 207 | } 208 | 209 | mutableStateTrigger.value = true 210 | 211 | } 212 | 213 | override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? { 214 | val empty = ByteArrayInputStream("".toByteArray()) 215 | val kk5 = adServers.toString() 216 | if (kk5.contains(":::::" + request.url.host)) 217 | return WebResourceResponse("text/plain", "utf-8", empty) 218 | return super.shouldInterceptRequest(view, request) 219 | } 220 | 221 | 222 | override fun onPageStarted(view: WebView, url: String?, favicon: Bitmap?) { 223 | openFullDialogCustom.value = true 224 | backEnabled = view.canGoBack() 225 | } 226 | 227 | // Compose WebView Part 7 | Hide elements from web view 228 | override fun onPageFinished(view: WebView?, url: String?) { 229 | super.onPageFinished(view, url) 230 | openFullDialogCustom.value = false 231 | removeElement(view!!) 232 | } 233 | 234 | // Compose WebView Part 5 | Should Override URL Loading 235 | @Deprecated("Deprecated in Java") 236 | override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { 237 | if (url.contains("facebook.com")) { 238 | loadURL = "https://www.instagram.com/boltuix/" 239 | mutableStateTrigger.value = true 240 | Toast.makeText(context, "Custom Action", Toast.LENGTH_SHORT).show() 241 | return true 242 | } 243 | else{ 244 | view.loadUrl(url) 245 | } 246 | return false 247 | } 248 | } 249 | 250 | loadUrl(url) 251 | webView = this 252 | } 253 | }, update = { 254 | webView = it 255 | // it.loadUrl(url) 256 | }) 257 | 258 | 259 | if (mutableStateTrigger.value) { 260 | // WebViewPage("https://www.instagram.com/boltuix/") 261 | WebViewPage(loadURL) 262 | } 263 | if (infoDialog.value) { 264 | InfoDialog( 265 | title = "TEKHEIST", 266 | desc = "We are at the forefront of innovation.\n" + 267 | "Discover with us the possibilities of your next project.", 268 | onDismiss = { 269 | infoDialog.value = false 270 | } 271 | ) 272 | } 273 | 274 | 275 | BackHandler(enabled = backEnabled) { 276 | removeElement(webView!!) 277 | webView?.goBack() 278 | } 279 | 280 | } 281 | 282 | fun removeElement(webView: WebView) { 283 | 284 | // hide element by id 285 | webView.loadUrl("javascript:(function() { document.getElementById('blog-pager').style.display='none';})()"); 286 | 287 | // we can also hide class name 288 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[0].style.display='none';})()") 289 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[1].style.display='none';})()") 290 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[2].style.display='none';})()") 291 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[3].style.display='none';})()") 292 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[4].style.display='none';})()") 293 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[5].style.display='none';})()") 294 | webView.loadUrl("javascript:(function() { document.getElementsByClassName('btn')[6].style.display='none';})()") 295 | } 296 | 297 | 298 | /** Instantiate the interface and set the context */ 299 | class WebAppInterface(private val mContext: Context, var infoDialog: MutableState) { 300 | 301 | /** Show a toast from the web page */ 302 | @JavascriptInterface 303 | fun showToast(toast: String) { 304 | infoDialog.value=true 305 | Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show() 306 | } 307 | } 308 | 309 | 310 | fun isOnline(context: Context): Boolean { 311 | val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager 312 | 313 | // For 29 api or above 314 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { 315 | val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) ?: return false 316 | return when { 317 | capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true 318 | capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true 319 | capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true 320 | else -> false 321 | } 322 | } 323 | // For below 29 api 324 | else { 325 | @Suppress("DEPRECATION") 326 | if (connectivityManager.activeNetworkInfo != null && connectivityManager.activeNetworkInfo!!.isConnectedOrConnecting) { 327 | return true 328 | } 329 | } 330 | return false 331 | } -------------------------------------------------------------------------------- /app/src/main/java/com/blogspot/boltuix/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package com.blogspot.boltuix.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Purple80 = Color(0xFFD0BCFF) 6 | val PurpleGrey80 = Color(0xFFCCC2DC) 7 | val Pink80 = Color(0xFFEFB8C8) 8 | 9 | val Purple40 = Color(0xFF6650a4) 10 | val PurpleGrey40 = Color(0xFF625b71) 11 | val Pink40 = Color(0xFF7D5260) -------------------------------------------------------------------------------- /app/src/main/java/com/blogspot/boltuix/ui/theme/Theme.kt: -------------------------------------------------------------------------------- 1 | package com.blogspot.boltuix.ui.theme 2 | 3 | import android.app.Activity 4 | import android.os.Build 5 | import androidx.compose.foundation.isSystemInDarkTheme 6 | import androidx.compose.material3.MaterialTheme 7 | import androidx.compose.material3.darkColorScheme 8 | import androidx.compose.material3.dynamicDarkColorScheme 9 | import androidx.compose.material3.dynamicLightColorScheme 10 | import androidx.compose.material3.lightColorScheme 11 | import androidx.compose.runtime.Composable 12 | import androidx.compose.runtime.SideEffect 13 | import androidx.compose.ui.graphics.toArgb 14 | import androidx.compose.ui.platform.LocalContext 15 | import androidx.compose.ui.platform.LocalView 16 | import androidx.core.view.ViewCompat 17 | 18 | private val DarkColorScheme = darkColorScheme( 19 | primary = Purple80, 20 | secondary = PurpleGrey80, 21 | tertiary = Pink80 22 | ) 23 | 24 | private val LightColorScheme = lightColorScheme( 25 | primary = Purple40, 26 | secondary = PurpleGrey40, 27 | tertiary = Pink40 28 | 29 | /* Other default colors to override 30 | background = Color(0xFFFFFBFE), 31 | surface = Color(0xFFFFFBFE), 32 | onPrimary = Color.White, 33 | onSecondary = Color.White, 34 | onTertiary = Color.White, 35 | onBackground = Color(0xFF1C1B1F), 36 | onSurface = Color(0xFF1C1B1F), 37 | */ 38 | ) 39 | 40 | @Composable 41 | fun WebviewTheme( 42 | darkTheme: Boolean = isSystemInDarkTheme(), 43 | // Dynamic color is available on Android 12+ 44 | dynamicColor: Boolean = true, 45 | content: @Composable () -> Unit 46 | ) { 47 | val colorScheme = when { 48 | dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { 49 | val context = LocalContext.current 50 | if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) 51 | } 52 | darkTheme -> DarkColorScheme 53 | else -> LightColorScheme 54 | } 55 | val view = LocalView.current 56 | if (!view.isInEditMode) { 57 | SideEffect { 58 | (view.context as Activity).window.statusBarColor = colorScheme.primary.toArgb() 59 | ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars = darkTheme 60 | } 61 | } 62 | 63 | MaterialTheme( 64 | colorScheme = colorScheme, 65 | typography = Typography, 66 | content = content 67 | ) 68 | } -------------------------------------------------------------------------------- /app/src/main/java/com/blogspot/boltuix/ui/theme/Type.kt: -------------------------------------------------------------------------------- 1 | package com.blogspot.boltuix.ui.theme 2 | 3 | import androidx.compose.material3.Typography 4 | import androidx.compose.ui.text.TextStyle 5 | import androidx.compose.ui.text.font.FontFamily 6 | import androidx.compose.ui.text.font.FontWeight 7 | import androidx.compose.ui.unit.sp 8 | 9 | // Set of Material typography styles to start with 10 | val Typography = Typography( 11 | bodyLarge = TextStyle( 12 | fontFamily = FontFamily.Default, 13 | fontWeight = FontWeight.Normal, 14 | fontSize = 16.sp, 15 | lineHeight = 24.sp, 16 | letterSpacing = 0.5.sp 17 | ) 18 | /* Other default text styles to override 19 | titleLarge = TextStyle( 20 | fontFamily = FontFamily.Default, 21 | fontWeight = FontWeight.Normal, 22 | fontSize = 22.sp, 23 | lineHeight = 28.sp, 24 | letterSpacing = 0.sp 25 | ), 26 | labelSmall = TextStyle( 27 | fontFamily = FontFamily.Default, 28 | fontWeight = FontWeight.Medium, 29 | fontSize = 11.sp, 30 | lineHeight = 16.sp, 31 | letterSpacing = 0.5.sp 32 | ) 33 | */ 34 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/drawable/logo.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Webview 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |