├── .github
└── issue_template.md
├── .gitignore
├── .prettierrc
├── .travis.yml
├── LICENSE
├── README.md
├── demo
├── app
│ ├── App_Resources
│ │ ├── Android
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── app.gradle
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── drawable-ldpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── drawable-nodpi
│ │ │ │ └── splash_screen.xml
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ │ ├── background.png
│ │ │ │ ├── icon.png
│ │ │ │ └── logo.png
│ │ │ ├── values-v21
│ │ │ │ ├── colors.xml
│ │ │ │ └── styles.xml
│ │ │ └── values
│ │ │ │ ├── colors.xml
│ │ │ │ └── styles.xml
│ │ └── iOS
│ │ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-29.png
│ │ │ │ ├── icon-29@2x.png
│ │ │ │ ├── icon-29@3x.png
│ │ │ │ ├── icon-40.png
│ │ │ │ ├── icon-40@2x.png
│ │ │ │ ├── icon-40@3x.png
│ │ │ │ ├── icon-50.png
│ │ │ │ ├── icon-50@2x.png
│ │ │ │ ├── icon-57.png
│ │ │ │ ├── icon-57@2x.png
│ │ │ │ ├── icon-60@2x.png
│ │ │ │ ├── icon-60@3x.png
│ │ │ │ ├── icon-72.png
│ │ │ │ ├── icon-72@2x.png
│ │ │ │ ├── icon-76.png
│ │ │ │ ├── icon-76@2x.png
│ │ │ │ └── icon-83.5@2x.png
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.launchimage
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Default-568h@2x.png
│ │ │ │ ├── Default-667h@2x.png
│ │ │ │ ├── Default-736h@3x.png
│ │ │ │ ├── Default-Landscape.png
│ │ │ │ ├── Default-Landscape@2x.png
│ │ │ │ ├── Default-Landscape@3x.png
│ │ │ │ ├── Default-Portrait.png
│ │ │ │ ├── Default-Portrait@2x.png
│ │ │ │ ├── Default.png
│ │ │ │ └── Default@2x.png
│ │ │ ├── LaunchScreen.AspectFill.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchScreen-AspectFill.png
│ │ │ │ └── LaunchScreen-AspectFill@2x.png
│ │ │ └── LaunchScreen.Center.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchScreen-Center.png
│ │ │ │ └── LaunchScreen-Center@2x.png
│ │ │ ├── Info.plist
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── build.xcconfig
│ ├── app.css
│ ├── app.ts
│ ├── main-page.ts
│ ├── main-page.xml
│ ├── main-view-model.ts
│ ├── package.json
│ └── tests
│ │ └── tests.js
├── karma.conf.js
├── package-lock.json
├── package.json
├── references.d.ts
├── tsconfig.json
├── tsconfig.tns.json
└── webpack.config.js
├── publish
├── pack.sh
├── package.json
└── publish.sh
├── src
├── .npmignore
├── animated-circle.android.ts
├── animated-circle.common.ts
├── animated-circle.ios.ts
├── index.d.ts
├── package-lock.json
├── package.json
├── platforms
│ ├── android
│ │ └── include.gradle
│ └── ios
│ │ └── Podfile
├── references.d.ts
├── tsconfig.json
└── typings
│ └── DRCircularProgress.d.ts
└── tslint.json
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 | ### Make sure to check the demo app(s) for sample usage
2 |
3 | ### Make sure to check the existing issues in this repository
4 |
5 | ### If the demo apps cannot help and there is no issue for your problem, tell us about it
6 | Please, ensure your title is less than 63 characters long and starts with a capital
7 | letter.
8 |
9 | ### Which platform(s) does your issue occur on?
10 | - iOS/Android/Both
11 | - iOS/Android versions
12 | - emulator or device. What type of device?
13 |
14 | ### Please, provide the following version numbers that your issue occurs with:
15 |
16 | - CLI: (run `tns --version` to fetch it)
17 | - Cross-platform modules: (check the 'version' attribute in the
18 | `node_modules/tns-core-modules/package.json` file in your project)
19 | - Runtime(s): (look for the `"tns-android"` and `"tns-ios"` properties in the `package.json` file of your project)
20 | - Plugin(s): (look for the version numbers in the `package.json` file of your
21 | project and paste your dependencies and devDependencies here)
22 |
23 | ### Please, tell us how to recreate the issue in as much detail as possible.
24 | Describe the steps to reproduce it.
25 |
26 | ### Is there any code involved?
27 | - provide a code example to recreate the problem
28 | - (EVEN BETTER) provide a .zip with application or refer to a repository with application where the problem is reproducible.
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | .idea
3 | .DS_Store
4 | *.js
5 | *.js.map
6 | *.log
7 | src/*.d.ts
8 | !src/index.d.ts
9 | !src/references.d.ts
10 | !src/scripts/*.js
11 | !seed-tests/*.js
12 | seed-tests/seed-copy/**/*.*
13 | seed-tests/seed-copy-new-git-repo/**/*.*
14 | !demo/karma.conf.js
15 | !demo/app/tests/*.js
16 | demo/*.d.ts
17 | !demo/references.d.ts
18 | demo/lib
19 | demo/platforms
20 | node_modules
21 | publish/src
22 | publish/package
23 | demo/report/report.html
24 | demo/report/stats.json
25 |
26 | !demo/webpack.config.js
27 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": true
4 | }
5 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | matrix:
2 | include:
3 | - stage: "Lint"
4 | language: node_js
5 | os: linux
6 | node_js: "6"
7 | script: cd src && npm run ci.tslint && cd ../demo && npm run ci.tslint
8 | - stage: "WebPack"
9 | os: osx
10 | env:
11 | - Platform="iOS"
12 | osx_image: xcode8.3
13 | language: node_js
14 | node_js: "6"
15 | jdk: oraclejdk8
16 | script: cd demo && npm run build.plugin && npm i && npm run build-ios-bundle
17 | - language: android
18 | os: linux
19 | env:
20 | - Platform="Android"
21 | jdk: oraclejdk8
22 | before_install: nvm install 6.10.3
23 | script: cd demo && npm run build.plugin && npm i && npm run build-android-bundle
24 | - stage: "Build and Test"
25 | env:
26 | - BuildAndroid="25"
27 | language: android
28 | os: linux
29 | jdk: oraclejdk8
30 | before_install: nvm install stable
31 | script:
32 | - cd src && npm i && npm run tsc && cd ../demo && tns build android
33 | - os: osx
34 | env:
35 | - BuildiOS="10.3"
36 | - Xcode="8.3"
37 | osx_image: xcode8.3
38 | language: node_js
39 | node_js: "6"
40 | jdk: oraclejdk8
41 | script:
42 | - cd src && npm i && npm run tsc && cd ../demo && tns build ios
43 | - os: linux
44 | language: android
45 | dist: precise
46 | sudo: required
47 | jdk: oraclejdk8
48 | before_script:
49 | - echo no | android create avd --force -n test -t android-21 -b armeabi-v7a
50 | - emulator -avd test -no-audio -no-window &
51 | - android-wait-for-emulator
52 | before_install:
53 | - nvm install 6
54 | script: cd src && npm run test.android
55 | - os: osx
56 | language: node_js
57 | node_js: "6"
58 | jdk: oraclejdk8
59 | osx_image: xcode8.3
60 | script: cd src && npm run test.ios
61 |
62 | android:
63 | components:
64 | - tools
65 | - platform-tools
66 | - build-tools-25.0.2
67 | - android-25
68 | - extra-android-m2repository
69 | - sys-img-armeabi-v7a-android-21
70 |
71 | install:
72 | - echo no | npm install -g nativescript
73 | - tns usage-reporting disable
74 | - tns error-reporting disable
--------------------------------------------------------------------------------
/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 | # nativescript-animated-circle
2 |
3 | [](https://www.npmjs.com/package/nativescript-animated-circle)
4 | [](https://www.npmjs.com/package/nativescript-animated-circle)
5 |
6 | [](https://nodei.co/npm/nativescript-animated-circle/)
7 |
8 | Creates an animated circle (animates the border of the circle) on iOS and Android.
9 |
10 | | iOS | Android |
11 | | --- | --- |
12 | |
|
|
13 |
14 | ## Installation
15 |
16 | ```
17 | tns plugin add nativescript-animated-circle
18 | ```
19 |
20 | ## Usage
21 |
22 | ```
23 |
25 |
40 |
41 | ```
42 |
43 | #### Angular
44 |
45 | To use this plugin in Angular, please register the element above your `AppModule` declaration.
46 |
47 | ```
48 | import { registerElement } from 'nativescript-angular/element-registry'
49 |
50 | registerElement('AnimatedCircle', () => require('nativescript-animated-circle').AnimatedCircle);
51 | ```
52 |
53 | Then you can leverage the plugin using `` in your templates.
54 |
55 | ## API
56 |
57 | | Property | Default | Description |
58 | | --- | --- | --- |
59 | | rimColor | #FF5722 | The filled portion of the circle border's color. |
60 | | barColor | #3D8FF4 | The remaining (unfilled) portion of the circle border. |
61 | | clockwise | true | The CW (true) or CCW (false) draw direction. |
62 | | rimWidth | 5 | The border radius of the circle. |
63 | | progress | 0 | The current progress value. |
64 | | startAngle | 0 | The angle to start drawing from. |
65 | | endAngle | 100 | _iOS only_ the end angle to stop drawing at. |
66 | | animated | false | _Android only_ animation status. |
67 | | animateFrom | 0 | _Android only_ the progress value to animate from. |
68 | | animationDuration | 1000 | _Android only_ the duration to animate for. |
69 | | text | "" | The text inside of the circle. |
70 | | textSize | 0 | Text size, 0 will hide the text |
71 | | textColor | #ff0000 | Text color |
72 |
73 | ### Available for Contract
74 |
75 | Need velocity on your NativeScript projects? I'm available to build beautiful and performant NativeScript applications for your business requirements. Email me direct: sean@devonite.com to discuss project details.
76 |
77 | ## License
78 |
79 | Apache License Version 2.0, January 2004
80 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/AndroidManifest.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 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/app.gradle:
--------------------------------------------------------------------------------
1 | // Add your native dependencies here:
2 |
3 | // Uncomment to add recyclerview-v7 dependency
4 | //dependencies {
5 | // compile 'com.android.support:recyclerview-v7:+'
6 | //}
7 |
8 | android {
9 | defaultConfig {
10 | generatedDensities = []
11 | applicationId = "org.nativescript.demo"
12 | }
13 | aaptOptions {
14 | additionalParameters "--no-version-vectors"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-hdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-hdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-hdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-hdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-ldpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-ldpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-ldpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-mdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-mdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-nodpi/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
5 | -
6 |
7 |
8 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxxhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/values-v21/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3d5afe
4 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
14 |
15 |
16 |
19 |
20 |
23 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #F5F5F5
4 | #757575
5 | #33B5E5
6 | #272734
7 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
18 |
19 |
21 |
22 |
23 |
31 |
32 |
34 |
35 |
36 |
42 |
43 |
45 |
46 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "29x29",
5 | "idiom" : "iphone",
6 | "filename" : "icon-29.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "29x29",
11 | "idiom" : "iphone",
12 | "filename" : "icon-29@2x.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "icon-29@3x.png",
19 | "scale" : "3x"
20 | },
21 | {
22 | "size" : "40x40",
23 | "idiom" : "iphone",
24 | "filename" : "icon-40@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "icon-40@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "57x57",
35 | "idiom" : "iphone",
36 | "filename" : "icon-57.png",
37 | "scale" : "1x"
38 | },
39 | {
40 | "size" : "57x57",
41 | "idiom" : "iphone",
42 | "filename" : "icon-57@2x.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "icon-60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "icon-60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "29x29",
59 | "idiom" : "ipad",
60 | "filename" : "icon-29.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "29x29",
65 | "idiom" : "ipad",
66 | "filename" : "icon-29@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "40x40",
71 | "idiom" : "ipad",
72 | "filename" : "icon-40.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "40x40",
77 | "idiom" : "ipad",
78 | "filename" : "icon-40@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "50x50",
83 | "idiom" : "ipad",
84 | "filename" : "icon-50.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "50x50",
89 | "idiom" : "ipad",
90 | "filename" : "icon-50@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "72x72",
95 | "idiom" : "ipad",
96 | "filename" : "icon-72.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "72x72",
101 | "idiom" : "ipad",
102 | "filename" : "icon-72@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "76x76",
107 | "idiom" : "ipad",
108 | "filename" : "icon-76.png",
109 | "scale" : "1x"
110 | },
111 | {
112 | "size" : "76x76",
113 | "idiom" : "ipad",
114 | "filename" : "icon-76@2x.png",
115 | "scale" : "2x"
116 | },
117 | {
118 | "size" : "83.5x83.5",
119 | "idiom" : "ipad",
120 | "filename" : "icon-83.5@2x.png",
121 | "scale" : "2x"
122 | }
123 | ],
124 | "info" : {
125 | "version" : 1,
126 | "author" : "xcode"
127 | }
128 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "extent" : "full-screen",
5 | "idiom" : "iphone",
6 | "subtype" : "736h",
7 | "filename" : "Default-736h@3x.png",
8 | "minimum-system-version" : "8.0",
9 | "orientation" : "portrait",
10 | "scale" : "3x"
11 | },
12 | {
13 | "extent" : "full-screen",
14 | "idiom" : "iphone",
15 | "subtype" : "736h",
16 | "filename" : "Default-Landscape@3x.png",
17 | "minimum-system-version" : "8.0",
18 | "orientation" : "landscape",
19 | "scale" : "3x"
20 | },
21 | {
22 | "extent" : "full-screen",
23 | "idiom" : "iphone",
24 | "subtype" : "667h",
25 | "filename" : "Default-667h@2x.png",
26 | "minimum-system-version" : "8.0",
27 | "orientation" : "portrait",
28 | "scale" : "2x"
29 | },
30 | {
31 | "orientation" : "portrait",
32 | "idiom" : "iphone",
33 | "filename" : "Default@2x.png",
34 | "extent" : "full-screen",
35 | "minimum-system-version" : "7.0",
36 | "scale" : "2x"
37 | },
38 | {
39 | "extent" : "full-screen",
40 | "idiom" : "iphone",
41 | "subtype" : "retina4",
42 | "filename" : "Default-568h@2x.png",
43 | "minimum-system-version" : "7.0",
44 | "orientation" : "portrait",
45 | "scale" : "2x"
46 | },
47 | {
48 | "orientation" : "portrait",
49 | "idiom" : "ipad",
50 | "filename" : "Default-Portrait.png",
51 | "extent" : "full-screen",
52 | "minimum-system-version" : "7.0",
53 | "scale" : "1x"
54 | },
55 | {
56 | "orientation" : "landscape",
57 | "idiom" : "ipad",
58 | "filename" : "Default-Landscape.png",
59 | "extent" : "full-screen",
60 | "minimum-system-version" : "7.0",
61 | "scale" : "1x"
62 | },
63 | {
64 | "orientation" : "portrait",
65 | "idiom" : "ipad",
66 | "filename" : "Default-Portrait@2x.png",
67 | "extent" : "full-screen",
68 | "minimum-system-version" : "7.0",
69 | "scale" : "2x"
70 | },
71 | {
72 | "orientation" : "landscape",
73 | "idiom" : "ipad",
74 | "filename" : "Default-Landscape@2x.png",
75 | "extent" : "full-screen",
76 | "minimum-system-version" : "7.0",
77 | "scale" : "2x"
78 | },
79 | {
80 | "orientation" : "portrait",
81 | "idiom" : "iphone",
82 | "filename" : "Default.png",
83 | "extent" : "full-screen",
84 | "scale" : "1x"
85 | },
86 | {
87 | "orientation" : "portrait",
88 | "idiom" : "iphone",
89 | "filename" : "Default@2x.png",
90 | "extent" : "full-screen",
91 | "scale" : "2x"
92 | },
93 | {
94 | "orientation" : "portrait",
95 | "idiom" : "iphone",
96 | "filename" : "Default-568h@2x.png",
97 | "extent" : "full-screen",
98 | "subtype" : "retina4",
99 | "scale" : "2x"
100 | },
101 | {
102 | "orientation" : "portrait",
103 | "idiom" : "ipad",
104 | "extent" : "to-status-bar",
105 | "scale" : "1x"
106 | },
107 | {
108 | "orientation" : "portrait",
109 | "idiom" : "ipad",
110 | "filename" : "Default-Portrait.png",
111 | "extent" : "full-screen",
112 | "scale" : "1x"
113 | },
114 | {
115 | "orientation" : "landscape",
116 | "idiom" : "ipad",
117 | "extent" : "to-status-bar",
118 | "scale" : "1x"
119 | },
120 | {
121 | "orientation" : "landscape",
122 | "idiom" : "ipad",
123 | "filename" : "Default-Landscape.png",
124 | "extent" : "full-screen",
125 | "scale" : "1x"
126 | },
127 | {
128 | "orientation" : "portrait",
129 | "idiom" : "ipad",
130 | "extent" : "to-status-bar",
131 | "scale" : "2x"
132 | },
133 | {
134 | "orientation" : "portrait",
135 | "idiom" : "ipad",
136 | "filename" : "Default-Portrait@2x.png",
137 | "extent" : "full-screen",
138 | "scale" : "2x"
139 | },
140 | {
141 | "orientation" : "landscape",
142 | "idiom" : "ipad",
143 | "extent" : "to-status-bar",
144 | "scale" : "2x"
145 | },
146 | {
147 | "orientation" : "landscape",
148 | "idiom" : "ipad",
149 | "filename" : "Default-Landscape@2x.png",
150 | "extent" : "full-screen",
151 | "scale" : "2x"
152 | }
153 | ],
154 | "info" : {
155 | "version" : 1,
156 | "author" : "xcode"
157 | }
158 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchScreen-AspectFill.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchScreen-AspectFill@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchScreen-Center.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchScreen-Center@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sean-perkins/nativescript-animated-circle/0180577fb337d212876389dede4fdcef05dc852c/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIRequiresFullScreen
28 |
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
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 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/build.xcconfig:
--------------------------------------------------------------------------------
1 | // You can add custom settings here
2 | // for example you can uncomment the following line to force distribution code signing
3 | // CODE_SIGN_IDENTITY = iPhone Distribution
4 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
5 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
6 |
--------------------------------------------------------------------------------
/demo/app/app.css:
--------------------------------------------------------------------------------
1 | @import 'nativescript-theme-core/css/core.light.css';
2 |
--------------------------------------------------------------------------------
/demo/app/app.ts:
--------------------------------------------------------------------------------
1 | import * as application from 'tns-core-modules/application';
2 | application.start({ moduleName: 'main-page' });
3 |
--------------------------------------------------------------------------------
/demo/app/main-page.ts:
--------------------------------------------------------------------------------
1 | import * as observable from 'tns-core-modules/data/observable';
2 | import * as pages from 'tns-core-modules/ui/page';
3 | import { HelloWorldModel } from './main-view-model';
4 |
5 | // Event handler for Page 'loaded' event attached in main-page.xml
6 | export function pageLoaded(args: observable.EventData) {
7 | // Get the event sender
8 | const page = args.object;
9 | page.bindingContext = new HelloWorldModel();
10 | }
11 |
--------------------------------------------------------------------------------
/demo/app/main-page.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/demo/app/main-view-model.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from 'tns-core-modules/data/observable';
2 |
3 | export class HelloWorldModel extends Observable {
4 | public message: string;
5 |
6 | private _progress: number = 30;
7 |
8 | constructor() {
9 | super();
10 | setInterval(() => {
11 | if (this.progress === 100) {
12 | this.progress = 0;
13 | }
14 | this.progress++;
15 | }, 1000);
16 | }
17 |
18 | set progress(value: number) {
19 | if (this._progress !== value) {
20 | this._progress = value;
21 | this.notifyPropertyChange('progress', value);
22 | }
23 | }
24 |
25 | get progress() {
26 | return this._progress;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/demo/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "android": {
3 | "v8Flags": "--expose_gc",
4 | "markingMode": "none"
5 | },
6 | "main": "app.js",
7 | "name": "tns-template-hello-world",
8 | "version": "3.2.0"
9 | }
10 |
--------------------------------------------------------------------------------
/demo/app/tests/tests.js:
--------------------------------------------------------------------------------
1 | var AnimatedCircle = require('nativescript-animated-circle').AnimatedCircle;
2 | var animatedCircle = new AnimatedCircle();
3 |
4 | describe('greet function', function() {
5 | it('exists', function() {
6 | expect(animatedCircle.greet).toBeDefined();
7 | });
8 |
9 | it('returns a string', function() {
10 | expect(animatedCircle.greet()).toEqual('Hello, NS');
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/demo/karma.conf.js:
--------------------------------------------------------------------------------
1 | module.exports = function(config) {
2 | config.set({
3 |
4 | // base path that will be used to resolve all patterns (eg. files, exclude)
5 | basePath: '',
6 |
7 |
8 | // frameworks to use
9 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
10 | frameworks: ['jasmine'],
11 |
12 |
13 | // list of files / patterns to load in the browser
14 | files: [
15 | 'app/**/*.js'
16 | ],
17 |
18 |
19 | // list of files to exclude
20 | exclude: [
21 | ],
22 |
23 |
24 | // preprocess matching files before serving them to the browser
25 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
26 | preprocessors: {
27 | },
28 |
29 |
30 | // test results reporter to use
31 | // possible values: 'dots', 'progress'
32 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter
33 | reporters: ['progress'],
34 |
35 |
36 | // web server port
37 | port: 9876,
38 |
39 |
40 | // enable / disable colors in the output (reporters and logs)
41 | colors: true,
42 |
43 |
44 | // level of logging
45 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
46 | logLevel: config.LOG_INFO,
47 |
48 |
49 | // enable / disable watching file and executing tests whenever any file changes
50 | autoWatch: true,
51 |
52 |
53 | // start these browsers
54 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
55 | browsers: [],
56 |
57 | customLaunchers: {
58 | android: {
59 | base: 'NS',
60 | platform: 'android'
61 | },
62 | ios: {
63 | base: 'NS',
64 | platform: 'ios'
65 | },
66 | ios_simulator: {
67 | base: 'NS',
68 | platform: 'ios',
69 | arguments: ['--emulator']
70 | }
71 | },
72 |
73 | // Continuous Integration mode
74 | // if true, Karma captures browsers, runs the tests and exits
75 | singleRun: true
76 | });
77 | };
78 |
--------------------------------------------------------------------------------
/demo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "nativescript": {
3 | "id": "org.nativescript.demo",
4 | "tns-ios": {
5 | "version": "5.2.0"
6 | },
7 | "tns-android": {
8 | "version": "5.2.1"
9 | }
10 | },
11 | "dependencies": {
12 | "nativescript-animated-circle": "file:../src",
13 | "nativescript-theme-core": "^1.0.4",
14 | "nativescript-unit-test-runner": "^0.5.1",
15 | "tns-core-modules": "^5.2.2"
16 | },
17 | "devDependencies": {
18 | "jasmine-core": "3.3.0",
19 | "karma": "4.0.1",
20 | "karma-jasmine": "1.1.2",
21 | "karma-nativescript-launcher": "0.4.0",
22 | "nativescript-dev-typescript": "~0.8.0",
23 | "nativescript-dev-webpack": "^0.20.3",
24 | "tns-platform-declarations": "^5.2.2",
25 | "tslint": "~5.13.1",
26 | "typescript": "~3.1.6"
27 | },
28 | "scripts": {
29 | "build.plugin": "cd ../src && npm run build",
30 | "ci.tslint": "npm i && tslint --config '../tslint.json' 'app/**/*.ts' --exclude '**/node_modules/**' --exclude '**/platforms/**'"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/demo/references.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/demo/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "declaration": false,
6 | "removeComments": true,
7 | "noLib": false,
8 | "emitDecoratorMetadata": true,
9 | "experimentalDecorators": true,
10 | "lib": [
11 | "es6",
12 | "dom"
13 | ],
14 | "pretty": true,
15 | "allowUnreachableCode": false,
16 | "allowUnusedLabels": false,
17 | "noEmitHelpers": true,
18 | "noEmitOnError": false,
19 | "noImplicitAny": false,
20 | "noImplicitReturns": true,
21 | "noImplicitUseStrict": false,
22 | "noFallthroughCasesInSwitch": true,
23 | "baseUrl": ".",
24 | "paths": {
25 | "*": [
26 | "./node_modules/*"
27 | ],
28 | "~/*": [
29 | "app/*"
30 | ]
31 | }
32 | },
33 | "include": [
34 | "../src",
35 | "**/*"
36 | ],
37 | "exclude": [
38 | "../src/node_modules",
39 | "node_modules",
40 | "platforms"
41 | ],
42 | "compileOnSave": false
43 | }
--------------------------------------------------------------------------------
/demo/tsconfig.tns.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig",
3 | "compilerOptions": {
4 | "module": "es2015",
5 | "moduleResolution": "node"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/demo/webpack.config.js:
--------------------------------------------------------------------------------
1 | const { join, relative, resolve, sep } = require("path");
2 |
3 | const webpack = require("webpack");
4 | const nsWebpack = require("nativescript-dev-webpack");
5 | const nativescriptTarget = require("nativescript-dev-webpack/nativescript-target");
6 | const CleanWebpackPlugin = require("clean-webpack-plugin");
7 | const CopyWebpackPlugin = require("copy-webpack-plugin");
8 | const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
9 | const { NativeScriptWorkerPlugin } = require("nativescript-worker-loader/NativeScriptWorkerPlugin");
10 | const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
11 | const hashSalt = Date.now().toString();
12 |
13 | module.exports = env => {
14 | // Add your custom Activities, Services and other Android app components here.
15 | const appComponents = [
16 | "tns-core-modules/ui/frame",
17 | "tns-core-modules/ui/frame/activity",
18 | ];
19 |
20 | const platform = env && (env.android && "android" || env.ios && "ios");
21 | if (!platform) {
22 | throw new Error("You need to provide a target platform!");
23 | }
24 |
25 | const platforms = ["ios", "android"];
26 | const projectRoot = __dirname;
27 |
28 | // Default destination inside platforms//...
29 | const dist = resolve(projectRoot, nsWebpack.getAppPath(platform, projectRoot));
30 | const appResourcesPlatformDir = platform === "android" ? "Android" : "iOS";
31 |
32 | const {
33 | // The 'appPath' and 'appResourcesPath' values are fetched from
34 | // the nsconfig.json configuration file
35 | // when bundling with `tns run android|ios --bundle`.
36 | appPath = "app",
37 | appResourcesPath = "app/App_Resources",
38 |
39 | // You can provide the following flags when running 'tns run android|ios'
40 | snapshot, // --env.snapshot
41 | uglify, // --env.uglify
42 | report, // --env.report
43 | sourceMap, // --env.sourceMap
44 | hmr, // --env.hmr,
45 | } = env;
46 | const externals = nsWebpack.getConvertedExternals(env.externals);
47 |
48 | const appFullPath = resolve(projectRoot, appPath);
49 | const appResourcesFullPath = resolve(projectRoot, appResourcesPath);
50 |
51 | const entryModule = nsWebpack.getEntryModule(appFullPath);
52 | const entryPath = `.${sep}${entryModule}.ts`;
53 |
54 | const config = {
55 | mode: uglify ? "production" : "development",
56 | context: appFullPath,
57 | externals,
58 | watchOptions: {
59 | ignored: [
60 | appResourcesFullPath,
61 | // Don't watch hidden files
62 | "**/.*",
63 | ]
64 | },
65 | target: nativescriptTarget,
66 | entry: {
67 | bundle: entryPath,
68 | },
69 | output: {
70 | pathinfo: false,
71 | path: dist,
72 | libraryTarget: "commonjs2",
73 | filename: "[name].js",
74 | globalObject: "global",
75 | hashSalt
76 | },
77 | resolve: {
78 | extensions: [".ts", ".js", ".scss", ".css"],
79 | // Resolve {N} system modules from tns-core-modules
80 | modules: [
81 | resolve(__dirname, "node_modules/tns-core-modules"),
82 | resolve(__dirname, "node_modules"),
83 | "node_modules/tns-core-modules",
84 | "node_modules",
85 | ],
86 | alias: {
87 | '~': appFullPath
88 | },
89 | // resolve symlinks to symlinked modules
90 | symlinks: true
91 | },
92 | resolveLoader: {
93 | // don't resolve symlinks to symlinked loaders
94 | symlinks: false
95 | },
96 | node: {
97 | // Disable node shims that conflict with NativeScript
98 | "http": false,
99 | "timers": false,
100 | "setImmediate": false,
101 | "fs": "empty",
102 | "__dirname": false,
103 | },
104 | devtool: sourceMap ? "inline-source-map" : "none",
105 | optimization: {
106 | splitChunks: {
107 | cacheGroups: {
108 | vendor: {
109 | name: "vendor",
110 | chunks: "all",
111 | test: (module, chunks) => {
112 | const moduleName = module.nameForCondition ? module.nameForCondition() : '';
113 | return /[\\/]node_modules[\\/]/.test(moduleName) ||
114 | appComponents.some(comp => comp === moduleName);
115 |
116 | },
117 | enforce: true,
118 | },
119 | }
120 | },
121 | minimize: !!uglify,
122 | minimizer: [
123 | new UglifyJsPlugin({
124 | parallel: true,
125 | cache: true,
126 | uglifyOptions: {
127 | output: {
128 | comments: false,
129 | },
130 | compress: {
131 | // The Android SBG has problems parsing the output
132 | // when these options are enabled
133 | 'collapse_vars': platform !== "android",
134 | sequences: platform !== "android",
135 | }
136 | }
137 | })
138 | ],
139 | },
140 | module: {
141 | rules: [
142 | {
143 | test: new RegExp(entryPath),
144 | use: [
145 | // Require all Android app components
146 | platform === "android" && {
147 | loader: "nativescript-dev-webpack/android-app-components-loader",
148 | options: { modules: appComponents }
149 | },
150 |
151 | {
152 | loader: "nativescript-dev-webpack/bundle-config-loader",
153 | options: {
154 | loadCss: !snapshot, // load the application css if in debug mode
155 | }
156 | },
157 | ].filter(loader => !!loader)
158 | },
159 |
160 | {
161 | test: /-page\.ts$/,
162 | use: "nativescript-dev-webpack/script-hot-loader"
163 | },
164 |
165 | {
166 | test: /\.(css|scss)$/,
167 | use: "nativescript-dev-webpack/style-hot-loader"
168 | },
169 |
170 | {
171 | test: /\.(html|xml)$/,
172 | use: "nativescript-dev-webpack/markup-hot-loader"
173 | },
174 |
175 | { test: /\.(html|xml)$/, use: "nativescript-dev-webpack/xml-namespace-loader"},
176 |
177 | {
178 | test: /\.css$/,
179 | use: { loader: "css-loader", options: { minimize: false, url: false } }
180 | },
181 |
182 | {
183 | test: /\.scss$/,
184 | use: [
185 | { loader: "css-loader", options: { minimize: false, url: false } },
186 | "sass-loader"
187 | ]
188 | },
189 |
190 | {
191 | test: /\.ts$/,
192 | use: {
193 | loader: "ts-loader",
194 | options: {
195 | configFile: "tsconfig.tns.json",
196 | allowTsInNodeModules: true,
197 | },
198 | }
199 | },
200 | ]
201 | },
202 | plugins: [
203 | // Define useful constants like TNS_WEBPACK
204 | new webpack.DefinePlugin({
205 | "global.TNS_WEBPACK": "true",
206 | "process": undefined,
207 | }),
208 | // Remove all files from the out dir.
209 | new CleanWebpackPlugin([ `${dist}/**/*` ]),
210 | // Copy native app resources to out dir.
211 | new CopyWebpackPlugin([
212 | {
213 | from: `${appResourcesFullPath}/${appResourcesPlatformDir}`,
214 | to: `${dist}/App_Resources/${appResourcesPlatformDir}`,
215 | context: projectRoot
216 | },
217 | ]),
218 | // Copy assets to out dir. Add your own globs as needed.
219 | new CopyWebpackPlugin([
220 | { from: { glob: "fonts/**" } },
221 | { from: { glob: "**/*.jpg" } },
222 | { from: { glob: "**/*.png" } },
223 | ], { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }),
224 | // Generate a bundle starter script and activate it in package.json
225 | new nsWebpack.GenerateBundleStarterPlugin([
226 | "./vendor",
227 | "./bundle",
228 | ]),
229 | // For instructions on how to set up workers with webpack
230 | // check out https://github.com/nativescript/worker-loader
231 | new NativeScriptWorkerPlugin(),
232 | new nsWebpack.PlatformFSPlugin({
233 | platform,
234 | platforms,
235 | }),
236 | // Does IPC communication with the {N} CLI to notify events when running in watch mode.
237 | new nsWebpack.WatchStateLoggerPlugin(),
238 | ],
239 | };
240 |
241 | if (report) {
242 | // Generate report files for bundles content
243 | config.plugins.push(new BundleAnalyzerPlugin({
244 | analyzerMode: "static",
245 | openAnalyzer: false,
246 | generateStatsFile: true,
247 | reportFilename: resolve(projectRoot, "report", `report.html`),
248 | statsFilename: resolve(projectRoot, "report", `stats.json`),
249 | }));
250 | }
251 |
252 | if (snapshot) {
253 | config.plugins.push(new nsWebpack.NativeScriptSnapshotPlugin({
254 | chunk: "vendor",
255 | requireModules: [
256 | "tns-core-modules/bundle-entry-points",
257 | ],
258 | projectRoot,
259 | webpackConfig: config,
260 | }));
261 | }
262 |
263 | if (hmr) {
264 | config.plugins.push(new webpack.HotModuleReplacementPlugin());
265 | }
266 |
267 |
268 | return config;
269 | };
270 |
--------------------------------------------------------------------------------
/publish/pack.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | SOURCE_DIR=../src;
4 | TO_SOURCE_DIR=src;
5 | PACK_DIR=package;
6 | ROOT_DIR=..;
7 | PUBLISH=--publish
8 |
9 | install(){
10 | npm i
11 | }
12 |
13 | pack() {
14 |
15 | echo 'Clearing /src and /package...'
16 | node_modules/.bin/rimraf "$TO_SOURCE_DIR"
17 | node_modules/.bin/rimraf "$PACK_DIR"
18 |
19 | # copy src
20 | echo 'Copying src...'
21 | node_modules/.bin/ncp "$SOURCE_DIR" "$TO_SOURCE_DIR"
22 |
23 | # copy README & LICENSE to src
24 | echo 'Copying README and LICENSE to /src...'
25 | node_modules/.bin/ncp "$ROOT_DIR"/LICENSE "$TO_SOURCE_DIR"/LICENSE
26 | node_modules/.bin/ncp "$ROOT_DIR"/README.md "$TO_SOURCE_DIR"/README.md
27 |
28 | # compile package and copy files required by npm
29 | echo 'Building /src...'
30 | cd "$TO_SOURCE_DIR"
31 | node_modules/.bin/tsc
32 | cd ..
33 |
34 | echo 'Creating package...'
35 | # create package dir
36 | mkdir "$PACK_DIR"
37 |
38 | # create the package
39 | cd "$PACK_DIR"
40 | npm pack ../"$TO_SOURCE_DIR"
41 |
42 | # delete source directory used to create the package
43 | cd ..
44 | node_modules/.bin/rimraf "$TO_SOURCE_DIR"
45 | }
46 |
47 | install && pack
--------------------------------------------------------------------------------
/publish/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-publish",
3 | "version": "1.0.0",
4 | "description": "Publish helper",
5 | "devDependencies": {
6 | "ncp": "^2.0.0",
7 | "rimraf": "^2.5.0"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/publish/publish.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | PACK_DIR=package;
4 |
5 | publish() {
6 | cd $PACK_DIR
7 | echo 'Publishing to npm...'
8 | npm publish *.tgz
9 | }
10 |
11 | ./pack.sh && publish
--------------------------------------------------------------------------------
/src/.npmignore:
--------------------------------------------------------------------------------
1 | # generated files
2 | .vs
3 | .vs/
4 | .sln
5 | *.sln
6 | demo/
7 | screens/
8 | node_modules/
9 | typings/
10 |
11 | *.ts
12 | !*.d.ts
13 | *.map
14 | tsconfig.json
15 | scripts/*
16 | platforms/android/*
17 | !platforms/android/include.gradle
18 | !platforms/android/*.aar
19 | !platforms/android/*.jar
20 | references.d.ts
21 |
--------------------------------------------------------------------------------
/src/animated-circle.android.ts:
--------------------------------------------------------------------------------
1 | import { Common } from './animated-circle.common';
2 | import { Color } from 'tns-core-modules/color';
3 |
4 | declare const at;
5 |
6 | export class AnimatedCircle extends Common {
7 | private _android: any;
8 | private _progress: number;
9 | private _animateFrom: number;
10 | private _animationDuration = 1000;
11 | private _animated: boolean;
12 | private _maxValue = 100;
13 | private _rimColor = '#FF5722';
14 | private _rimWidth = 5;
15 | private _spinBarColor: any;
16 | private _barWidth: number;
17 | private _startAngle: number;
18 | private _text = '';
19 | private _textColor = new Color('orange');
20 | private _textSize = 28 * 10;
21 |
22 | clockwise = true;
23 |
24 | barColor = '#3D8FF4';
25 | fillColor: any;
26 |
27 |
28 | constructor() {
29 | super();
30 | }
31 |
32 | createNativeView() {
33 | return new at.grabner.circleprogress.CircleProgressView(this._context, null);
34 | }
35 |
36 | initNativeView() {
37 | this.android.setAutoTextSize(false);
38 | this.android.setTextMode(at.grabner.circleprogress.TextMode.TEXT);
39 | this.android.setTextScale(1.1);
40 | this.android.setTextSize(300);
41 | this.android.setUnitVisible(false);
42 | this.updateAnimatedCircle();
43 | }
44 |
45 | get android() {
46 | return this.nativeView;
47 | }
48 |
49 | set progress(value: number) {
50 | this._progress = Number(value);
51 | this.updateAnimatedCircle();
52 | }
53 |
54 | get progress(): number {
55 | return this._progress;
56 | }
57 |
58 | set animateFrom(value: number) {
59 | this._animateFrom = Number(value);
60 | this.updateAnimatedCircle();
61 | }
62 |
63 | get animateFrom(): number {
64 | return this._animateFrom;
65 | }
66 |
67 | set animationDuration(value: number) {
68 | this._animationDuration = Number(value);
69 | this.updateAnimatedCircle();
70 | }
71 |
72 | get animationDuration(): number {
73 | return this._animationDuration;
74 | }
75 |
76 | set animated(value: boolean) {
77 | this._animated = Boolean(value);
78 | this.updateAnimatedCircle();
79 | }
80 |
81 | get animated(): boolean {
82 | return this._animated;
83 | }
84 |
85 | set maxValue(value: number) {
86 | this._maxValue = Number(value);
87 | this.updateAnimatedCircle();
88 | }
89 |
90 | get maxValue(): number {
91 | return this._maxValue;
92 | }
93 |
94 | set rimColor(value: any) {
95 | this._rimColor = value;
96 | this.updateAnimatedCircle();
97 | }
98 |
99 | get rimColor() {
100 | return this._rimColor;
101 | }
102 |
103 | set rimWidth(value: number) {
104 | this._rimWidth = Number(value);
105 | this.updateAnimatedCircle();
106 | }
107 |
108 | get rimWidth() {
109 | return this._rimWidth;
110 | }
111 |
112 | set spinBarColor(value: any) {
113 | this._spinBarColor = value;
114 | this.updateAnimatedCircle();
115 | }
116 |
117 | get spinBarColor() {
118 | return this._spinBarColor;
119 | }
120 |
121 | set startAngle(value: number) {
122 | this._startAngle = Number(value);
123 | this.updateAnimatedCircle();
124 | }
125 |
126 | get startAngle() {
127 | return this._startAngle;
128 | }
129 |
130 | set barWidth(value: number) {
131 | this._barWidth = Number(value);
132 | this.updateAnimatedCircle();
133 | }
134 |
135 | get barWidth() {
136 | return this._barWidth;
137 | }
138 |
139 | set text(value: string) {
140 | this._text = value;
141 | this.updateAnimatedCircle();
142 | }
143 |
144 | get text() {
145 | return this.android.getText();
146 | }
147 |
148 | set textColor(value: string) {
149 | this._textColor = new Color(value);
150 | this.updateAnimatedCircle();
151 | }
152 |
153 | set textSize(value: number) {
154 | this._textSize = value * 10;
155 | this.updateAnimatedCircle();
156 | }
157 |
158 | get textSize() {
159 |
160 | return this.android.getTextSize();
161 | }
162 |
163 | private updateAnimatedCircle(): void {
164 | if (this.android) {
165 | this.android.setText(this._text);
166 | this.android.setTextColor(this._textColor.argb);
167 | this.android.setTextSize(this._textSize);
168 | if (this.animated) {
169 | if (this.animateFrom) {
170 | this.android.setValueAnimated(this.animateFrom, this.progress, this.animationDuration);
171 | }
172 | else {
173 | if (!this._animationDuration) {
174 | this.android.setValueAnimated(this.progress);
175 | }
176 | else {
177 | this.android.setValueAnimated(this.progress, this.animationDuration);
178 | }
179 | }
180 | }
181 | else {
182 | this.android.setValue(this.progress);
183 | }
184 | this.android.setMaxValue(this.maxValue);
185 | if (this.rimColor) {
186 | this.android.setRimColor(new Color(this.rimColor).argb);
187 | }
188 | if (this.spinBarColor) {
189 | this.android.setSpinBarColor(new Color(this.spinBarColor).argb);
190 | }
191 | if (this.startAngle) {
192 | this.android.setStartAngle(this.startAngle);
193 | }
194 | if (this.barWidth) {
195 | this.android.setBarWidth(this.barWidth);
196 | } else {
197 | if (this.rimWidth) {
198 | // set rim width to bar width if no bar width provided
199 | this.android.setBarWidth(this.rimWidth);
200 | }
201 | }
202 | if (this.rimWidth) {
203 | this.android.setRimWidth(this.rimWidth);
204 | }
205 | if (this.barColor) {
206 | this.android.setBarColor([new Color(this.barColor).argb]);
207 | }
208 | if (this.fillColor) {
209 | this.android.setFillCircleColor(new Color(this.fillColor).argb);
210 | }
211 |
212 | this.android.setDirection(this.clockwise ? at.grabner.circleprogress.Direction.CW : at.grabner.circleprogress.Direction.CCW);
213 | }
214 | }
215 |
216 | }
217 |
--------------------------------------------------------------------------------
/src/animated-circle.common.ts:
--------------------------------------------------------------------------------
1 | import { ContentView } from 'tns-core-modules/ui/content-view';
2 |
3 | export class Common extends ContentView { }
4 |
5 |
--------------------------------------------------------------------------------
/src/animated-circle.ios.ts:
--------------------------------------------------------------------------------
1 | import { Common } from './animated-circle.common';
2 | import { Color } from 'tns-core-modules/color';
3 | import * as utils from 'tns-core-modules/utils/utils';
4 |
5 | export class AnimatedCircle extends Common {
6 | private _ios: any;
7 | private _label: UILabel;
8 | private _text: string;
9 |
10 | constructor() {
11 | super();
12 | this._ios = DRCircularProgressView.new();
13 | this._ios.alternativeColor = new Color('#FF5722').ios;
14 | this._ios.progressColor = new Color('#3D8FF4').ios;
15 | this._ios.backgroundColor = new Color('#348F74').ios;
16 | this._ios.thickness = 5;
17 |
18 |
19 | this._label = UILabel.alloc().initWithFrame(CGRectMake(0, 0, 0, 0));
20 | this._label.textAlignment = NSTextAlignment.Center;
21 | this._label.textColor = new Color('#3D8FF4').ios;
22 | }
23 |
24 | createNativeView() {
25 | return this._ios;
26 | }
27 |
28 | initNativeView() {
29 |
30 | }
31 |
32 | onLayout(left, top, right, bottom) {
33 | super.onLayout(left, top, right, bottom);
34 | const dpWidth = utils.layout.toDeviceIndependentPixels(this.effectiveWidth);
35 | const dpHeight = utils.layout.toDeviceIndependentPixels(this.effectiveHeight);
36 |
37 | this._label.frame = CGRectMake(0, 0, dpWidth, dpHeight);
38 | this._ios.addSubview(this._label);
39 | this._ios.bringSubviewToFront(this._label);
40 | }
41 |
42 | get ios() {
43 | return this._ios;
44 | }
45 |
46 | /**
47 | * The percentage value completed (whole number)
48 | */
49 | set progress(value: number) {
50 | this._ios.progressValue = Number(value / 100);
51 | }
52 |
53 | /**
54 | * The fill color of the percentage completed
55 | */
56 | set barColor(value: string | UIColor) {
57 | if (value instanceof UIColor) {
58 | this._ios.progressColor = value;
59 | }
60 | else if (typeof value === 'string') {
61 | this._ios.progressColor = new Color(value).ios;
62 | }
63 | }
64 |
65 | /**
66 | * The "remaining" circle color
67 | */
68 | set rimColor(value: string | UIColor) {
69 | if (value instanceof UIColor) {
70 | this._ios.alternativeColor = value;
71 | }
72 | else if (typeof value === 'string') {
73 | this._ios.alternativeColor = new Color(value).ios;
74 | }
75 | }
76 |
77 | /**
78 | * The draw direction for the filled circle
79 | */
80 | set clockwise(value: boolean) {
81 | this._ios.clockwise = value;
82 | }
83 |
84 | /**
85 | * The thickness of the circle
86 | */
87 | set rimWidth(value: number) {
88 | this._ios.thickness = value;
89 | }
90 |
91 | /**
92 | * The start angle to begin drawing the circle at
93 | */
94 | set startAngle(value: number) {
95 | this._ios.startAngle = value;
96 | }
97 |
98 | /**
99 | * The ending angle to draw the circle to
100 | */
101 | set endAngle(value: number) {
102 | this._ios.endAngle = value;
103 | }
104 |
105 | set text(value: string) {
106 | this._label.text = value;
107 | }
108 |
109 | get text() {
110 | return this._label.text;
111 | }
112 |
113 | set textColor(value: string | UIColor) {
114 | if (value instanceof UIColor) {
115 | this._label.textColor = value;
116 | }
117 | else if (typeof value === 'string') {
118 | this._label.textColor = new Color(value).ios;
119 | }
120 | }
121 |
122 | set textSize(value: number) {
123 | this._label.font = this._label.font.fontWithSize(value);
124 | }
125 |
126 | get textSize() {
127 | return this._label.font.pointSize;
128 | }
129 |
130 | }
131 |
--------------------------------------------------------------------------------
/src/index.d.ts:
--------------------------------------------------------------------------------
1 | import { Common } from './animated-circle.common';
2 | export declare class AnimatedCircle extends Common {
3 | // define your typings manually
4 | // or..
5 | // take the ios or android .d.ts files and copy/paste them here
6 | }
7 |
--------------------------------------------------------------------------------
/src/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-animated-circle",
3 | "version": "1.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-regex": {
8 | "version": "2.1.1",
9 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
10 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
11 | "dev": true
12 | },
13 | "ansi-styles": {
14 | "version": "2.2.1",
15 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
16 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
17 | "dev": true
18 | },
19 | "async": {
20 | "version": "0.9.2",
21 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
22 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
23 | "dev": true
24 | },
25 | "babel-code-frame": {
26 | "version": "6.26.0",
27 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
28 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
29 | "dev": true,
30 | "requires": {
31 | "chalk": "1.1.3",
32 | "esutils": "2.0.2",
33 | "js-tokens": "3.0.2"
34 | }
35 | },
36 | "balanced-match": {
37 | "version": "1.0.0",
38 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
39 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
40 | "dev": true
41 | },
42 | "brace-expansion": {
43 | "version": "1.1.8",
44 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
45 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
46 | "dev": true,
47 | "requires": {
48 | "balanced-match": "1.0.0",
49 | "concat-map": "0.0.1"
50 | }
51 | },
52 | "chalk": {
53 | "version": "1.1.3",
54 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
55 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
56 | "dev": true,
57 | "requires": {
58 | "ansi-styles": "2.2.1",
59 | "escape-string-regexp": "1.0.5",
60 | "has-ansi": "2.0.0",
61 | "strip-ansi": "3.0.1",
62 | "supports-color": "2.0.0"
63 | }
64 | },
65 | "colors": {
66 | "version": "1.1.2",
67 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
68 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
69 | "dev": true
70 | },
71 | "commander": {
72 | "version": "2.11.0",
73 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
74 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
75 | "dev": true
76 | },
77 | "concat-map": {
78 | "version": "0.0.1",
79 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
80 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
81 | "dev": true
82 | },
83 | "cycle": {
84 | "version": "1.0.3",
85 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
86 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
87 | "dev": true
88 | },
89 | "deep-equal": {
90 | "version": "0.2.2",
91 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
92 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=",
93 | "dev": true
94 | },
95 | "diff": {
96 | "version": "3.3.1",
97 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
98 | "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
99 | "dev": true
100 | },
101 | "escape-string-regexp": {
102 | "version": "1.0.5",
103 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
104 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
105 | "dev": true
106 | },
107 | "esutils": {
108 | "version": "2.0.2",
109 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
110 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
111 | "dev": true
112 | },
113 | "eyes": {
114 | "version": "0.1.8",
115 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
116 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
117 | "dev": true
118 | },
119 | "fs.realpath": {
120 | "version": "1.0.0",
121 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
122 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
123 | "dev": true
124 | },
125 | "glob": {
126 | "version": "7.1.2",
127 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
128 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
129 | "dev": true,
130 | "requires": {
131 | "fs.realpath": "1.0.0",
132 | "inflight": "1.0.6",
133 | "inherits": "2.0.3",
134 | "minimatch": "3.0.4",
135 | "once": "1.4.0",
136 | "path-is-absolute": "1.0.1"
137 | }
138 | },
139 | "has-ansi": {
140 | "version": "2.0.0",
141 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
142 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
143 | "dev": true,
144 | "requires": {
145 | "ansi-regex": "2.1.1"
146 | }
147 | },
148 | "i": {
149 | "version": "0.3.6",
150 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
151 | "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=",
152 | "dev": true
153 | },
154 | "inflight": {
155 | "version": "1.0.6",
156 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
157 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
158 | "dev": true,
159 | "requires": {
160 | "once": "1.4.0",
161 | "wrappy": "1.0.2"
162 | }
163 | },
164 | "inherits": {
165 | "version": "2.0.3",
166 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
167 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
168 | "dev": true
169 | },
170 | "isstream": {
171 | "version": "0.1.2",
172 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
173 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
174 | "dev": true
175 | },
176 | "js-tokens": {
177 | "version": "3.0.2",
178 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
179 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
180 | "dev": true
181 | },
182 | "minimatch": {
183 | "version": "3.0.4",
184 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
185 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
186 | "dev": true,
187 | "requires": {
188 | "brace-expansion": "1.1.8"
189 | }
190 | },
191 | "minimist": {
192 | "version": "0.0.8",
193 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
194 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
195 | "dev": true
196 | },
197 | "mkdirp": {
198 | "version": "0.5.1",
199 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
200 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
201 | "dev": true,
202 | "requires": {
203 | "minimist": "0.0.8"
204 | }
205 | },
206 | "mute-stream": {
207 | "version": "0.0.7",
208 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
209 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
210 | "dev": true
211 | },
212 | "ncp": {
213 | "version": "1.0.1",
214 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
215 | "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=",
216 | "dev": true
217 | },
218 | "once": {
219 | "version": "1.4.0",
220 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
221 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
222 | "dev": true,
223 | "requires": {
224 | "wrappy": "1.0.2"
225 | }
226 | },
227 | "path-is-absolute": {
228 | "version": "1.0.1",
229 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
230 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
231 | "dev": true
232 | },
233 | "path-parse": {
234 | "version": "1.0.5",
235 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
236 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
237 | "dev": true
238 | },
239 | "pkginfo": {
240 | "version": "0.4.1",
241 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
242 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=",
243 | "dev": true
244 | },
245 | "prompt": {
246 | "version": "1.0.0",
247 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz",
248 | "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=",
249 | "dev": true,
250 | "requires": {
251 | "colors": "1.1.2",
252 | "pkginfo": "0.4.1",
253 | "read": "1.0.7",
254 | "revalidator": "0.1.8",
255 | "utile": "0.3.0",
256 | "winston": "2.1.1"
257 | }
258 | },
259 | "read": {
260 | "version": "1.0.7",
261 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
262 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
263 | "dev": true,
264 | "requires": {
265 | "mute-stream": "0.0.7"
266 | }
267 | },
268 | "resolve": {
269 | "version": "1.4.0",
270 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
271 | "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
272 | "dev": true,
273 | "requires": {
274 | "path-parse": "1.0.5"
275 | }
276 | },
277 | "revalidator": {
278 | "version": "0.1.8",
279 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
280 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=",
281 | "dev": true
282 | },
283 | "rimraf": {
284 | "version": "2.6.2",
285 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
286 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
287 | "dev": true,
288 | "requires": {
289 | "glob": "7.1.2"
290 | }
291 | },
292 | "semver": {
293 | "version": "5.4.1",
294 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
295 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
296 | "dev": true
297 | },
298 | "stack-trace": {
299 | "version": "0.0.10",
300 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
301 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
302 | "dev": true
303 | },
304 | "strip-ansi": {
305 | "version": "3.0.1",
306 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
307 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
308 | "dev": true,
309 | "requires": {
310 | "ansi-regex": "2.1.1"
311 | }
312 | },
313 | "supports-color": {
314 | "version": "2.0.0",
315 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
316 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
317 | "dev": true
318 | },
319 | "tns-core-modules": {
320 | "version": "3.2.0",
321 | "resolved": "https://registry.npmjs.org/tns-core-modules/-/tns-core-modules-3.2.0.tgz",
322 | "integrity": "sha1-v0cYlbc8teVUnETyU0Hff100+cI=",
323 | "dev": true,
324 | "requires": {
325 | "tns-core-modules-widgets": "3.2.0"
326 | }
327 | },
328 | "tns-core-modules-widgets": {
329 | "version": "3.2.0",
330 | "resolved": "https://registry.npmjs.org/tns-core-modules-widgets/-/tns-core-modules-widgets-3.2.0.tgz",
331 | "integrity": "sha1-bTIK6dHhyudsdEPEpfrqvtsAR3M=",
332 | "dev": true
333 | },
334 | "tns-platform-declarations": {
335 | "version": "3.2.0",
336 | "resolved": "https://registry.npmjs.org/tns-platform-declarations/-/tns-platform-declarations-3.2.0.tgz",
337 | "integrity": "sha1-YDjU5mOsV+zF9g9s0R4upTxVWYo=",
338 | "dev": true
339 | },
340 | "tslib": {
341 | "version": "1.7.1",
342 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz",
343 | "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=",
344 | "dev": true
345 | },
346 | "tslint": {
347 | "version": "5.7.0",
348 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz",
349 | "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=",
350 | "dev": true,
351 | "requires": {
352 | "babel-code-frame": "6.26.0",
353 | "colors": "1.1.2",
354 | "commander": "2.11.0",
355 | "diff": "3.3.1",
356 | "glob": "7.1.2",
357 | "minimatch": "3.0.4",
358 | "resolve": "1.4.0",
359 | "semver": "5.4.1",
360 | "tslib": "1.7.1",
361 | "tsutils": "2.12.0"
362 | }
363 | },
364 | "tsutils": {
365 | "version": "2.12.0",
366 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.0.tgz",
367 | "integrity": "sha1-yJKoTI8vjeE/jvMsLFw4tFfM6sY=",
368 | "dev": true,
369 | "requires": {
370 | "tslib": "1.7.1"
371 | }
372 | },
373 | "typescript": {
374 | "version": "2.3.4",
375 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz",
376 | "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=",
377 | "dev": true
378 | },
379 | "utile": {
380 | "version": "0.3.0",
381 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz",
382 | "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=",
383 | "dev": true,
384 | "requires": {
385 | "async": "0.9.2",
386 | "deep-equal": "0.2.2",
387 | "i": "0.3.6",
388 | "mkdirp": "0.5.1",
389 | "ncp": "1.0.1",
390 | "rimraf": "2.6.2"
391 | }
392 | },
393 | "winston": {
394 | "version": "2.1.1",
395 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz",
396 | "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=",
397 | "dev": true,
398 | "requires": {
399 | "async": "1.0.0",
400 | "colors": "1.0.3",
401 | "cycle": "1.0.3",
402 | "eyes": "0.1.8",
403 | "isstream": "0.1.2",
404 | "pkginfo": "0.3.1",
405 | "stack-trace": "0.0.10"
406 | },
407 | "dependencies": {
408 | "async": {
409 | "version": "1.0.0",
410 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
411 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
412 | "dev": true
413 | },
414 | "colors": {
415 | "version": "1.0.3",
416 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
417 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
418 | "dev": true
419 | },
420 | "pkginfo": {
421 | "version": "0.3.1",
422 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
423 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=",
424 | "dev": true
425 | }
426 | }
427 | },
428 | "wrappy": {
429 | "version": "1.0.2",
430 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
431 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
432 | "dev": true
433 | }
434 | }
435 | }
436 |
--------------------------------------------------------------------------------
/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-animated-circle",
3 | "version": "1.2.0",
4 | "description": "Animated circle progress in your NativeScript applications.",
5 | "main": "animated-circle",
6 | "typings": "index.d.ts",
7 | "nativescript": {
8 | "platforms": {
9 | "android": "3.0.0",
10 | "ios": "3.0.0"
11 | }
12 | },
13 | "scripts": {
14 | "tsc": "tsc -skipLibCheck",
15 | "build": "npm i && tsc",
16 | "test.android": "npm i && npm run tsc && npm run tslint && cd ../demo && tns build android && tns test android --justlaunch",
17 | "test.ios": "npm i && npm run tsc && npm run tslint && cd ../demo && tns build ios && tns test ios --justlaunch",
18 | "tslint": "cd .. && tslint \"**/*.ts\" --config tslint.json --exclude \"**/node_modules/**\" --exclude \"*demo*/platforms/**\"",
19 | "plugin.link": "npm link && cd ../demo && npm link nativescript-geolocation && cd ../src",
20 | "plugin.tscwatch": "npm run tsc -- -w",
21 | "demo.ios": "npm i && npm run tsc && cd ../demo && tns run ios --syncAllFiles",
22 | "demo.android": "npm i && npm run tsc && cd ../demo && tns run android --syncAllFiles",
23 | "ci.tslint": "npm i && tslint '**/*.ts' --config '../tslint.json' --exclude '**/node_modules/**'",
24 | "precommit": "lint-staged",
25 | "development.setup": "npm run setup && npm link && cd ../demo && npm link nativescript-animated-circle && cd ../src",
26 | "generate.typings.ios": "cd ../demo && TNS_DEBUG_METADATA_PATH=\"$(pwd)/metadata\" tns build ios && TNS_TYPESCRIPT_DECLARATIONS_PATH=\"$(pwd)/typings\" tns build ios && echo 'Now look for your library typings in demo/typings!'",
27 | "make-changelog": "cd ../ && github_changelog_generator -u bradmartin -p nativescript-animated-circle"
28 | },
29 | "lint-staged": {
30 | "*.ts, *.js, *.css, *.scss, *.md, *.html, *.xml": [
31 | "prettier --write",
32 | "git add"
33 | ]
34 | },
35 | "keywords": [
36 | "ecosystem:nativescript",
37 | "NativeScript",
38 | "JavaScript",
39 | "Android",
40 | "iOS",
41 | "circle"
42 | ],
43 | "author": {
44 | "name": "Sean Perkins",
45 | "email": "sean@devonite.com"
46 | },
47 | "contributors": [
48 | {
49 | "name": "Brad Martin",
50 | "url": "https://github.com/bradmartin",
51 | "email": "bradwaynemartin@gmail.com"
52 | }
53 | ],
54 | "bugs": {
55 | "url": "https://github.com/sean-perkins/nativescript-animated-circle/issues"
56 | },
57 | "license": "Apache-2.0",
58 | "homepage": "https://github.com/sean-perkins/nativescript-animated-circle",
59 | "readmeFilename": "README.md",
60 | "devDependencies": {
61 | "husky": "^1.3.1",
62 | "lint-staged": "^8.1.4",
63 | "prettier": "^1.16.4",
64 | "tns-core-modules": "^5.2.2",
65 | "tns-platform-declarations": "^5.2.2",
66 | "rimraf": "^2.6.3",
67 | "tslint": "~5.13.1",
68 | "typescript": "~3.1.6"
69 | },
70 | "dependencies": {}
71 | }
72 |
--------------------------------------------------------------------------------
/src/platforms/android/include.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | maven { url "https://jitpack.io" }
4 | }
5 | }
6 |
7 | dependencies {
8 | implementation 'com.github.jakob-grabner:Circle-Progress-View:1.4'
9 | }
10 |
--------------------------------------------------------------------------------
/src/platforms/ios/Podfile:
--------------------------------------------------------------------------------
1 | pod 'DRCircularProgress', '~> 1.0.3'
2 |
--------------------------------------------------------------------------------
/src/references.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
--------------------------------------------------------------------------------
/src/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "declaration": true,
6 | "removeComments": true,
7 | "noLib": false,
8 | "skipLibCheck": true,
9 | "emitDecoratorMetadata": true,
10 | "experimentalDecorators": true,
11 | "lib": ["es6", "dom"],
12 | "sourceMap": true,
13 | "pretty": true,
14 | "allowUnreachableCode": false,
15 | "allowUnusedLabels": false,
16 | "noEmitHelpers": true,
17 | "noEmitOnError": false,
18 | "noImplicitAny": false,
19 | "noImplicitReturns": true,
20 | "noImplicitUseStrict": false,
21 | "noFallthroughCasesInSwitch": true
22 | },
23 | "exclude": ["node_modules", "typings"],
24 | "compileOnSave": false
25 | }
26 |
--------------------------------------------------------------------------------
/src/typings/DRCircularProgress.d.ts:
--------------------------------------------------------------------------------
1 |
2 | declare var DRCircularProgressVersionNumber: number;
3 |
4 | declare var DRCircularProgressVersionString: interop.Reference;
5 |
6 | declare class DRCircularProgressView extends UIView {
7 |
8 | static alloc(): DRCircularProgressView; // inherited from NSObject
9 |
10 | static appearance(): DRCircularProgressView; // inherited from UIAppearance
11 |
12 | static appearanceForTraitCollection(trait: UITraitCollection): DRCircularProgressView; // inherited from UIAppearance
13 |
14 | static appearanceForTraitCollectionWhenContainedIn(trait: UITraitCollection, ContainerClass: typeof NSObject): DRCircularProgressView; // inherited from UIAppearance
15 |
16 | static appearanceForTraitCollectionWhenContainedInInstancesOfClasses(trait: UITraitCollection, containerTypes: NSArray | typeof NSObject[]): DRCircularProgressView; // inherited from UIAppearance
17 |
18 | static appearanceWhenContainedIn(ContainerClass: typeof NSObject): DRCircularProgressView; // inherited from UIAppearance
19 |
20 | static appearanceWhenContainedInInstancesOfClasses(containerTypes: NSArray | typeof NSObject[]): DRCircularProgressView; // inherited from UIAppearance
21 |
22 | static new(): DRCircularProgressView; // inherited from NSObject
23 |
24 | alternativeColor: UIColor;
25 |
26 | clockwise: boolean;
27 |
28 | endAngle: number;
29 |
30 | progressColor: UIColor;
31 |
32 | progressValue: number;
33 |
34 | startAngle: number;
35 |
36 | thickness: number;
37 | }
38 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "class-name": true,
4 | "comment-format": [true, "check-space"],
5 | "prefer-const": true,
6 | "indent": [true, "spaces"],
7 | "no-duplicate-variable": true,
8 | "no-eval": true,
9 | "no-internal-module": true,
10 | "no-trailing-whitespace": true,
11 | "no-var-keyword": true,
12 | "one-line": [true, "check-open-brace", "check-whitespace"],
13 | "quotemark": [false, "double"],
14 | "semicolon": [true, "always"],
15 | "triple-equals": [true, "allow-null-check"],
16 | "typedef-whitespace": [
17 | true,
18 | {
19 | "call-signature": "nospace",
20 | "index-signature": "nospace",
21 | "parameter": "nospace",
22 | "property-declaration": "nospace",
23 | "variable-declaration": "nospace"
24 | }
25 | ],
26 | "variable-name": [true, "ban-keywords"],
27 | "whitespace": [
28 | true,
29 | "check-branch",
30 | "check-decl",
31 | "check-operator",
32 | "check-separator",
33 | "check-type"
34 | ]
35 | }
36 | }
37 |
--------------------------------------------------------------------------------