├── .github
└── issue_template.md
├── .gitignore
├── .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
│ │ │ ├── drawable
│ │ │ │ └── image_302063.jpg
│ │ │ ├── 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
│ │ │ ├── Images.xcassets
│ │ │ ├── Contents.json
│ │ │ └── image_302063.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── image_302063.jpg
│ │ │ ├── Info.plist
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── build.xcconfig
│ ├── app.css
│ ├── app.ts
│ ├── bundle-config.ts
│ ├── images
│ │ └── 148080.jpg
│ ├── main-page.ts
│ ├── main-page.xml
│ ├── main-view-model.ts
│ ├── package.json
│ ├── tests
│ │ └── tests.js
│ ├── vendor-platform.android.ts
│ ├── vendor-platform.ios.ts
│ └── vendor.ts
├── karma.conf.js
├── package-lock.json
├── package.json
├── references.d.ts
├── tsconfig.json
└── tsconfig.tns.json
├── publish
├── pack.sh
├── package-lock.json
├── package.json
└── publish.sh
├── src
├── .npmignore
├── image-zoom.android.ts
├── image-zoom.common.ts
├── image-zoom.ios.ts
├── index.d.ts
├── package-lock.json
├── package.json
├── platforms
│ └── android
│ │ └── include.gradle
├── references.d.ts
├── tsconfig.json
└── typings
│ └── android.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 | src/package-lock.json
26 |
--------------------------------------------------------------------------------
/.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 | - WebPack="iOS"
12 | osx_image: xcode9.2
13 | language: node_js
14 | node_js: "6"
15 | jdk: oraclejdk8
16 | script: cd demo && npm run build.plugin && npm i && tns build ios --bundle --env.uglify
17 | - language: android
18 | os: linux
19 | env:
20 | - WebPack="Android"
21 | jdk: oraclejdk8
22 | before_install: nvm install 6.10.3
23 | script: cd demo && npm run build.plugin && npm i && tns build android --bundle --env.uglify --env.snapshot
24 | - stage: "Build"
25 | env:
26 | - BuildAndroid="26"
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="11"
36 | - Xcode="9.2"
37 | osx_image: xcode9.2
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 |
44 | android:
45 | components:
46 | - tools
47 | - platform-tools
48 | - build-tools-26.0.1
49 | - android-26
50 | - android-23
51 | - extra-android-m2repository
52 | - sys-img-armeabi-v7a-android-21
53 |
54 | install:
55 | - echo no | npm install -g nativescript
56 | - tns usage-reporting disable
57 | - tns error-reporting disable
58 |
--------------------------------------------------------------------------------
/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 Image Zoom
2 |
3 | [](https://www.npmjs.com/package/nativescript-image-zoom)
4 | [](https://www.npmjs.com/package/nativescript-image-zoom)
5 | [](https://travis-ci.org/triniwiz/nativescript-image-zoom)
6 |
7 | ## Installation
8 |
9 |
10 | #### NativeScript 7x
11 |
12 | - `tns plugin add @triniwiz/nativescript-image-zoom`
13 |
14 |
15 |
16 | #### NativeScript 6<
17 |
18 | - `tns plugin add nativescript-image-zoom`
19 |
20 |
21 | ```
22 | tns plugin add nativescript-image-zoom
23 | ```
24 |
25 | # Configuration
26 |
27 | IMPORTANT: Make sure you include xmlns:ui="nativescript-image-zoom" on the
28 | Page element
29 |
30 | ```xml
31 |
32 | ```
33 |
34 | #### Angular
35 |
36 | ```ts
37 | import { registerElement } from 'nativescript-angular/element-registry';
38 | registerElement('ImageZoom', () => require('nativescript-image-zoom').ImageZoom);
39 | ```
40 |
41 | ```xml
42 |
43 | ```
44 |
45 |
46 | # API
47 |
48 |
49 | ## Properties
50 |
51 | | Property | Default | Type | Required | Description |
52 | | --- | --- | --- | ---| ---|
53 | | maxZoom | 5 | number |
| |
54 | | minZoom | 1 | number | | |
55 | | zoomScale | 1 | number | | *IOS only*|
56 | | src | | string | | |
57 |
58 |
59 | ## ScreenShots
60 | | IOS | Android|
61 | | --- | ---|
62 | | | |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
27 |
28 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-hdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-hdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-hdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-ldpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-ldpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-ldpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-ldpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-mdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-mdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxxhdpi/background.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable-xxxhdpi/logo.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/Android/drawable/image_302063.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/Android/drawable/image_302063.jpg
--------------------------------------------------------------------------------
/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/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/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Images.xcassets/image_302063.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "image_302063.jpg",
6 | "scale" : "1x"
7 | }
8 | ],
9 | "info" : {
10 | "version" : 1,
11 | "author" : "xcode"
12 | }
13 | }
--------------------------------------------------------------------------------
/demo/app/App_Resources/iOS/Images.xcassets/image_302063.imageset/image_302063.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/App_Resources/iOS/Images.xcassets/image_302063.imageset/image_302063.jpg
--------------------------------------------------------------------------------
/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 "./bundle-config";
2 | import * as application from 'tns-core-modules/application';
3 | application.start({ moduleName: "main-page" });
4 |
--------------------------------------------------------------------------------
/demo/app/bundle-config.ts:
--------------------------------------------------------------------------------
1 | if (global.TNS_WEBPACK) {
2 | // registers tns-core-modules UI framework modules
3 | require('bundle-entry-points');
4 | // register application modules
5 | // This will register each `page` postfixed xml, css, js, ts, scss etc. in the app/ folder
6 | global.registerModule('nativescript-image-zoom', () =>
7 | require('nativescript-image-zoom')
8 | );
9 | const context = require.context(
10 | '~/',
11 | true,
12 | /(page|fragment)\.(xml|css|js|ts|scss|less|sass)$/
13 | );
14 | global.registerWebpackModules(context);
15 | }
16 |
--------------------------------------------------------------------------------
/demo/app/images/148080.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/triniwiz/nativescript-image-zoom/50db41a97d53dffd5a6dec0760b2ab929be1bb07/demo/app/images/148080.jpg
--------------------------------------------------------------------------------
/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 { ImageSource, fromResource } from 'tns-core-modules/image-source';
4 | import { HelloWorldModel } from './main-view-model';
5 | import { ImageZoom } from 'nativescript-image-zoom';
6 |
7 | let image: ImageZoom;
8 |
9 | export function pageLoaded(args: observable.EventData) {
10 | let page = args.object;
11 | page.bindingContext = new HelloWorldModel();
12 | image = page.getViewById('image') as ImageZoom;
13 | }
14 |
15 | export function loadRemoteSrc() {
16 | if (image) {
17 | image.src =
18 | 'https://images.unsplash.com/photo-1469521669194-babb45599def?auto=format&fit=crop&w=1951&q=100';
19 | }
20 | }
21 |
22 | export function loadResource() {
23 | if (image) {
24 | image.src = 'res://image_302063';
25 | }
26 | }
27 |
28 | export function loadImgSrc() {
29 | if (image) {
30 | image.src = fromResource('image_302063');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/demo/app/main-page.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/demo/app/main-view-model.ts:
--------------------------------------------------------------------------------
1 | import { Observable } from 'tns-core-modules/data/observable';
2 |
3 | export class HelloWorldModel extends Observable {}
4 |
--------------------------------------------------------------------------------
/demo/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tns-template-hello-world-ts",
3 | "main": "app.js",
4 | "version": "1.6.0",
5 | "author": {
6 | "name": "Telerik",
7 | "email": "support@telerik.com"
8 | },
9 | "description": "Nativescript hello-world-ts project template",
10 | "license": "Apache-2.0",
11 | "keywords": [
12 | "telerik",
13 | "mobile",
14 | "nativescript",
15 | "{N}",
16 | "tns",
17 | "appbuilder",
18 | "template"
19 | ],
20 | "repository": {
21 | "type": "git",
22 | "url": "git+ssh://git@github.com/NativeScript/template-hello-world-ts.git"
23 | },
24 | "bugs": {
25 | "url": "https://github.com/NativeScript/template-hello-world-ts/issues"
26 | },
27 | "homepage": "https://github.com/NativeScript/template-hello-world-ts",
28 | "android": {
29 | "v8Flags": "--expose_gc"
30 | },
31 | "devDependencies": {
32 | "nativescript-dev-typescript": "^0.3.0"
33 | },
34 | "_id": "tns-template-hello-world-ts@1.6.0",
35 | "_shasum": "a567c2b9a56024818c06596dab9629d155c5b8a8",
36 | "_resolved": "https://registry.npmjs.org/tns-template-hello-world-ts/-/tns-template-hello-world-ts-1.6.0.tgz",
37 | "_from": "tns-template-hello-world-ts@latest",
38 | "scripts": {
39 | "build.plugin": "cd ../src && npm run build",
40 | "ci.tslint": "npm i && tslint --config '../tslint.json' 'app/**/*.ts' --exclude '**/node_modules/**'"
41 | },
42 | "_npmVersion": "2.14.7",
43 | "_nodeVersion": "4.2.2",
44 | "_npmUser": {
45 | "name": "enchev",
46 | "email": "vladimir.enchev@gmail.com"
47 | },
48 | "dist": {
49 | "shasum": "a567c2b9a56024818c06596dab9629d155c5b8a8",
50 | "tarball": "http://registry.npmjs.org/tns-template-hello-world-ts/-/tns-template-hello-world-ts-1.6.0.tgz"
51 | },
52 | "maintainers": [
53 | {
54 | "name": "enchev",
55 | "email": "vladimir.enchev@gmail.com"
56 | },
57 | {
58 | "name": "erjangavalji",
59 | "email": "erjan.gavalji@gmail.com"
60 | },
61 | {
62 | "name": "fatme",
63 | "email": "hfatme@gmail.com"
64 | },
65 | {
66 | "name": "hdeshev",
67 | "email": "hristo@deshev.com"
68 | },
69 | {
70 | "name": "kerezov",
71 | "email": "d.kerezov@gmail.com"
72 | },
73 | {
74 | "name": "ligaz",
75 | "email": "stefan.dobrev@gmail.com"
76 | },
77 | {
78 | "name": "nsndeck",
79 | "email": "nedyalko.nikolov@telerik.com"
80 | },
81 | {
82 | "name": "rosen-vladimirov",
83 | "email": "rosen.vladimirov.91@gmail.com"
84 | },
85 | {
86 | "name": "sdobrev",
87 | "email": "stefan.dobrev@gmail.com"
88 | },
89 | {
90 | "name": "tailsu",
91 | "email": "tailsu@gmail.com"
92 | },
93 | {
94 | "name": "teobugslayer",
95 | "email": "teobugslayer@gmail.com"
96 | },
97 | {
98 | "name": "valio.stoychev",
99 | "email": "valio.stoychev@gmail.com"
100 | }
101 | ],
102 | "_npmOperationalInternal": {
103 | "host": "packages-5-east.internal.npmjs.com",
104 | "tmp": "tmp/tns-template-hello-world-ts-1.6.0.tgz_1455717516189_0.6427943941671401"
105 | },
106 | "directories": {},
107 | "readme": "ERROR: No README data found!"
108 | }
109 |
--------------------------------------------------------------------------------
/demo/app/tests/tests.js:
--------------------------------------------------------------------------------
1 | var ImageZoom = require("nativescript-image-zoom").ImageZoom;
2 | var imageZoom = new ImageZoom();
3 |
4 | describe("greet function", function() {
5 | it("exists", function() {
6 | expect(imageZoom.greet).toBeDefined();
7 | });
8 |
9 | it("returns a string", function() {
10 | expect(imageZoom.greet()).toEqual("Hello, NS");
11 | });
12 | });
--------------------------------------------------------------------------------
/demo/app/vendor-platform.android.ts:
--------------------------------------------------------------------------------
1 | require('application');
2 | if (!global['__snapshot']) {
3 | // In case snapshot generation is enabled these modules will get into the bundle
4 | // but will not be required/evaluated.
5 | // The snapshot webpack plugin will add them to the tns-java-classes.js bundle file.
6 | // This way, they will be evaluated on app start as early as possible.
7 | require('ui/frame');
8 | require('ui/frame/activity');
9 | }
10 |
--------------------------------------------------------------------------------
/demo/app/vendor-platform.ios.ts:
--------------------------------------------------------------------------------
1 | // There is a bug in angular: https://github.com/angular/angular-cli/pull/8589/files
2 | // Legendary stuff, its webpack plugin pretty much doesn't work with empty TypeScript files in v1.8.3
3 | void 0;
4 |
--------------------------------------------------------------------------------
/demo/app/vendor.ts:
--------------------------------------------------------------------------------
1 | // Snapshot the ~/app.css and the theme
2 | const application = require('application');
3 | require('ui/styling/style-scope');
4 | const appCssContext = require.context(
5 | '~/',
6 | false,
7 | /^\.\/app\.(css|scss|less|sass)$/
8 | );
9 | global.registerWebpackModules(appCssContext);
10 | application.loadAppCss();
11 |
12 | require('./vendor-platform');
13 |
14 | require('bundle-entry-points');
15 |
--------------------------------------------------------------------------------
/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": "4.2.0"
6 | },
7 | "tns-android": {
8 | "version": "4.2.0"
9 | }
10 | },
11 | "dependencies": {
12 | "nativescript-cardview": "^3.0.1",
13 | "nativescript-image-zoom": "../src",
14 | "nativescript-theme-core": "^1.0.4",
15 | "nativescript-unit-test-runner": "^0.3.4",
16 | "tns-core-modules": "^4.2.0"
17 | },
18 | "devDependencies": {
19 | "babel-traverse": "6.12.0",
20 | "babel-types": "6.11.1",
21 | "babylon": "6.8.4",
22 | "filewalker": "0.1.2",
23 | "jasmine-core": "^2.5.2",
24 | "karma": "^1.3.0",
25 | "karma-jasmine": "^1.0.2",
26 | "karma-nativescript-launcher": "^0.4.0",
27 | "lazy": "1.0.11",
28 | "nativescript-css-loader": "~0.26.0",
29 | "nativescript-dev-typescript": "^0.6.0",
30 | "nativescript-dev-webpack": "^0.16.2",
31 | "tns-platform-declarations": "^4.0.0",
32 | "tslint": "~5.4.3",
33 | "typescript": "~2.6.0"
34 | },
35 | "scripts": {
36 | "build.plugin": "cd ../src && npm run build",
37 | "ci.tslint": "npm i && tslint --config '../tslint.json' 'app/**/*.ts' --exclude '**/node_modules/**'"
38 | }
39 | }
--------------------------------------------------------------------------------
/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 | },
30 | "exclude": [
31 | "node_modules",
32 | "platforms"
33 | ],
34 | "compileOnSave": false
35 | }
--------------------------------------------------------------------------------
/demo/tsconfig.tns.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig",
3 | "compilerOptions": {
4 | "module": "es2015",
5 | "moduleResolution": "node"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/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-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-publish",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "balanced-match": {
8 | "version": "1.0.0",
9 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
10 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
11 | "dev": true
12 | },
13 | "brace-expansion": {
14 | "version": "1.1.8",
15 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
16 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
17 | "dev": true,
18 | "requires": {
19 | "balanced-match": "^1.0.0",
20 | "concat-map": "0.0.1"
21 | }
22 | },
23 | "concat-map": {
24 | "version": "0.0.1",
25 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
26 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
27 | "dev": true
28 | },
29 | "fs.realpath": {
30 | "version": "1.0.0",
31 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
32 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
33 | "dev": true
34 | },
35 | "glob": {
36 | "version": "7.1.2",
37 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
38 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
39 | "dev": true,
40 | "requires": {
41 | "fs.realpath": "^1.0.0",
42 | "inflight": "^1.0.4",
43 | "inherits": "2",
44 | "minimatch": "^3.0.4",
45 | "once": "^1.3.0",
46 | "path-is-absolute": "^1.0.0"
47 | }
48 | },
49 | "inflight": {
50 | "version": "1.0.6",
51 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
52 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
53 | "dev": true,
54 | "requires": {
55 | "once": "^1.3.0",
56 | "wrappy": "1"
57 | }
58 | },
59 | "inherits": {
60 | "version": "2.0.3",
61 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
62 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
63 | "dev": true
64 | },
65 | "minimatch": {
66 | "version": "3.0.4",
67 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
68 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
69 | "dev": true,
70 | "requires": {
71 | "brace-expansion": "^1.1.7"
72 | }
73 | },
74 | "ncp": {
75 | "version": "2.0.0",
76 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
77 | "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
78 | "dev": true
79 | },
80 | "once": {
81 | "version": "1.4.0",
82 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
83 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
84 | "dev": true,
85 | "requires": {
86 | "wrappy": "1"
87 | }
88 | },
89 | "path-is-absolute": {
90 | "version": "1.0.1",
91 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
92 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
93 | "dev": true
94 | },
95 | "rimraf": {
96 | "version": "2.6.2",
97 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
98 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
99 | "dev": true,
100 | "requires": {
101 | "glob": "^7.0.5"
102 | }
103 | },
104 | "wrappy": {
105 | "version": "1.0.2",
106 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
107 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
108 | "dev": true
109 | }
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/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 | *.map
2 | *.ts
3 | !*.d.ts
4 | tsconfig.json
--------------------------------------------------------------------------------
/src/image-zoom.android.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ImageZoomBase,
3 | maxZoomScaleProperty,
4 | minZoomScaleProperty,
5 | resizeProperty,
6 | srcProperty,
7 | stretchProperty
8 | } from './image-zoom.common';
9 | import * as fs from 'tns-core-modules/file-system';
10 | import * as utils from 'tns-core-modules/utils/utils';
11 | import * as types from 'tns-core-modules/utils/types';
12 | import * as imageSource from 'tns-core-modules/image-source';
13 | import { layout } from 'tns-core-modules/ui/core/view';
14 |
15 | declare const com, jp;
16 |
17 | export class ImageZoom extends ImageZoomBase {
18 | picasso;
19 | private builder;
20 |
21 | constructor() {
22 | super();
23 | }
24 |
25 | public createNativeView() {
26 | this.picasso = (com as any).squareup.picasso.provider.PicassoProvider.get();
27 | return new com.github.chrisbanes.photoview.PhotoView(this._context);
28 | }
29 |
30 | [minZoomScaleProperty.setNative](scale: number) {
31 | if (this.nativeView && types.isNumber(scale)) {
32 | this.nativeView.setMinimumScale(scale);
33 | this.nativeView.setScaleLevels(
34 | Number(scale),
35 | Number(0.5833333333333334 * this.maxZoom),
36 | Number(this.maxZoom)
37 | );
38 | }
39 | }
40 |
41 | [maxZoomScaleProperty.setNative](scale: number) {
42 | if (this.nativeView && types.isNumber(scale)) {
43 | this.nativeView.setScaleLevels(
44 | Number(this.minZoom),
45 | Number(0.5833333333333334 * scale),
46 | Number(scale)
47 | );
48 | }
49 | }
50 |
51 | public initNativeView() {
52 | this.nativeView.setScaleLevels(
53 | Number(this.minZoom),
54 | Number(0.5833333333333334 * this.maxZoom),
55 | Number(this.maxZoom)
56 | );
57 | if (this.src) {
58 | const image = this.getImage(this.src);
59 | this.builder = this.picasso.load(image);
60 | }
61 | if (this.stretch) {
62 | this.resetImage();
63 | }
64 | if (this.builder) {
65 | if (
66 | this.resize &&
67 | this.resize !== undefined &&
68 | this.resize.split(',').length > 1 &&
69 | this.stretch !== 'fill'
70 | ) {
71 | this.builder.resize(
72 | parseInt(this.resize.split(',')[0], 10),
73 | parseInt(this.resize.split(',')[1], 10)
74 | );
75 | }
76 | this.builder.into(this.nativeView);
77 | }
78 | }
79 |
80 | private getResourceId(res: string = '') {
81 | if (res.startsWith('res://')) {
82 | return utils.ad.resources.getDrawableId(res.replace('res://', ''));
83 | }
84 | return 0;
85 | }
86 |
87 | set borderRadius(value: any) {
88 | this.style.borderRadius = value;
89 | this.setBorderAndRadius();
90 | }
91 |
92 | set borderWidth(value: any) {
93 | this.style.borderWidth = value;
94 | this.setBorderAndRadius();
95 | }
96 |
97 | set borderLeftWidth(value: any) {
98 | this.style.borderLeftWidth = value;
99 | this.setBorderAndRadius();
100 | }
101 |
102 | set borderRightWidth(value: any) {
103 | this.style.borderRightWidth = value;
104 | this.setBorderAndRadius();
105 | }
106 |
107 | set borderBottomWidth(value: any) {
108 | this.style.borderBottomWidth = value;
109 | this.setBorderAndRadius();
110 | }
111 |
112 | set borderTopWidth(value: any) {
113 | this.style.borderTopWidth = value;
114 | this.setBorderAndRadius();
115 | }
116 |
117 | set borderBottomLeftRadius(value: any) {
118 | this.style.borderBottomLeftRadius = value;
119 | this.setBorderAndRadius();
120 | }
121 |
122 | set borderBottomRightRadius(value: any) {
123 | this.style.borderBottomRightRadius = value;
124 | this.setBorderAndRadius();
125 | }
126 |
127 | set borderTopLeftRadius(value: any) {
128 | this.style.borderTopLeftRadius = value;
129 | this.setBorderAndRadius();
130 | }
131 |
132 | set borderTopRightRadius(value: any) {
133 | this.style.borderTopRightRadius = value;
134 | this.setBorderAndRadius();
135 | }
136 |
137 | [srcProperty.getDefault](): any {
138 | return undefined;
139 | }
140 |
141 | [srcProperty.setNative](src: any) {
142 | if (!this.builder) {
143 | const image = this.getImage(src);
144 | this.builder = this.picasso.load(image);
145 | }
146 | if (this.stretch) {
147 | this.resetImage();
148 | }
149 | this.setBorderAndRadius();
150 | this.builder.into(this.nativeView);
151 | return src;
152 | }
153 |
154 | [resizeProperty.setNative](resize: string) {
155 | if (!this.builder) {
156 | return resize;
157 | }
158 | if (
159 | resize &&
160 | resize !== undefined &&
161 | resize.split(',').length > 1 &&
162 | this.stretch !== 'fill'
163 | ) {
164 | this.builder.resize(
165 | parseInt(resize.split(',')[0], 10),
166 | parseInt(resize.split(',')[1], 10)
167 | );
168 | }
169 | return resize;
170 | }
171 |
172 | private getImage(src: any): any {
173 | let nativeImage;
174 | if (types.isNullOrUndefined(src)) {
175 | return src;
176 | }
177 | if (typeof src === 'string' && src.substr(0, 1) === '/') {
178 | nativeImage = new java.io.File(src);
179 | } else if (typeof src === 'string' && src.startsWith('~/')) {
180 | nativeImage = new java.io.File(
181 | fs.path.join(fs.knownFolders.currentApp().path, src.replace('~/', ''))
182 | );
183 | } else if (typeof src === 'string' && src.startsWith('http')) {
184 | nativeImage = src;
185 | } else if (typeof src === 'string' && src.startsWith('res://')) {
186 | nativeImage = utils.ad.resources.getDrawableId(src.replace('res://', ''));
187 | } else if (typeof src === 'object') {
188 | const tempFile = fs.path.join(
189 | fs.knownFolders.currentApp().path,
190 | `${Date.now()} + .png`
191 | );
192 | const saved = (src).saveToFile(tempFile, 'png');
193 | if (saved) {
194 | nativeImage = new java.io.File(tempFile);
195 | }
196 | }
197 | return nativeImage;
198 | }
199 |
200 | [stretchProperty.getDefault](): 'aspectFit' {
201 | return 'aspectFit';
202 | }
203 |
204 | [stretchProperty.setNative](
205 | value: 'none' | 'aspectFill' | 'aspectFit' | 'fill'
206 | ) {
207 | if (!this.builder) return value;
208 | this.resetImage(true);
209 | return value;
210 | }
211 |
212 | public clearItem() {
213 | }
214 |
215 | private setBorderAndRadius() {
216 | if (!this.builder) return;
217 |
218 | const RoundedCornersTransformation =
219 | jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
220 | this.builder = this.builder
221 | .transform(
222 | new RoundedCornersTransformation(
223 | layout.toDevicePixels(this.style.borderTopLeftRadius),
224 | layout.toDevicePixels(this.style.borderTopWidth),
225 | RoundedCornersTransformation.CornerType.TOP_LEFT
226 | )
227 | )
228 | .transform(
229 | new RoundedCornersTransformation(
230 | layout.toDevicePixels(this.style.borderTopRightRadius),
231 | layout.toDevicePixels(this.style.borderTopWidth),
232 | RoundedCornersTransformation.CornerType.TOP_RIGHT
233 | )
234 | )
235 | .transform(
236 | new RoundedCornersTransformation(
237 | layout.toDevicePixels(this.style.borderBottomLeftRadius),
238 | layout.toDevicePixels(this.style.borderBottomWidth),
239 | RoundedCornersTransformation.CornerType.BOTTOM_LEFT
240 | )
241 | )
242 | .transform(
243 | new RoundedCornersTransformation(
244 | layout.toDevicePixels(this.style.borderBottomRightRadius),
245 | layout.toDevicePixels(this.style.borderBottomWidth),
246 | RoundedCornersTransformation.CornerType.BOTTOM_RIGHT
247 | )
248 | );
249 | }
250 |
251 | /**
252 | * Helper method to call the Picasso resize method, which is necessary before centerCrop() and centerInside().
253 | * Will use the `resize` value if provided, next is the `height` and `width` of the imageCacheIt instance
254 | * last is the parent which is probably not reliable.
255 | * Only used when aspectFit or aspectFill are set on the stretch property.
256 | */
257 | private setAspectResize() {
258 | let newSize;
259 | if (
260 | this.resize &&
261 | this.resize !== undefined &&
262 | this.resize.split(',').length > 1
263 | ) {
264 | newSize = {
265 | width: parseInt(this.resize.split(',')[0], 10),
266 | height: parseInt(this.resize.split(',')[1], 10)
267 | };
268 | } else if (this.width || this.height) {
269 | // use the images height/width (need to be set - more gurds if needed)
270 | newSize = {
271 | width: parseInt(this.width.toString(), 10),
272 | height: parseInt(this.height.toString(), 10)
273 | };
274 | } else {
275 | // use parent size (worth a shot I guess but probably not going to work here reliably)
276 | newSize = {
277 | width: this.parent.effectiveWidth,
278 | height: this.parent.effectiveHeight
279 | };
280 | }
281 |
282 | this.builder.resize(newSize.width, newSize.height);
283 | }
284 |
285 | private resetImage(reload = false) {
286 | if (!this.builder) return;
287 | switch (this.stretch) {
288 | case 'aspectFit':
289 | this.builder = this.picasso.load(this.getImage(this.src));
290 | this.setBorderAndRadius();
291 | this.setAspectResize();
292 | this.builder.centerInside();
293 | if (reload) {
294 | this.builder.into(this.nativeView);
295 | }
296 | break;
297 | case 'aspectFill':
298 | this.builder = this.picasso.load(this.getImage(this.src));
299 | this.setBorderAndRadius();
300 | this.setAspectResize();
301 | this.builder.centerCrop();
302 | if (reload) {
303 | this.builder.into(this.nativeView);
304 | }
305 | break;
306 | case 'fill':
307 | this.builder = this.picasso.load(this.getImage(this.src));
308 | this.setBorderAndRadius();
309 | this.builder.fit();
310 | if (reload) {
311 | this.builder.into(this.nativeView);
312 | }
313 | break;
314 | case 'none':
315 | default:
316 | this.builder = this.picasso.load(this.getImage(this.src));
317 | this.setBorderAndRadius();
318 | if (reload) {
319 | this.builder.into(this.nativeView);
320 | }
321 | break;
322 | }
323 | }
324 | }
325 |
--------------------------------------------------------------------------------
/src/image-zoom.common.ts:
--------------------------------------------------------------------------------
1 | import { Property, View } from 'tns-core-modules/ui/core/view';
2 | import { Stretch } from 'tns-core-modules/ui/image/image';
3 |
4 | export class ImageZoomBase extends View {
5 | src: string;
6 | zoomScale: number;
7 | minZoom: number;
8 | maxZoom: number;
9 | stretch: string;
10 | resize: string;
11 | }
12 |
13 | export const resizeProperty = new Property({
14 | name: 'resize'
15 | });
16 |
17 | export const stretchProperty = new Property({
18 | name: 'stretch'
19 | });
20 |
21 | export const zoomScaleProperty = new Property({
22 | name: 'zoomScale',
23 | defaultValue: 1
24 | });
25 |
26 | export const minZoomScaleProperty = new Property({
27 | name: 'minZoom',
28 | defaultValue: 1
29 | });
30 |
31 | export const maxZoomScaleProperty = new Property({
32 | name: 'maxZoom',
33 | defaultValue: 4
34 | });
35 |
36 | export const srcProperty = new Property({
37 | name: 'src'
38 | });
39 |
40 | srcProperty.register(ImageZoomBase);
41 | stretchProperty.register(ImageZoomBase);
42 | zoomScaleProperty.register(ImageZoomBase);
43 | minZoomScaleProperty.register(ImageZoomBase);
44 | maxZoomScaleProperty.register(ImageZoomBase);
45 | resizeProperty.register(ImageZoomBase);
46 |
--------------------------------------------------------------------------------
/src/image-zoom.ios.ts:
--------------------------------------------------------------------------------
1 | import { Stretch } from 'tns-core-modules/ui/image';
2 | import * as imageSource from 'tns-core-modules/image-source';
3 | import {
4 | ImageZoomBase,
5 | maxZoomScaleProperty,
6 | minZoomScaleProperty,
7 | srcProperty,
8 | stretchProperty,
9 | zoomScaleProperty
10 | } from './image-zoom.common';
11 | import * as fs from 'tns-core-modules/file-system';
12 | import { layout } from 'tns-core-modules/ui/core/view';
13 | export class ImageZoom extends ImageZoomBase {
14 | _image: any;
15 | private delegate: any;
16 |
17 | constructor() {
18 | super();
19 | }
20 |
21 | public createNativeView() {
22 | this._image = UIImageView.new();
23 | this._image.clipsToBounds = true;
24 | this._image.contentMode = UIViewContentMode.ScaleAspectFit;
25 | const nativeView = UIScrollView.new();
26 | nativeView.addSubview(this._image);
27 | nativeView.zoomScale = this.zoomScale;
28 | nativeView.minimumZoomScale = this.minZoom;
29 | nativeView.maximumZoomScale = this.maxZoom;
30 | return nativeView;
31 | }
32 |
33 | public disposeNativeView() {
34 | this.delegate = null;
35 | }
36 |
37 | public onLayout(left: number, top: number, right: number, bottom: number): void {
38 | super.onLayout(left, top, right, bottom);
39 | this._image.frame = this.nativeView.bounds;
40 | }
41 |
42 | public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number) {
43 | const nativeView = this.nativeView;
44 | if (nativeView) {
45 | const width = layout.getMeasureSpecSize(widthMeasureSpec);
46 | const height = layout.getMeasureSpecSize(heightMeasureSpec);
47 | this.setMeasuredDimension(width, height);
48 | }
49 | }
50 |
51 | public initNativeView() {
52 | this.delegate = UIScrollViewDelegateImpl.initWithOwner(
53 | new WeakRef(this)
54 | );
55 | this.nativeView.delegate = this.delegate;
56 | }
57 |
58 | [stretchProperty.setNative](value: 'none' | 'aspectFill' | 'aspectFit' | 'fill') {
59 | switch (value) {
60 | case 'aspectFit':
61 | this.nativeViewProtected.contentMode = UIViewContentMode.ScaleAspectFit;
62 | break;
63 |
64 | case 'aspectFill':
65 | this.nativeViewProtected.contentMode = UIViewContentMode.ScaleAspectFill;
66 | break;
67 |
68 | case 'fill':
69 | this.nativeViewProtected.contentMode = UIViewContentMode.ScaleToFill;
70 | break;
71 |
72 | case 'none':
73 | default:
74 | this.nativeViewProtected.contentMode = UIViewContentMode.TopLeft;
75 | break;
76 | }
77 | }
78 |
79 |
80 | [srcProperty.setNative](src: any) {
81 | if (typeof src === 'string' && src.startsWith('res://')) {
82 | this._image.image = UIImage.imageNamed(src.replace('res://', ''));
83 | } else if (typeof src === 'object') {
84 | this._image.image = src.ios;
85 | } else if (typeof src === 'string' && src.startsWith('http')) {
86 | imageSource.fromUrl(src).then(source => {
87 | this._image.image = source.ios;
88 | });
89 | } else if (typeof src === 'string' && src.startsWith('~')) {
90 | this._image.image = UIImage.imageWithContentsOfFile(fs.path.join(fs.knownFolders.currentApp().path, src.replace('~', '')));
91 |
92 | } else {
93 | this._image.image = UIImage.imageWithContentsOfFile(src);
94 | }
95 | }
96 |
97 | [stretchProperty.setNative](stretch: Stretch) {
98 | this._image.stretch = stretch;
99 | }
100 |
101 | [zoomScaleProperty.setNative](scale: number) {
102 | if (this.nativeView) {
103 | this.nativeView.zoomScale = scale;
104 | }
105 | }
106 |
107 | [minZoomScaleProperty.setNative](scale: number) {
108 | if (this.nativeView) {
109 | this.nativeView.minimumZoomScale = scale;
110 | }
111 | }
112 |
113 | [maxZoomScaleProperty.setNative](scale: number) {
114 | if (this.nativeView) {
115 | this.nativeView.maximumZoomScale = scale;
116 | }
117 | }
118 | }
119 |
120 | export class UIScrollViewDelegateImpl extends NSObject
121 | implements UIScrollViewDelegate {
122 | private owner: WeakRef;
123 | public static ObjCProtocols = [UIScrollViewDelegate];
124 |
125 | public static initWithOwner(
126 | owner: WeakRef
127 | ): UIScrollViewDelegateImpl {
128 | const delegate = new UIScrollViewDelegateImpl();
129 | delegate.owner = owner;
130 | return delegate;
131 | }
132 |
133 | viewForZoomingInScrollView(scrollView: UIScrollView) {
134 | const owner = this.owner.get();
135 | return owner._image;
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/src/index.d.ts:
--------------------------------------------------------------------------------
1 | import { ImageZoomBase } from './image-zoom.common';
2 | export declare class ImageZoom extends ImageZoomBase {}
3 |
--------------------------------------------------------------------------------
/src/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-image-zoom",
3 | "version": "3.0.3",
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 | "argparse": {
20 | "version": "1.0.10",
21 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
22 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
23 | "dev": true,
24 | "requires": {
25 | "sprintf-js": "~1.0.2"
26 | }
27 | },
28 | "async": {
29 | "version": "0.9.2",
30 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
31 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
32 | "dev": true
33 | },
34 | "babel-code-frame": {
35 | "version": "6.26.0",
36 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
37 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
38 | "dev": true,
39 | "requires": {
40 | "chalk": "^1.1.3",
41 | "esutils": "^2.0.2",
42 | "js-tokens": "^3.0.2"
43 | },
44 | "dependencies": {
45 | "chalk": {
46 | "version": "1.1.3",
47 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
48 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
49 | "dev": true,
50 | "requires": {
51 | "ansi-styles": "^2.2.1",
52 | "escape-string-regexp": "^1.0.2",
53 | "has-ansi": "^2.0.0",
54 | "strip-ansi": "^3.0.0",
55 | "supports-color": "^2.0.0"
56 | }
57 | }
58 | }
59 | },
60 | "balanced-match": {
61 | "version": "1.0.0",
62 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
63 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
64 | "dev": true
65 | },
66 | "brace-expansion": {
67 | "version": "1.1.11",
68 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
69 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
70 | "dev": true,
71 | "requires": {
72 | "balanced-match": "^1.0.0",
73 | "concat-map": "0.0.1"
74 | }
75 | },
76 | "builtin-modules": {
77 | "version": "1.1.1",
78 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
79 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
80 | "dev": true
81 | },
82 | "chalk": {
83 | "version": "2.4.1",
84 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
85 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
86 | "dev": true,
87 | "requires": {
88 | "ansi-styles": "^3.2.1",
89 | "escape-string-regexp": "^1.0.5",
90 | "supports-color": "^5.3.0"
91 | },
92 | "dependencies": {
93 | "ansi-styles": {
94 | "version": "3.2.1",
95 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
96 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
97 | "dev": true,
98 | "requires": {
99 | "color-convert": "^1.9.0"
100 | }
101 | },
102 | "supports-color": {
103 | "version": "5.4.0",
104 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
105 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
106 | "dev": true,
107 | "requires": {
108 | "has-flag": "^3.0.0"
109 | }
110 | }
111 | }
112 | },
113 | "color-convert": {
114 | "version": "1.9.1",
115 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
116 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
117 | "dev": true,
118 | "requires": {
119 | "color-name": "^1.1.1"
120 | }
121 | },
122 | "color-name": {
123 | "version": "1.1.3",
124 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
125 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
126 | "dev": true
127 | },
128 | "colors": {
129 | "version": "1.2.5",
130 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
131 | "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==",
132 | "dev": true
133 | },
134 | "commander": {
135 | "version": "2.15.1",
136 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
137 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
138 | "dev": true
139 | },
140 | "concat-map": {
141 | "version": "0.0.1",
142 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
143 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
144 | "dev": true
145 | },
146 | "cycle": {
147 | "version": "1.0.3",
148 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
149 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
150 | "dev": true
151 | },
152 | "deep-equal": {
153 | "version": "0.2.2",
154 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
155 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=",
156 | "dev": true
157 | },
158 | "diff": {
159 | "version": "3.5.0",
160 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
161 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
162 | "dev": true
163 | },
164 | "escape-string-regexp": {
165 | "version": "1.0.5",
166 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
167 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
168 | "dev": true
169 | },
170 | "esprima": {
171 | "version": "4.0.0",
172 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
173 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
174 | "dev": true
175 | },
176 | "esutils": {
177 | "version": "2.0.2",
178 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
179 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
180 | "dev": true
181 | },
182 | "eyes": {
183 | "version": "0.1.8",
184 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
185 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
186 | "dev": true
187 | },
188 | "fs.realpath": {
189 | "version": "1.0.0",
190 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
191 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
192 | "dev": true
193 | },
194 | "glob": {
195 | "version": "7.1.2",
196 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
197 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
198 | "dev": true,
199 | "requires": {
200 | "fs.realpath": "^1.0.0",
201 | "inflight": "^1.0.4",
202 | "inherits": "2",
203 | "minimatch": "^3.0.4",
204 | "once": "^1.3.0",
205 | "path-is-absolute": "^1.0.0"
206 | }
207 | },
208 | "has-ansi": {
209 | "version": "2.0.0",
210 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
211 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
212 | "dev": true,
213 | "requires": {
214 | "ansi-regex": "^2.0.0"
215 | }
216 | },
217 | "has-flag": {
218 | "version": "3.0.0",
219 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
220 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
221 | "dev": true
222 | },
223 | "i": {
224 | "version": "0.3.6",
225 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
226 | "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=",
227 | "dev": true
228 | },
229 | "inflight": {
230 | "version": "1.0.6",
231 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
232 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
233 | "dev": true,
234 | "requires": {
235 | "once": "^1.3.0",
236 | "wrappy": "1"
237 | }
238 | },
239 | "inherits": {
240 | "version": "2.0.3",
241 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
242 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
243 | "dev": true
244 | },
245 | "isstream": {
246 | "version": "0.1.2",
247 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
248 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
249 | "dev": true
250 | },
251 | "js-tokens": {
252 | "version": "3.0.2",
253 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
254 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
255 | "dev": true
256 | },
257 | "js-yaml": {
258 | "version": "3.13.1",
259 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
260 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
261 | "dev": true,
262 | "requires": {
263 | "argparse": "^1.0.7",
264 | "esprima": "^4.0.0"
265 | }
266 | },
267 | "minimatch": {
268 | "version": "3.0.4",
269 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
270 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
271 | "dev": true,
272 | "requires": {
273 | "brace-expansion": "^1.1.7"
274 | }
275 | },
276 | "minimist": {
277 | "version": "0.0.8",
278 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
279 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
280 | "dev": true
281 | },
282 | "mkdirp": {
283 | "version": "0.5.1",
284 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
285 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
286 | "dev": true,
287 | "requires": {
288 | "minimist": "0.0.8"
289 | }
290 | },
291 | "mute-stream": {
292 | "version": "0.0.7",
293 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
294 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
295 | "dev": true
296 | },
297 | "ncp": {
298 | "version": "1.0.1",
299 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz",
300 | "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=",
301 | "dev": true
302 | },
303 | "once": {
304 | "version": "1.4.0",
305 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
306 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
307 | "dev": true,
308 | "requires": {
309 | "wrappy": "1"
310 | }
311 | },
312 | "path-is-absolute": {
313 | "version": "1.0.1",
314 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
315 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
316 | "dev": true
317 | },
318 | "path-parse": {
319 | "version": "1.0.5",
320 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
321 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
322 | "dev": true
323 | },
324 | "pkginfo": {
325 | "version": "0.4.1",
326 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
327 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=",
328 | "dev": true
329 | },
330 | "prompt": {
331 | "version": "1.0.0",
332 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz",
333 | "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=",
334 | "dev": true,
335 | "requires": {
336 | "colors": "^1.1.2",
337 | "pkginfo": "0.x.x",
338 | "read": "1.0.x",
339 | "revalidator": "0.1.x",
340 | "utile": "0.3.x",
341 | "winston": "2.1.x"
342 | }
343 | },
344 | "read": {
345 | "version": "1.0.7",
346 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
347 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
348 | "dev": true,
349 | "requires": {
350 | "mute-stream": "~0.0.4"
351 | }
352 | },
353 | "resolve": {
354 | "version": "1.7.1",
355 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
356 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
357 | "dev": true,
358 | "requires": {
359 | "path-parse": "^1.0.5"
360 | }
361 | },
362 | "revalidator": {
363 | "version": "0.1.8",
364 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
365 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=",
366 | "dev": true
367 | },
368 | "rimraf": {
369 | "version": "2.6.2",
370 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
371 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
372 | "dev": true,
373 | "requires": {
374 | "glob": "^7.0.5"
375 | }
376 | },
377 | "semver": {
378 | "version": "5.5.0",
379 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
380 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
381 | "dev": true
382 | },
383 | "sprintf-js": {
384 | "version": "1.0.3",
385 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
386 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
387 | "dev": true
388 | },
389 | "stack-trace": {
390 | "version": "0.0.10",
391 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
392 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
393 | "dev": true
394 | },
395 | "strip-ansi": {
396 | "version": "3.0.1",
397 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
398 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
399 | "dev": true,
400 | "requires": {
401 | "ansi-regex": "^2.0.0"
402 | }
403 | },
404 | "supports-color": {
405 | "version": "2.0.0",
406 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
407 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
408 | "dev": true
409 | },
410 | "tns-core-modules": {
411 | "version": "4.0.0",
412 | "resolved": "https://registry.npmjs.org/tns-core-modules/-/tns-core-modules-4.0.0.tgz",
413 | "integrity": "sha1-lBcSJOrIKqW1hzp4qjCa7NPmNGo=",
414 | "dev": true,
415 | "requires": {
416 | "tns-core-modules-widgets": "4.0.0"
417 | }
418 | },
419 | "tns-core-modules-widgets": {
420 | "version": "4.0.0",
421 | "resolved": "https://registry.npmjs.org/tns-core-modules-widgets/-/tns-core-modules-widgets-4.0.0.tgz",
422 | "integrity": "sha512-8moobfg3GtdYkiH3UZyqTQVF7+zxuAAv29viXDR73x7KmQ6EMXuoiN/isytDr9C2m/aE2iPlzpKS4Dm8OkWBIA==",
423 | "dev": true
424 | },
425 | "tns-platform-declarations": {
426 | "version": "4.0.0",
427 | "resolved": "https://registry.npmjs.org/tns-platform-declarations/-/tns-platform-declarations-4.0.0.tgz",
428 | "integrity": "sha1-qW2XKO6enQYSpVVghDqn2k6Nx7w=",
429 | "dev": true
430 | },
431 | "tslib": {
432 | "version": "1.9.1",
433 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz",
434 | "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==",
435 | "dev": true
436 | },
437 | "tslint": {
438 | "version": "5.10.0",
439 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz",
440 | "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=",
441 | "dev": true,
442 | "requires": {
443 | "babel-code-frame": "^6.22.0",
444 | "builtin-modules": "^1.1.1",
445 | "chalk": "^2.3.0",
446 | "commander": "^2.12.1",
447 | "diff": "^3.2.0",
448 | "glob": "^7.1.1",
449 | "js-yaml": "^3.7.0",
450 | "minimatch": "^3.0.4",
451 | "resolve": "^1.3.2",
452 | "semver": "^5.3.0",
453 | "tslib": "^1.8.0",
454 | "tsutils": "^2.12.1"
455 | }
456 | },
457 | "tsutils": {
458 | "version": "2.27.0",
459 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.0.tgz",
460 | "integrity": "sha512-JcyX25oM9pFcb3zh60OqG1St8p/uSqC5Bgipdo3ieacB/Ao4dPhm7hAtKT9NrEu23CyYrrgJPV3CqYfo+/+T4w==",
461 | "dev": true,
462 | "requires": {
463 | "tslib": "^1.8.1"
464 | }
465 | },
466 | "typescript": {
467 | "version": "2.6.2",
468 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz",
469 | "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=",
470 | "dev": true
471 | },
472 | "utile": {
473 | "version": "0.3.0",
474 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz",
475 | "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=",
476 | "dev": true,
477 | "requires": {
478 | "async": "~0.9.0",
479 | "deep-equal": "~0.2.1",
480 | "i": "0.3.x",
481 | "mkdirp": "0.x.x",
482 | "ncp": "1.0.x",
483 | "rimraf": "2.x.x"
484 | }
485 | },
486 | "winston": {
487 | "version": "2.1.1",
488 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz",
489 | "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=",
490 | "dev": true,
491 | "requires": {
492 | "async": "~1.0.0",
493 | "colors": "1.0.x",
494 | "cycle": "1.0.x",
495 | "eyes": "0.1.x",
496 | "isstream": "0.1.x",
497 | "pkginfo": "0.3.x",
498 | "stack-trace": "0.0.x"
499 | },
500 | "dependencies": {
501 | "async": {
502 | "version": "1.0.0",
503 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
504 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
505 | "dev": true
506 | },
507 | "colors": {
508 | "version": "1.0.3",
509 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
510 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
511 | "dev": true
512 | },
513 | "pkginfo": {
514 | "version": "0.3.1",
515 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
516 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=",
517 | "dev": true
518 | }
519 | }
520 | },
521 | "wrappy": {
522 | "version": "1.0.2",
523 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
524 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
525 | "dev": true
526 | }
527 | }
528 | }
529 |
--------------------------------------------------------------------------------
/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nativescript-image-zoom",
3 | "version": "3.0.3",
4 | "description": "Zoom enabled ImageView for NativeScript",
5 | "main": "image-zoom",
6 | "typings": "index.d.ts",
7 | "nativescript": {
8 | "platforms": {
9 | "android": "4.0.0",
10 | "ios": "4.0.1"
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/**\"",
19 | "plugin.link": "npm link && cd ../demo && npm link nativescript-image-zoom && 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 | "demo.reset": "cd ../demo && rimraf platforms",
24 | "plugin.prepare": "npm run tsc && cd ../demo && tns plugin remove nativescript-image-zoom && tns plugin add ../src",
25 | "clean": "cd ../demo && rimraf hooks node_modules platforms && cd ../src && rimraf node_modules && npm run plugin.link",
26 | "ci.tslint": "npm i && tslint '**/*.ts' --config '../tslint.json' --exclude '**/node_modules/**'"
27 | },
28 | "keywords": [
29 | "NativeScript",
30 | "JavaScript",
31 | "Android",
32 | "iOS"
33 | ],
34 | "author": {
35 | "name": "Osei Fortune",
36 | "email": "fortune.osei@yahoo.com"
37 | },
38 | "bugs": {
39 | "url": "https://github.com/triniwiz/nativescript-image-zoom/issues"
40 | },
41 | "license": "Apache-2.0",
42 | "homepage": "https://github.com/triniwiz/nativescript-image-zoom",
43 | "readmeFilename": "README.md",
44 | "devDependencies": {
45 | "tns-core-modules": "^4.0.0",
46 | "tns-platform-declarations": "^4.0.0",
47 | "typescript": "~2.6.0",
48 | "prompt": "^1.0.0",
49 | "rimraf": "^2.5.0",
50 | "tslint": "^5.0.0"
51 | },
52 | "dependencies": {},
53 | "bootstrapper": "nativescript-plugin-seed"
54 | }
55 |
--------------------------------------------------------------------------------
/src/platforms/android/include.gradle:
--------------------------------------------------------------------------------
1 | repositories {
2 | maven { url "https://jitpack.io" }
3 | maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
4 | }
5 |
6 | dependencies {
7 | // compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.9.0'
8 | compile 'com.github.chrisbanes:PhotoView:2.1.3'
9 | compile 'com.squareup.picasso:picasso:3.0.0-SNAPSHOT'
10 | compile 'com.squareup.picasso:picasso-provider:3.0.0-SNAPSHOT'
11 | compile 'jp.wasabeef:picasso-transformations:2.1.2'
12 | }
13 |
--------------------------------------------------------------------------------
/src/references.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/src/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "declaration": true,
6 | "removeComments": true,
7 | "noLib": false,
8 | "emitDecoratorMetadata": true,
9 | "experimentalDecorators": true,
10 | "lib": ["es6", "dom"],
11 | "sourceMap": true,
12 | "pretty": true,
13 | "allowUnreachableCode": false,
14 | "allowUnusedLabels": false,
15 | "noEmitHelpers": true,
16 | "noEmitOnError": false,
17 | "noImplicitAny": false,
18 | "noImplicitReturns": true,
19 | "noImplicitUseStrict": false,
20 | "noFallthroughCasesInSwitch": true
21 | },
22 | "exclude": [
23 | "node_modules"
24 | ],
25 | "compileOnSave": false
26 | }
27 |
--------------------------------------------------------------------------------
/src/typings/android.d.ts:
--------------------------------------------------------------------------------
1 | declare module com {
2 | export module davemorrissey {
3 | export module labs {
4 | export module subscaleview {
5 | export class BuildConfig {
6 | public static DEBUG: boolean;
7 | public static APPLICATION_ID: string;
8 | public static BUILD_TYPE: string;
9 | public static FLAVOR: string;
10 | public static VERSION_CODE: number;
11 | public static VERSION_NAME: string;
12 | public constructor();
13 | }
14 | }
15 | }
16 | }
17 | }
18 |
19 | import androidnetUri = android.net.Uri;
20 | import androidgraphicsBitmap = android.graphics.Bitmap;
21 | import androidgraphicsRect = android.graphics.Rect;
22 | import javalangInteger = java.lang.Integer;
23 | ///
24 | ///
25 | ///
26 | ///
27 | ///
28 | declare module com {
29 | export module davemorrissey {
30 | export module labs {
31 | export module subscaleview {
32 | export class ImageSource {
33 | public static uri(param0: string): com.davemorrissey.labs.subscaleview.ImageSource;
34 | public static uri(param0: androidnetUri): com.davemorrissey.labs.subscaleview.ImageSource;
35 | public dimensions(param0: number, param1: number): com.davemorrissey.labs.subscaleview.ImageSource;
36 | public getBitmap(): androidgraphicsBitmap;
37 | public isCached(): boolean;
38 | public getSRegion(): androidgraphicsRect;
39 | public static cachedBitmap(param0: androidgraphicsBitmap): com.davemorrissey.labs.subscaleview.ImageSource;
40 | public tilingDisabled(): com.davemorrissey.labs.subscaleview.ImageSource;
41 | public region(param0: androidgraphicsRect): com.davemorrissey.labs.subscaleview.ImageSource;
42 | public getSWidth(): number;
43 | public static asset(param0: string): com.davemorrissey.labs.subscaleview.ImageSource;
44 | public getTile(): boolean;
45 | public getUri(): androidnetUri;
46 | public getResource(): javalangInteger;
47 | public tilingEnabled(): com.davemorrissey.labs.subscaleview.ImageSource;
48 | public static bitmap(param0: androidgraphicsBitmap): com.davemorrissey.labs.subscaleview.ImageSource;
49 | public tiling(param0: boolean): com.davemorrissey.labs.subscaleview.ImageSource;
50 | public static resource(param0: number): com.davemorrissey.labs.subscaleview.ImageSource;
51 | public getSHeight(): number;
52 | }
53 | }
54 | }
55 | }
56 | }
57 |
58 | import androidgraphicsPointF = android.graphics.PointF;
59 | ///
60 | declare module com {
61 | export module davemorrissey {
62 | export module labs {
63 | export module subscaleview {
64 | export class ImageViewState {
65 | public constructor(param0: number, param1: androidgraphicsPointF, param2: number);
66 | public getScale(): number;
67 | public getCenter(): androidgraphicsPointF;
68 | public getOrientation(): number;
69 | }
70 | }
71 | }
72 | }
73 | }
74 |
75 | import androidcontentContext = android.content.Context;
76 | import androidutilAttributeSet = android.util.AttributeSet;
77 | import androidgraphicsBitmapConfig = android.graphics.Bitmap.Config;
78 | import androidviewMotionEvent = android.view.MotionEvent;
79 | import androidgraphicsCanvas = android.graphics.Canvas;
80 | import javalangClass = java.lang.Class;
81 | import androidgraphicsRectF = android.graphics.RectF;
82 | import javautilconcurrentExecutor = java.util.concurrent.Executor;
83 | import androidviewViewOnLongClickListener = android.view.View.OnLongClickListener;
84 | import javalangVoid = java.lang.Void;
85 | import javalangException = java.lang.Exception;
86 | ///
87 | ///
88 | ///
89 | ///
90 | ///
91 | ///
92 | ///
93 | ///
94 | ///
95 | ///
96 | ///
97 | ///
98 | ///
99 | ///
100 | ///
101 | ///
102 | declare module com {
103 | export module davemorrissey {
104 | export module labs {
105 | export module subscaleview {
106 | export class SubsamplingScaleImageView {
107 | public static ORIENTATION_USE_EXIF: number;
108 | public static ORIENTATION_0: number;
109 | public static ORIENTATION_90: number;
110 | public static ORIENTATION_180: number;
111 | public static ORIENTATION_270: number;
112 | public static ZOOM_FOCUS_FIXED: number;
113 | public static ZOOM_FOCUS_CENTER: number;
114 | public static ZOOM_FOCUS_CENTER_IMMEDIATE: number;
115 | public static EASE_OUT_QUAD: number;
116 | public static EASE_IN_OUT_QUAD: number;
117 | public static PAN_LIMIT_INSIDE: number;
118 | public static PAN_LIMIT_OUTSIDE: number;
119 | public static PAN_LIMIT_CENTER: number;
120 | public static SCALE_TYPE_CENTER_INSIDE: number;
121 | public static SCALE_TYPE_CENTER_CROP: number;
122 | public static SCALE_TYPE_CUSTOM: number;
123 | public static SCALE_TYPE_START: number;
124 | public static ORIGIN_ANIM: number;
125 | public static ORIGIN_TOUCH: number;
126 | public static ORIGIN_FLING: number;
127 | public static ORIGIN_DOUBLE_TAP_ZOOM: number;
128 | public static TILE_SIZE_AUTO: number;
129 | public isReady(): boolean;
130 | public onTouchEvent(param0: androidviewMotionEvent): boolean;
131 | public recycle(): void;
132 | public setMinScale(param0: number): void;
133 | public setMaxTileSize(param0: number, param1: number): void;
134 | public viewToSourceCoord(param0: number, param1: number): androidgraphicsPointF;
135 | public setRegionDecoderClass(param0: javalangClass): void;
136 | public visibleFileRect(param0: androidgraphicsRect): void;
137 | public viewToSourceCoord(param0: androidgraphicsPointF, param1: androidgraphicsPointF): androidgraphicsPointF;
138 | public setOnImageEventListener(param0: com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnImageEventListener): void;
139 | public setImage(param0: com.davemorrissey.labs.subscaleview.ImageSource, param1: com.davemorrissey.labs.subscaleview.ImageSource, param2: com.davemorrissey.labs.subscaleview.ImageViewState): void;
140 | public getMinScale(): number;
141 | public setEagerLoadingEnabled(param0: boolean): void;
142 | public animateScaleAndCenter(param0: number, param1: androidgraphicsPointF): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
143 | public setMinimumScaleType(param0: number): void;
144 | public setImage(param0: com.davemorrissey.labs.subscaleview.ImageSource, param1: com.davemorrissey.labs.subscaleview.ImageSource): void;
145 | public isPanEnabled(): boolean;
146 | public setMaximumDpi(param0: number): void;
147 | public sourceToViewCoord(param0: androidgraphicsPointF): androidgraphicsPointF;
148 | public onReady(): void;
149 | public animateCenter(param0: androidgraphicsPointF): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
150 | public getPanRemaining(param0: androidgraphicsRectF): void;
151 | public hasImage(): boolean;
152 | public setExecutor(param0: javautilconcurrentExecutor): void;
153 | public getOrientation(): number;
154 | public viewToSourceCoord(param0: number, param1: number, param2: androidgraphicsPointF): androidgraphicsPointF;
155 | public setMinimumTileDpi(param0: number): void;
156 | public resetScaleAndCenter(): void;
157 | public setDoubleTapZoomDpi(param0: number): void;
158 | public setOrientation(param0: number): void;
159 | public isImageLoaded(): boolean;
160 | public setPanEnabled(param0: boolean): void;
161 | public getCenter(): androidgraphicsPointF;
162 | public animateScale(param0: number): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
163 | public viewToFileRect(param0: androidgraphicsRect, param1: androidgraphicsRect): void;
164 | public setDoubleTapZoomStyle(param0: number): void;
165 | public setMaxTileSize(param0: number): void;
166 | public getAppliedOrientation(): number;
167 | public isQuickScaleEnabled(): boolean;
168 | public constructor(param0: androidcontentContext, param1: androidutilAttributeSet);
169 | public viewToSourceCoord(param0: androidgraphicsPointF): androidgraphicsPointF;
170 | public setDoubleTapZoomScale(param0: number): void;
171 | public getScale(): number;
172 | public setPanLimit(param0: number): void;
173 | public setScaleAndCenter(param0: number, param1: androidgraphicsPointF): void;
174 | public sourceToViewCoord(param0: number, param1: number, param2: androidgraphicsPointF): androidgraphicsPointF;
175 | public setQuickScaleEnabled(param0: boolean): void;
176 | public onDraw(param0: androidgraphicsCanvas): void;
177 | public setDebug(param0: boolean): void;
178 | public onImageLoaded(): void;
179 | public setImage(param0: com.davemorrissey.labs.subscaleview.ImageSource, param1: com.davemorrissey.labs.subscaleview.ImageViewState): void;
180 | public static getPreferredBitmapConfig(): androidgraphicsBitmapConfig;
181 | public setImage(param0: com.davemorrissey.labs.subscaleview.ImageSource): void;
182 | public setDoubleTapZoomDuration(param0: number): void;
183 | public setOnLongClickListener(param0: androidviewViewOnLongClickListener): void;
184 | public getState(): com.davemorrissey.labs.subscaleview.ImageViewState;
185 | public setBitmapDecoderFactory(param0: com.davemorrissey.labs.subscaleview.decoder.DecoderFactory): void;
186 | public setZoomEnabled(param0: boolean): void;
187 | public getSHeight(): number;
188 | public onMeasure(param0: number, param1: number): void;
189 | public setMaxScale(param0: number): void;
190 | public setTileBackgroundColor(param0: number): void;
191 | public sourceToViewCoord(param0: number, param1: number): androidgraphicsPointF;
192 | public setBitmapDecoderClass(param0: javalangClass): void;
193 | public setOnStateChangedListener(param0: com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnStateChangedListener): void;
194 | public static setPreferredBitmapConfig(param0: androidgraphicsBitmapConfig): void;
195 | public onSizeChanged(param0: number, param1: number, param2: number, param3: number): void;
196 | public isZoomEnabled(): boolean;
197 | public setMinimumDpi(param0: number): void;
198 | public getMaxScale(): number;
199 | public getSWidth(): number;
200 | public sourceToViewCoord(param0: androidgraphicsPointF, param1: androidgraphicsPointF): androidgraphicsPointF;
201 | public setRegionDecoderFactory(param0: com.davemorrissey.labs.subscaleview.decoder.DecoderFactory): void;
202 | public constructor(param0: androidcontentContext);
203 | }
204 | export module SubsamplingScaleImageView {
205 | export class Anim {
206 | }
207 | export class AnimationBuilder {
208 | public withInterruptible(param0: boolean): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
209 | public start(): void;
210 | public withDuration(param0: number): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
211 | public withOnAnimationEventListener(param0: com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.OnAnimationEventListener): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
212 | public withEasing(param0: number): com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.AnimationBuilder;
213 | }
214 | export class BitmapLoadTask {
215 | public doInBackground(param0: native.Array): javalangInteger;
216 | public onPostExecute(param0: javalangInteger): void;
217 | }
218 | export class DefaultOnAnimationEventListener {
219 | public constructor();
220 | public onComplete(): void;
221 | public onInterruptedByUser(): void;
222 | public onInterruptedByNewAnim(): void;
223 | }
224 | export class DefaultOnImageEventListener {
225 | public onImageLoadError(param0: javalangException): void;
226 | public constructor();
227 | public onImageLoaded(): void;
228 | public onPreviewLoadError(param0: javalangException): void;
229 | public onPreviewReleased(): void;
230 | public onTileLoadError(param0: javalangException): void;
231 | public onReady(): void;
232 | }
233 | export class DefaultOnStateChangedListener {
234 | public onScaleChanged(param0: number, param1: number): void;
235 | public constructor();
236 | public onCenterChanged(param0: androidgraphicsPointF, param1: number): void;
237 | }
238 | export class OnAnimationEventListener {
239 | /**
240 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView$OnAnimationEventListener interface with the provided implementation.
241 | */
242 | public constructor(implementation: {
243 | onComplete(): void;
244 | onInterruptedByUser(): void;
245 | onInterruptedByNewAnim(): void;
246 | });
247 | public onComplete(): void;
248 | public onInterruptedByUser(): void;
249 | public onInterruptedByNewAnim(): void;
250 | }
251 | export class OnImageEventListener {
252 | /**
253 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView$OnImageEventListener interface with the provided implementation.
254 | */
255 | public constructor(implementation: {
256 | onReady(): void;
257 | onImageLoaded(): void;
258 | onPreviewLoadError(param0: javalangException): void;
259 | onImageLoadError(param0: javalangException): void;
260 | onTileLoadError(param0: javalangException): void;
261 | onPreviewReleased(): void;
262 | });
263 | public onImageLoadError(param0: javalangException): void;
264 | public onImageLoaded(): void;
265 | public onPreviewLoadError(param0: javalangException): void;
266 | public onPreviewReleased(): void;
267 | public onTileLoadError(param0: javalangException): void;
268 | public onReady(): void;
269 | }
270 | export class OnStateChangedListener {
271 | /**
272 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView$OnStateChangedListener interface with the provided implementation.
273 | */
274 | public constructor(implementation: {
275 | onScaleChanged(param0: number, param1: number): void;
276 | onCenterChanged(param0: androidgraphicsPointF, param1: number): void;
277 | });
278 | public onScaleChanged(param0: number, param1: number): void;
279 | public onCenterChanged(param0: androidgraphicsPointF, param1: number): void;
280 | }
281 | export class ScaleAndTranslate {
282 | }
283 | export class Tile {
284 | }
285 | export class TileLoadTask {
286 | public doInBackground(param0: native.Array): androidgraphicsBitmap;
287 | public onPostExecute(param0: androidgraphicsBitmap): void;
288 | }
289 | export class TilesInitTask {
290 | public onPostExecute(param0: native.Array): void;
291 | public doInBackground(param0: native.Array): native.Array;
292 | }
293 | }
294 | }
295 | }
296 | }
297 | }
298 |
299 | import javalangObject = java.lang.Object;
300 | ///
301 | ///
302 | declare module com {
303 | export module davemorrissey {
304 | export module labs {
305 | export module subscaleview {
306 | export module decoder {
307 | export class CompatDecoderFactory {
308 | public constructor(param0: javalangClass, param1: androidgraphicsBitmapConfig);
309 | public make(): javalangObject;
310 | public constructor(param0: javalangClass);
311 | }
312 | }
313 | }
314 | }
315 | }
316 | }
317 |
318 | ///
319 | declare module com {
320 | export module davemorrissey {
321 | export module labs {
322 | export module subscaleview {
323 | export module decoder {
324 | export class DecoderFactory {
325 | /**
326 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.decoder.DecoderFactory interface with the provided implementation.
327 | */
328 | public constructor(implementation: {
329 | make(): javalangObject;
330 | });
331 | public make(): javalangObject;
332 | }
333 | }
334 | }
335 | }
336 | }
337 | }
338 |
339 | ///
340 | ///
341 | ///
342 | declare module com {
343 | export module davemorrissey {
344 | export module labs {
345 | export module subscaleview {
346 | export module decoder {
347 | export class ImageDecoder {
348 | /**
349 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.decoder.ImageDecoder interface with the provided implementation.
350 | */
351 | public constructor(implementation: {
352 | decode(param0: androidcontentContext, param1: androidnetUri): androidgraphicsBitmap;
353 | });
354 | public decode(param0: androidcontentContext, param1: androidnetUri): androidgraphicsBitmap;
355 | }
356 | }
357 | }
358 | }
359 | }
360 | }
361 |
362 | import androidgraphicsPoint = android.graphics.Point;
363 | ///
364 | ///
365 | ///
366 | ///
367 | ///
368 | declare module com {
369 | export module davemorrissey {
370 | export module labs {
371 | export module subscaleview {
372 | export module decoder {
373 | export class ImageRegionDecoder {
374 | /**
375 | * Constructs a new instance of the com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder interface with the provided implementation.
376 | */
377 | public constructor(implementation: {
378 | init(param0: androidcontentContext, param1: androidnetUri): androidgraphicsPoint;
379 | decodeRegion(param0: androidgraphicsRect, param1: number): androidgraphicsBitmap;
380 | isReady(): boolean;
381 | recycle(): void;
382 | });
383 | public init(param0: androidcontentContext, param1: androidnetUri): androidgraphicsPoint;
384 | public decodeRegion(param0: androidgraphicsRect, param1: number): androidgraphicsBitmap;
385 | public recycle(): void;
386 | public isReady(): boolean;
387 | }
388 | }
389 | }
390 | }
391 | }
392 | }
393 |
394 | ///
395 | ///
396 | ///
397 | declare module com {
398 | export module davemorrissey {
399 | export module labs {
400 | export module subscaleview {
401 | export module decoder {
402 | export class SkiaImageDecoder {
403 | public constructor();
404 | public constructor(param0: androidgraphicsBitmapConfig);
405 | public decode(param0: androidcontentContext, param1: androidnetUri): androidgraphicsBitmap;
406 | }
407 | }
408 | }
409 | }
410 | }
411 | }
412 |
413 | ///
414 | ///
415 | ///
416 | ///
417 | ///
418 | declare module com {
419 | export module davemorrissey {
420 | export module labs {
421 | export module subscaleview {
422 | export module decoder {
423 | export class SkiaImageRegionDecoder {
424 | public constructor();
425 | public init(param0: androidcontentContext, param1: androidnetUri): androidgraphicsPoint;
426 | public decodeRegion(param0: androidgraphicsRect, param1: number): androidgraphicsBitmap;
427 | public constructor(param0: androidgraphicsBitmapConfig);
428 | public recycle(): void;
429 | public isReady(): boolean;
430 | }
431 | }
432 | }
433 | }
434 | }
435 | }
436 |
437 | ///
438 | ///
439 | ///
440 | ///
441 | ///
442 | declare module com {
443 | export module davemorrissey {
444 | export module labs {
445 | export module subscaleview {
446 | export module decoder {
447 | export class SkiaPooledImageRegionDecoder {
448 | public constructor();
449 | public init(param0: androidcontentContext, param1: androidnetUri): androidgraphicsPoint;
450 | public decodeRegion(param0: androidgraphicsRect, param1: number): androidgraphicsBitmap;
451 | public static setDebug(param0: boolean): void;
452 | public constructor(param0: androidgraphicsBitmapConfig);
453 | public recycle(): void;
454 | public isReady(): boolean;
455 | public allowAdditionalDecoder(param0: number, param1: number): boolean;
456 | }
457 | export module SkiaPooledImageRegionDecoder {
458 | export class DecoderPool {
459 | }
460 | }
461 | }
462 | }
463 | }
464 | }
465 | }
466 |
467 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "class-name": true,
4 | "comment-format": [
5 | true,
6 | "check-space"
7 | ],
8 | "indent": [
9 | true,
10 | "spaces"
11 | ],
12 | "no-duplicate-variable": true,
13 | "no-eval": true,
14 | "no-internal-module": true,
15 | "no-trailing-whitespace": true,
16 | "no-var-keyword": true,
17 | "one-line": [
18 | true,
19 | "check-open-brace",
20 | "check-whitespace"
21 | ],
22 | "quotemark": [
23 | false,
24 | "single"
25 | ],
26 | "semicolon": [
27 | true,
28 | "always"
29 | ],
30 | "triple-equals": [
31 | true,
32 | "allow-null-check"
33 | ],
34 | "typedef-whitespace": [
35 | true,
36 | {
37 | "call-signature": "nospace",
38 | "index-signature": "nospace",
39 | "parameter": "nospace",
40 | "property-declaration": "nospace",
41 | "variable-declaration": "nospace"
42 | }
43 | ],
44 | "variable-name": [
45 | true,
46 | "ban-keywords"
47 | ],
48 | "whitespace": [
49 | true,
50 | "check-branch",
51 | "check-decl",
52 | "check-operator",
53 | "check-separator",
54 | "check-type"
55 | ]
56 | }
57 | }
58 |
--------------------------------------------------------------------------------