├── .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 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/other.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 |
4 | https://www.boltuix.com/2022/07/compose-webview-part-12-no-internet.html
5 |
6 | Compose WebView Part 11 | Webpage not available
7 |
8 | https://www.boltuix.com/2022/07/compose-webview-part-11-webpage-not.html
9 |
10 | Compose WebView Part 10 | Show Loader
11 |
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 |
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 |
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 |
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 |
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 |
33 |
34 | Compose WebView Part 4 | OFFLINE
35 | https://www.boltuix.com/2022/07/compose-webview-part-4-offline.html
36 |
37 |
38 | Compose WebView Part 3 | Handle configuration changes
39 | https://www.boltuix.com/2022/07/compose-webview-part-3-handle.html
40 |
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 |
45 |
46 | Compose WebView Part 1 Load URL
47 | https://www.boltuix.com/2022/07/compose-webview-part-1-load-url.html
48 |
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 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
hari.businessdragan@gmail.com
88 |
89 |
95 |
96 |
97 |
98 |
101 |
112 |
113 |
114 |
117 |
128 |
129 |
130 |
133 |
152 |
153 |
154 |
157 |
172 |
173 |
174 |
177 |
185 |
186 |
187 |
190 |
199 |
200 |
201 |
204 |
213 |
214 | Shop
215 | News
216 | UI Kit (Coming Soon)
217 | Contact
218 |
219 |
220 |
221 |
222 |
236 |
237 |
238 |
242 |
243 |
290 |
376 |
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='','"},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+1
0?(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 |
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 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/app/src/test/java/com/blogspot/boltuix/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.blogspot.boltuix
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext {
3 | compose_version = '1.3.0-alpha01'
4 | }
5 | }// Top-level build file where you can add configuration options common to all sub-projects/modules.
6 | plugins {
7 | id 'com.android.application' version '7.3.0' apply false
8 | id 'com.android.library' version '7.3.0' apply false
9 | id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
10 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Kotlin code style for this project: "official" or "obsolete":
19 | kotlin.code.style=official
20 | # Enables namespacing of each library's R class so that its R class includes only the
21 | # resources declared in the library itself and none from the library's dependencies,
22 | # thereby reducing the size of the R class for that library
23 | android.nonTransitiveRClass=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BoltUIX/Compose-Web-View/127039c603b97e940fc80fcc8db8d25380ee05b1/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Oct 07 19:11:32 IST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | gradlePluginPortal()
6 | }
7 | }
8 | dependencyResolutionManagement {
9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10 | repositories {
11 | google()
12 | mavenCentral()
13 | }
14 | }
15 | rootProject.name = "Webview"
16 | include ':app'
17 |
--------------------------------------------------------------------------------