@nativescript-community/ui-image 4.3.6 → 4.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +72 -12
- package/angular/directives.d.ts +1 -1
- package/angular/esm2020/directives.mjs +2 -2
- package/angular/esm2020/module.mjs +3 -3
- package/angular/esm2020/nativescript-community-ui-image-angular.mjs +4 -1
- package/angular/fesm2015/nativescript-community-ui-image-angular.mjs +7 -3
- package/angular/fesm2020/nativescript-community-ui-image-angular.mjs +7 -3
- package/index-common.js +3 -0
- package/index.android.js +91 -2
- package/index.ios.js +62 -20
- package/package.json +6 -6
- package/platforms/android/native-api-usage.json +31 -30
- package/platforms/android/ui_image.aar +0 -0
- package/vue/index.mjs +0 -8
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,25 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [4.3.8](https://github.com/nativescript-community/ui-image/compare/v4.3.7...v4.3.8) (2023-05-24)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @nativescript-community/ui-image
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
## [4.3.7](https://github.com/nativescript-community/ui-image/compare/v4.3.6...v4.3.7) (2023-05-23)
|
15
|
+
|
16
|
+
|
17
|
+
### Bug Fixes
|
18
|
+
|
19
|
+
* **android:** better native-api-usage ([be61cc8](https://github.com/nativescript-community/ui-image/commit/be61cc8b4963baf91c743eee465d7ddba2233e84))
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
6
25
|
## [4.3.6](https://github.com/nativescript-community/ui-image/compare/v4.3.5...v4.3.6) (2022-12-01)
|
7
26
|
|
8
27
|
**Note:** Version bump only for package @nativescript-community/ui-image
|
package/README.md
CHANGED
@@ -56,9 +56,15 @@
|
|
56
56
|
* [Flavors](#flavors)
|
57
57
|
* [Demos](#demos)
|
58
58
|
* [Demos and Development](#demos-and-development)
|
59
|
-
* [Setup](#setup)
|
59
|
+
* [Repo Setup](#repo-setup)
|
60
60
|
* [Build](#build)
|
61
61
|
* [Demos](#demos-1)
|
62
|
+
* [Contributing](#contributing)
|
63
|
+
* [Update repo ](#update-repo-)
|
64
|
+
* [Update readme ](#update-readme-)
|
65
|
+
* [Update doc ](#update-doc-)
|
66
|
+
* [Publish](#publish)
|
67
|
+
* [modifying submodules](#modifying-submodules)
|
62
68
|
* [Questions](#questions)
|
63
69
|
|
64
70
|
|
@@ -630,18 +636,18 @@ $ ns run ios|android
|
|
630
636
|
## Demos and Development
|
631
637
|
|
632
638
|
|
633
|
-
### Setup
|
634
|
-
|
635
|
-
To run the demos, you must clone this repo **recursively**.
|
639
|
+
### Repo Setup
|
636
640
|
|
641
|
+
The repo uses submodules. If you did not clone with ` --recursive` then you need to call
|
637
642
|
```
|
638
|
-
git
|
643
|
+
git submodule update --init
|
639
644
|
```
|
640
645
|
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
646
|
+
The package manager used to install and link dependencies must be `pnpm` or `yarn`. `npm` wont work.
|
647
|
+
|
648
|
+
To develop and test:
|
649
|
+
if you use `yarn` then run `yarn`
|
650
|
+
if you use `pnpm` then run `pnpm i`
|
645
651
|
|
646
652
|
**Interactive Menu:**
|
647
653
|
|
@@ -650,10 +656,9 @@ To start the interactive menu, run `npm start` (or `yarn start` or `pnpm start`)
|
|
650
656
|
### Build
|
651
657
|
|
652
658
|
```bash
|
653
|
-
npm run build
|
654
|
-
|
655
|
-
npm run build.angular # or for Angular
|
659
|
+
npm run build.all
|
656
660
|
```
|
661
|
+
WARNING: it seems `yarn build.all` wont always work (not finding binaries in `node_modules/.bin`) which is why the doc explicitly uses `npm run`
|
657
662
|
|
658
663
|
### Demos
|
659
664
|
|
@@ -662,6 +667,61 @@ npm run demo.[ng|react|svelte|vue].[ios|android]
|
|
662
667
|
|
663
668
|
npm run demo.svelte.ios # Example
|
664
669
|
```
|
670
|
+
|
671
|
+
Demo setup is a bit special in the sense that if you want to modify/add demos you dont work directly in `demo-[ng|react|svelte|vue]`
|
672
|
+
Instead you work in `demo-snippets/[ng|react|svelte|vue]`
|
673
|
+
You can start from the `install.ts` of each flavor to see how to register new demos
|
674
|
+
|
675
|
+
|
676
|
+
[](#contributing)
|
677
|
+
|
678
|
+
## Contributing
|
679
|
+
|
680
|
+
### Update repo
|
681
|
+
|
682
|
+
You can update the repo files quite easily
|
683
|
+
|
684
|
+
First update the submodules
|
685
|
+
|
686
|
+
```bash
|
687
|
+
npm run update
|
688
|
+
```
|
689
|
+
|
690
|
+
Then commit the changes
|
691
|
+
Then update common files
|
692
|
+
|
693
|
+
```bash
|
694
|
+
npm run sync
|
695
|
+
```
|
696
|
+
Then you can run `yarn|pnpm`, commit changed files if any
|
697
|
+
|
698
|
+
### Update readme
|
699
|
+
```bash
|
700
|
+
npm run readme
|
701
|
+
```
|
702
|
+
|
703
|
+
### Update doc
|
704
|
+
```bash
|
705
|
+
npm run doc
|
706
|
+
```
|
707
|
+
|
708
|
+
### Publish
|
709
|
+
|
710
|
+
The publishing is completely handled by `lerna` (you can add `-- --bump major` to force a major release)
|
711
|
+
Simply run
|
712
|
+
```shell
|
713
|
+
npm run publish
|
714
|
+
```
|
715
|
+
|
716
|
+
### modifying submodules
|
717
|
+
|
718
|
+
The repo uses https:// for submodules which means you won't be able to push directly into the submodules.
|
719
|
+
One easy solution is t modify `~/.gitconfig` and add
|
720
|
+
```
|
721
|
+
[url "ssh://git@github.com/"]
|
722
|
+
pushInsteadOf = https://github.com/
|
723
|
+
```
|
724
|
+
|
665
725
|
|
666
726
|
[](#questions)
|
667
727
|
|
package/angular/directives.d.ts
CHANGED
@@ -2,6 +2,6 @@ import * as i0 from "@angular/core";
|
|
2
2
|
export declare class ImgDirective {
|
3
3
|
constructor();
|
4
4
|
static ɵfac: i0.ɵɵFactoryDeclaration<ImgDirective, never>;
|
5
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ImgDirective, "NSImg", never, {}, {}, never, never, false>;
|
5
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ImgDirective, "NSImg", never, {}, {}, never, never, false, never>;
|
6
6
|
}
|
7
7
|
export declare const NSIMG_DIRECTIVES: (typeof ImgDirective)[];
|
@@ -4,7 +4,7 @@ export class ImgDirective {
|
|
4
4
|
constructor() { }
|
5
5
|
}
|
6
6
|
ImgDirective.ɵfac = function ImgDirective_Factory(t) { return new (t || ImgDirective)(); };
|
7
|
-
ImgDirective.ɵdir = i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
7
|
+
ImgDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
8
8
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImgDirective, [{
|
9
9
|
type: Directive,
|
10
10
|
args: [{
|
@@ -12,4 +12,4 @@ ImgDirective.ɵdir = i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["
|
|
12
12
|
}]
|
13
13
|
}], function () { return []; }, null); })();
|
14
14
|
export const NSIMG_DIRECTIVES = [ImgDirective];
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbWFnZS9hbmd1bGFyL2RpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLFlBQVk7SUFDckIsZ0JBQWUsQ0FBQzs7d0VBRFAsWUFBWTsrREFBWixZQUFZO3VGQUFaLFlBQVk7Y0FIeEIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxPQUFPO2FBQ3BCOztBQUlELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdOU0ltZydcbn0pXG5leHBvcnQgY2xhc3MgSW1nRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG59XG5leHBvcnQgY29uc3QgTlNJTUdfRElSRUNUSVZFUyA9IFtJbWdEaXJlY3RpdmVdO1xuIl19
|
@@ -8,8 +8,8 @@ export { ImgDirective };
|
|
8
8
|
export class TNSImageModule {
|
9
9
|
}
|
10
10
|
TNSImageModule.ɵfac = function TNSImageModule_Factory(t) { return new (t || TNSImageModule)(); };
|
11
|
-
TNSImageModule.ɵmod = i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
12
|
-
TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
11
|
+
TNSImageModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
12
|
+
TNSImageModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
13
13
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TNSImageModule, [{
|
14
14
|
type: NgModule,
|
15
15
|
args: [{
|
@@ -19,4 +19,4 @@ TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
|
19
19
|
}], null, null); })();
|
20
20
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, { declarations: [i1.ImgDirective], exports: [i1.ImgDirective] }); })();
|
21
21
|
registerElement('NSImg', () => Img);
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltYWdlL2FuZ3VsYXIvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBS3hCLE1BQU0sT0FBTyxjQUFjOzs0RUFBZCxjQUFjO2dFQUFkLGNBQWM7O3VGQUFkLGNBQWM7Y0FKMUIsUUFBUTtlQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzthQUM5Qjs7d0ZBQ1ksY0FBYztBQUUzQixlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcblxuaW1wb3J0IHsgSW1nRGlyZWN0aXZlLCBOU0lNR19ESVJFQ1RJVkVTIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEltZyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQtY29tbXVuaXR5L3VpLWltYWdlJztcbmV4cG9ydCB7IEltZ0RpcmVjdGl2ZSB9O1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOU0lNR19ESVJFQ1RJVkVTXSxcbiAgICBleHBvcnRzOiBbTlNJTUdfRElSRUNUSVZFU10sXG59KVxuZXhwb3J0IGNsYXNzIFROU0ltYWdlTW9kdWxlIHt9XG5cbnJlZ2lzdGVyRWxlbWVudCgnTlNJbWcnLCAoKSA9PiBJbWcpO1xuIl19
|
@@ -1,2 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
1
4
|
export * from './index';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1pbWFnZS1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltYWdlL2FuZ3VsYXIvbmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1pbWFnZS1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -7,7 +7,7 @@ class ImgDirective {
|
|
7
7
|
constructor() { }
|
8
8
|
}
|
9
9
|
ImgDirective.ɵfac = function ImgDirective_Factory(t) { return new (t || ImgDirective)(); };
|
10
|
-
ImgDirective.ɵdir = i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
10
|
+
ImgDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
11
11
|
(function () {
|
12
12
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImgDirective, [{
|
13
13
|
type: Directive,
|
@@ -21,8 +21,8 @@ const NSIMG_DIRECTIVES = [ImgDirective];
|
|
21
21
|
class TNSImageModule {
|
22
22
|
}
|
23
23
|
TNSImageModule.ɵfac = function TNSImageModule_Factory(t) { return new (t || TNSImageModule)(); };
|
24
|
-
TNSImageModule.ɵmod = i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
25
|
-
TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
24
|
+
TNSImageModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
25
|
+
TNSImageModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
26
26
|
(function () {
|
27
27
|
(typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TNSImageModule, [{
|
28
28
|
type: NgModule,
|
@@ -35,5 +35,9 @@ TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
|
35
35
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, { declarations: [ImgDirective], exports: [ImgDirective] }); })();
|
36
36
|
registerElement('NSImg', () => Img);
|
37
37
|
|
38
|
+
/**
|
39
|
+
* Generated bundle index. Do not edit.
|
40
|
+
*/
|
41
|
+
|
38
42
|
export { ImgDirective, TNSImageModule };
|
39
43
|
//# sourceMappingURL=nativescript-community-ui-image-angular.mjs.map
|
@@ -7,7 +7,7 @@ class ImgDirective {
|
|
7
7
|
constructor() { }
|
8
8
|
}
|
9
9
|
ImgDirective.ɵfac = function ImgDirective_Factory(t) { return new (t || ImgDirective)(); };
|
10
|
-
ImgDirective.ɵdir = i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
10
|
+
ImgDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
11
11
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImgDirective, [{
|
12
12
|
type: Directive,
|
13
13
|
args: [{
|
@@ -19,8 +19,8 @@ const NSIMG_DIRECTIVES = [ImgDirective];
|
|
19
19
|
class TNSImageModule {
|
20
20
|
}
|
21
21
|
TNSImageModule.ɵfac = function TNSImageModule_Factory(t) { return new (t || TNSImageModule)(); };
|
22
|
-
TNSImageModule.ɵmod = i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
23
|
-
TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
22
|
+
TNSImageModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
23
|
+
TNSImageModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
24
24
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TNSImageModule, [{
|
25
25
|
type: NgModule,
|
26
26
|
args: [{
|
@@ -31,5 +31,9 @@ TNSImageModule.ɵinj = i0.ɵɵdefineInjector({});
|
|
31
31
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, { declarations: [ImgDirective], exports: [ImgDirective] }); })();
|
32
32
|
registerElement('NSImg', () => Img);
|
33
33
|
|
34
|
+
/**
|
35
|
+
* Generated bundle index. Do not edit.
|
36
|
+
*/
|
37
|
+
|
34
38
|
export { ImgDirective, TNSImageModule };
|
35
39
|
//# sourceMappingURL=nativescript-community-ui-image-angular.mjs.map
|
package/index-common.js
CHANGED
@@ -46,6 +46,7 @@ export class EventData {
|
|
46
46
|
}
|
47
47
|
}
|
48
48
|
export class ImageBase extends View {
|
49
|
+
// public static blendingModeProperty = new Property<ImageBase, string>({ name: 'blendingMode' });
|
49
50
|
get nativeImageViewProtected() {
|
50
51
|
return this.nativeViewProtected;
|
51
52
|
}
|
@@ -98,6 +99,7 @@ export class ImageBase extends View {
|
|
98
99
|
scaleH = measureScale / nativeScale;
|
99
100
|
}
|
100
101
|
else {
|
102
|
+
// No infinite dimensions.
|
101
103
|
switch (this.stretch) {
|
102
104
|
case ScaleType.FitXY:
|
103
105
|
case ScaleType.FocusCrop:
|
@@ -203,4 +205,5 @@ ImageBase.noCacheProperty.register(ImageBase);
|
|
203
205
|
ImageBase.clipToBoundsProperty.register(ImageBase);
|
204
206
|
ImageBase.animatedImageViewProperty.register(ImageBase);
|
205
207
|
ImageBase.loadModeProperty.register(ImageBase);
|
208
|
+
// ImageBase.blendingModeProperty.register(ImageBase);
|
206
209
|
//# sourceMappingURL=index-common.js.map
|
package/index.android.js
CHANGED
@@ -17,10 +17,13 @@ export function initialize(config) {
|
|
17
17
|
let builder;
|
18
18
|
const useOkhttp = config?.useOkhttp;
|
19
19
|
if (useOkhttp) {
|
20
|
+
//@ts-ignore
|
20
21
|
if (useOkhttp instanceof okhttp3.OkHttpClient) {
|
22
|
+
//@ts-ignore
|
21
23
|
builder = com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory.newBuilder(context, useOkhttp);
|
22
24
|
}
|
23
25
|
else {
|
26
|
+
//@ts-ignore
|
24
27
|
builder = com.facebook.imagepipeline.backends.okhttp3.OkHttpImagePipelineConfigFactory.newBuilder(context, new okhttp3.OkHttpClient());
|
25
28
|
}
|
26
29
|
}
|
@@ -33,6 +36,7 @@ export function initialize(config) {
|
|
33
36
|
if (config?.leakTracker) {
|
34
37
|
builder.setCloseableReferenceLeakTracker(config.leakTracker);
|
35
38
|
}
|
39
|
+
// builder.experiment().setNativeCodeDisabled(true);
|
36
40
|
const imagePipelineConfig = builder.build();
|
37
41
|
com.facebook.drawee.backends.pipeline.Fresco.initialize(context, imagePipelineConfig);
|
38
42
|
initialized = true;
|
@@ -134,6 +138,7 @@ export class ImagePipeline {
|
|
134
138
|
else {
|
135
139
|
datasource = this._android.prefetchToBitmapCache(request, uri);
|
136
140
|
}
|
141
|
+
// initializeBaseDataSubscriber();
|
137
142
|
datasource.subscribe(new com.nativescript.image.BaseDataSubscriber(new com.nativescript.image.BaseDataSubscriberListener({
|
138
143
|
onFailure: reject,
|
139
144
|
onNewResult: resolve
|
@@ -151,6 +156,42 @@ export class ImagePipeline {
|
|
151
156
|
this._android = value;
|
152
157
|
}
|
153
158
|
fetchImage() {
|
159
|
+
// ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
160
|
+
// ImageRequest imageRequest = ImageRequestBuilder
|
161
|
+
// .newBuilderWithSource(imageUri)
|
162
|
+
// .setRequestPriority(Priority.HIGH)
|
163
|
+
// .setLowestPermittedRequestLevel(ImageRequest.RequestLevel.FULL_FETCH)
|
164
|
+
// .build();
|
165
|
+
// DataSource<CloseableReference<CloseableImage>> dataSource =
|
166
|
+
// imagePipeline.fetchDecodedImage(imageRequest, mContext);
|
167
|
+
// try {
|
168
|
+
// dataSource.subscribe(new BaseBitmapDataSubscriber() {
|
169
|
+
// @Override
|
170
|
+
// public void onNewResultImpl(Bitmap bitmap) {
|
171
|
+
// if (bitmap == null) {
|
172
|
+
// Log.d(TAG, "Bitmap data source returned success, but bitmap null.");
|
173
|
+
// return;
|
174
|
+
// }
|
175
|
+
// // The bitmap provided to this method is only guaranteed to be around
|
176
|
+
// // for the lifespan of this method. The image pipeline frees the
|
177
|
+
// // bitmap's memory after this method has completed.
|
178
|
+
// //
|
179
|
+
// // This is fine when passing the bitmap to a system process as
|
180
|
+
// // Android automatically creates a copy.
|
181
|
+
// //
|
182
|
+
// // If you need to keep the bitmap around, look into using a
|
183
|
+
// // BaseDataSubscriber instead of a BaseBitmapDataSubscriber.
|
184
|
+
// }
|
185
|
+
// @Override
|
186
|
+
// public void onFailureImpl(DataSource dataSource) {
|
187
|
+
// // No cleanup required here
|
188
|
+
// }
|
189
|
+
// }, CallerThreadExecutor.getInstance());
|
190
|
+
// } finally {
|
191
|
+
// if (dataSource != null) {
|
192
|
+
// dataSource.close();
|
193
|
+
// }
|
194
|
+
// }
|
154
195
|
}
|
155
196
|
}
|
156
197
|
export class ImageError {
|
@@ -221,6 +262,8 @@ export const needRequestImage = function (target, propertyKey, descriptor) {
|
|
221
262
|
descriptor.value = function (...args) {
|
222
263
|
if (!this._canRequestImage) {
|
223
264
|
this._needRequestImage = true;
|
265
|
+
// we need to ensure a hierarchy is set or the default aspect ratio wont be set
|
266
|
+
// because aspectFit is the default (wanted) but then we wont go into stretchProperty.setNative
|
224
267
|
this._needUpdateHierarchy = true;
|
225
268
|
return;
|
226
269
|
}
|
@@ -247,6 +290,7 @@ export class Img extends ImageBase {
|
|
247
290
|
this._needRequestImage = false;
|
248
291
|
}
|
249
292
|
onResumeNativeUpdates() {
|
293
|
+
// {N} suspends properties update on `_suspendNativeUpdates`. So we only need to do this in onResumeNativeUpdates
|
250
294
|
this._canRequestImage = false;
|
251
295
|
this._canUpdateHierarchy = false;
|
252
296
|
super.onResumeNativeUpdates();
|
@@ -266,6 +310,7 @@ export class Img extends ImageBase {
|
|
266
310
|
initialize(initializeConfig);
|
267
311
|
}
|
268
312
|
const view = new com.nativescript.image.DraweeView(this._context);
|
313
|
+
// (view as any).setClipToBounds(false);
|
269
314
|
return view;
|
270
315
|
}
|
271
316
|
updateViewSize(imageInfo) {
|
@@ -288,6 +333,13 @@ export class Img extends ImageBase {
|
|
288
333
|
draweeView.setAspectRatio(0);
|
289
334
|
}
|
290
335
|
}
|
336
|
+
// public initNativeView(): void {
|
337
|
+
// this.initDrawee();
|
338
|
+
// this.updateHierarchy();
|
339
|
+
// }
|
340
|
+
// public disposeNativeView() {
|
341
|
+
// this.nativeImageViewProtected.setImageURI(null, null);
|
342
|
+
// }
|
291
343
|
updateImageUri() {
|
292
344
|
const imagePipeLine = getImagePipeline();
|
293
345
|
const src = this.src;
|
@@ -360,8 +412,23 @@ export class Img extends ImageBase {
|
|
360
412
|
[_t = ImageBase.aspectRatioProperty.setNative]() {
|
361
413
|
this.initImage();
|
362
414
|
}
|
415
|
+
// [ImageBase.blendingModeProperty.setNative](value: string) {
|
416
|
+
// console.log('blendingModeProperty', value);
|
417
|
+
// switch (value) {
|
418
|
+
// case 'multiply':
|
419
|
+
// (this.nativeImageViewProtected as any).setXfermode(android.graphics.PorterDuff.Mode.MULTIPLY);
|
420
|
+
// break;
|
421
|
+
// case 'lighten':
|
422
|
+
// (this.nativeImageViewProtected as any).setXfermode(android.graphics.PorterDuff.Mode.LIGHTEN);
|
423
|
+
// break;
|
424
|
+
// }
|
425
|
+
// }
|
426
|
+
// private initDrawee() {
|
427
|
+
// this.initImage();
|
428
|
+
// }
|
363
429
|
async initImage() {
|
364
430
|
if (this.nativeImageViewProtected) {
|
431
|
+
// this.nativeImageViewProtected.setImageURI(null);
|
365
432
|
const src = this.src;
|
366
433
|
if (src instanceof Promise) {
|
367
434
|
this.src = await src;
|
@@ -376,6 +443,7 @@ export class Img extends ImageBase {
|
|
376
443
|
else if (Utils.isFontIconURI(src)) {
|
377
444
|
const fontIconCode = src.split('//')[1];
|
378
445
|
if (fontIconCode !== undefined) {
|
446
|
+
// support sync mode only
|
379
447
|
const font = this.style.fontInternal;
|
380
448
|
const color = this.style.color;
|
381
449
|
drawable = new android.graphics.drawable.BitmapDrawable(Utils.ad.getApplicationContext().getResources(), ImageSource.fromFontIconCodeSync(fontIconCode, font, color).android);
|
@@ -393,12 +461,13 @@ export class Img extends ImageBase {
|
|
393
461
|
}
|
394
462
|
if (this.noCache) {
|
395
463
|
const imagePipeLine = getImagePipeline();
|
396
|
-
const isInCache = imagePipeLine.isInBitmapMemoryCache(uri);
|
464
|
+
const isInCache = imagePipeLine.isInBitmapMemoryCache(uri) || imagePipeLine.isInDiskCache(uri);
|
397
465
|
if (isInCache) {
|
398
466
|
imagePipeLine.evictFromCache(uri);
|
399
467
|
}
|
400
468
|
}
|
401
469
|
this.isLoading = true;
|
470
|
+
// const progressiveRenderingEnabledValue = this.progressiveRenderingEnabled !== undefined ? this.progressiveRenderingEnabled : false;
|
402
471
|
let requestBuilder = com.facebook.imagepipeline.request.ImageRequestBuilder.newBuilderWithSource(uri).setRotationOptions(com.facebook.imagepipeline.common.RotationOptions.autoRotate());
|
403
472
|
if (this.progressiveRenderingEnabled === true) {
|
404
473
|
requestBuilder = requestBuilder.setProgressiveRenderingEnabled(this.progressiveRenderingEnabled);
|
@@ -443,6 +512,7 @@ export class Img extends ImageBase {
|
|
443
512
|
}
|
444
513
|
const nativeView = that && that.get();
|
445
514
|
if (nativeView) {
|
515
|
+
// const nView = nativeView.nativeViewProtected;
|
446
516
|
nativeView.isLoading = false;
|
447
517
|
const imageError = new ImageError(throwable);
|
448
518
|
const args = {
|
@@ -526,6 +596,8 @@ export class Img extends ImageBase {
|
|
526
596
|
}
|
527
597
|
}
|
528
598
|
});
|
599
|
+
// const async = this.loadMode === 'async';
|
600
|
+
// if (async) {
|
529
601
|
const builder = com.facebook.drawee.backends.pipeline.Fresco.newDraweeControllerBuilder();
|
530
602
|
builder.setImageRequest(request);
|
531
603
|
builder.setCallerContext(src);
|
@@ -552,6 +624,13 @@ export class Img extends ImageBase {
|
|
552
624
|
}
|
553
625
|
const controller = builder.build();
|
554
626
|
this.nativeImageViewProtected.setController(controller);
|
627
|
+
// } else {
|
628
|
+
// const dataSource = com.facebook.drawee.backends.pipeline.Fresco.getImagePipeline().fetchDecodedImage(request, src);
|
629
|
+
// const result = com.facebook.datasource.DataSources.waitForFinalResult(dataSource);
|
630
|
+
// const bitmap = result.get().underlyingBitmap;
|
631
|
+
// CloseableReference.closeSafely(result);
|
632
|
+
// dataSource.close();
|
633
|
+
// }
|
555
634
|
}
|
556
635
|
else {
|
557
636
|
this.nativeImageViewProtected.setController(null);
|
@@ -622,6 +701,7 @@ export class Img extends ImageBase {
|
|
622
701
|
if (Utils.isFontIconURI(path)) {
|
623
702
|
const fontIconCode = path.split('//')[1];
|
624
703
|
if (fontIconCode !== undefined) {
|
704
|
+
// support sync mode only
|
625
705
|
const font = this.style.fontInternal;
|
626
706
|
const color = this.style.color;
|
627
707
|
drawable = new android.graphics.drawable.BitmapDrawable(Utils.ad.getApplicationContext().getResources(), ImageSource.fromFontIconCodeSync(fontIconCode, font, color).android);
|
@@ -629,7 +709,7 @@ export class Img extends ImageBase {
|
|
629
709
|
}
|
630
710
|
else if (Utils.isFileOrResourcePath(path)) {
|
631
711
|
if (path.indexOf(Utils.RESOURCE_PREFIX) === 0) {
|
632
|
-
return this.getDrawableFromResource(path);
|
712
|
+
return this.getDrawableFromResource(path); // number!
|
633
713
|
}
|
634
714
|
else {
|
635
715
|
drawable = this.getDrawableFromLocalFile(path);
|
@@ -651,6 +731,7 @@ export class Img extends ImageBase {
|
|
651
731
|
}
|
652
732
|
getDrawableFromResource(resourceName) {
|
653
733
|
const identifier = Utils.ad.getApplication().getResources().getIdentifier(resourceName.substr(Utils.RESOURCE_PREFIX.length), 'drawable', Utils.ad.getApplication().getPackageName());
|
734
|
+
// we return the identifier to allow Fresco to handle memory / caching
|
654
735
|
return identifier;
|
655
736
|
}
|
656
737
|
startAnimating() {
|
@@ -830,23 +911,31 @@ function getScaleType(scaleType) {
|
|
830
911
|
if (isString(scaleType)) {
|
831
912
|
switch (scaleType) {
|
832
913
|
case ScaleType.Center:
|
914
|
+
//@ts-ignore
|
833
915
|
return new com.nativescript.image.ScalingUtils.ScaleTypeCenter();
|
834
916
|
case ScaleType.AspectFill:
|
835
917
|
case ScaleType.CenterCrop:
|
918
|
+
//@ts-ignore
|
836
919
|
return new com.nativescript.image.ScalingUtils.ScaleTypeCenterCrop();
|
837
920
|
case ScaleType.CenterInside:
|
921
|
+
//@ts-ignore
|
838
922
|
return new com.nativescript.image.ScalingUtils.ScaleTypeCenterInside();
|
839
923
|
case ScaleType.FitCenter:
|
840
924
|
case ScaleType.AspectFit:
|
925
|
+
//@ts-ignore
|
841
926
|
return new com.nativescript.image.ScalingUtils.ScaleTypeFitCenter();
|
842
927
|
case ScaleType.FitEnd:
|
928
|
+
//@ts-ignore
|
843
929
|
return new com.nativescript.image.ScalingUtils.ScaleTypeFitEnd();
|
844
930
|
case ScaleType.FitStart:
|
931
|
+
//@ts-ignore
|
845
932
|
return new com.nativescript.image.ScalingUtils.ScaleTypeFitStart();
|
846
933
|
case ScaleType.Fill:
|
847
934
|
case ScaleType.FitXY:
|
935
|
+
//@ts-ignore
|
848
936
|
return new com.nativescript.image.ScalingUtils.ScaleTypeFitXY();
|
849
937
|
case ScaleType.FocusCrop:
|
938
|
+
//@ts-ignore
|
850
939
|
return new com.nativescript.image.ScalingUtils.ScaleTypeFocusCrop();
|
851
940
|
default:
|
852
941
|
break;
|
package/index.ios.js
CHANGED
@@ -23,17 +23,17 @@ function getScaleType(scaleType) {
|
|
23
23
|
case ScaleType.Center:
|
24
24
|
case ScaleType.CenterCrop:
|
25
25
|
case ScaleType.AspectFill:
|
26
|
-
return 2
|
26
|
+
return 2 /* SDImageScaleMode.AspectFill */;
|
27
27
|
case ScaleType.CenterInside:
|
28
28
|
case ScaleType.FitCenter:
|
29
29
|
case ScaleType.FitEnd:
|
30
30
|
case ScaleType.FitStart:
|
31
31
|
case ScaleType.AspectFit:
|
32
|
-
return 1
|
32
|
+
return 1 /* SDImageScaleMode.AspectFit */;
|
33
33
|
case ScaleType.FitXY:
|
34
34
|
case ScaleType.FocusCrop:
|
35
35
|
case ScaleType.Fill:
|
36
|
-
return 0
|
36
|
+
return 0 /* SDImageScaleMode.Fill */;
|
37
37
|
default:
|
38
38
|
break;
|
39
39
|
}
|
@@ -44,24 +44,24 @@ function getUIImageScaleType(scaleType) {
|
|
44
44
|
if (isString(scaleType)) {
|
45
45
|
switch (scaleType) {
|
46
46
|
case ScaleType.Center:
|
47
|
-
return 4
|
47
|
+
return 4 /* UIViewContentMode.Center */;
|
48
48
|
case ScaleType.FocusCrop:
|
49
49
|
case ScaleType.CenterCrop:
|
50
50
|
case ScaleType.AspectFill:
|
51
|
-
return 2
|
51
|
+
return 2 /* UIViewContentMode.ScaleAspectFill */;
|
52
52
|
case ScaleType.AspectFit:
|
53
53
|
case ScaleType.CenterInside:
|
54
54
|
case ScaleType.FitCenter:
|
55
|
-
return 1
|
55
|
+
return 1 /* UIViewContentMode.ScaleAspectFit */;
|
56
56
|
case ScaleType.FitEnd:
|
57
|
-
return 8
|
57
|
+
return 8 /* UIViewContentMode.Right */;
|
58
58
|
case ScaleType.FitStart:
|
59
|
-
return 7
|
59
|
+
return 7 /* UIViewContentMode.Left */;
|
60
60
|
case ScaleType.Fill:
|
61
61
|
case ScaleType.FitXY:
|
62
|
-
return 0
|
62
|
+
return 0 /* UIViewContentMode.ScaleToFill */;
|
63
63
|
case ScaleType.None:
|
64
|
-
return 9
|
64
|
+
return 9 /* UIViewContentMode.TopLeft */;
|
65
65
|
default:
|
66
66
|
break;
|
67
67
|
}
|
@@ -102,10 +102,10 @@ export class ImagePipeline {
|
|
102
102
|
this._ios.clearDiskOnCompletion(null);
|
103
103
|
}
|
104
104
|
prefetchToDiskCache(uri) {
|
105
|
-
return this.prefetchToCacheType(uri, 1);
|
105
|
+
return this.prefetchToCacheType(uri, 1 /* SDImageCacheType.Disk */);
|
106
106
|
}
|
107
107
|
prefetchToMemoryCache(uri) {
|
108
|
-
return this.prefetchToCacheType(uri, 2);
|
108
|
+
return this.prefetchToCacheType(uri, 2 /* SDImageCacheType.Memory */);
|
109
109
|
}
|
110
110
|
prefetchToCacheType(uri, cacheType) {
|
111
111
|
return new Promise((resolve, reject) => {
|
@@ -171,7 +171,7 @@ export class Img extends ImageBase {
|
|
171
171
|
if (!this.nativeViewProtected) {
|
172
172
|
return;
|
173
173
|
}
|
174
|
-
const animate = (this.alwaysFade || cacheType !== 2) && this.fadeDuration > 0;
|
174
|
+
const animate = (this.alwaysFade || cacheType !== 2 /* SDImageCacheType.Memory */) && this.fadeDuration > 0;
|
175
175
|
if (image) {
|
176
176
|
this._setNativeImage(image, animate);
|
177
177
|
}
|
@@ -207,16 +207,18 @@ export class Img extends ImageBase {
|
|
207
207
|
}
|
208
208
|
createNativeView() {
|
209
209
|
const result = this.animatedImageView ? SDAnimatedImageView.new() : UIImageView.new();
|
210
|
-
result.contentMode = 1
|
210
|
+
result.contentMode = 1 /* UIViewContentMode.ScaleAspectFit */;
|
211
211
|
result.clipsToBounds = true;
|
212
|
-
result.userInteractionEnabled = true;
|
212
|
+
result.userInteractionEnabled = true; // needed for gestures to work
|
213
213
|
result.tintColor = null;
|
214
214
|
return result;
|
215
215
|
}
|
216
216
|
_setNativeClipToBounds() {
|
217
|
+
// Always set clipsToBounds for images
|
217
218
|
this.nativeViewProtected.clipsToBounds = true;
|
218
219
|
}
|
219
220
|
onMeasure(widthMeasureSpec, heightMeasureSpec) {
|
221
|
+
// We don't call super because we measure native view with specific size.
|
220
222
|
const width = layout.getMeasureSpecSize(widthMeasureSpec);
|
221
223
|
const widthMode = layout.getMeasureSpecMode(widthMeasureSpec);
|
222
224
|
const height = layout.getMeasureSpecSize(heightMeasureSpec);
|
@@ -233,6 +235,7 @@ export class Img extends ImageBase {
|
|
233
235
|
const nativeHeight = image ? layout.toDevicePixels(image.size.height) : 0;
|
234
236
|
const imgRatio = nativeWidth / nativeHeight;
|
235
237
|
const ratio = this.aspectRatio || imgRatio;
|
238
|
+
// const scale = this.computeScaleFactor(width, height, finiteWidth, finiteHeight, nativeWidth, nativeHeight, this.aspectRatio || imgRatio );
|
236
239
|
if (!finiteWidth) {
|
237
240
|
widthMeasureSpec = layout.makeMeasureSpec(height * ratio, layout.EXACTLY);
|
238
241
|
}
|
@@ -260,11 +263,28 @@ export class Img extends ImageBase {
|
|
260
263
|
}
|
261
264
|
_setNativeImage(nativeImage, animated = true) {
|
262
265
|
if (animated) {
|
266
|
+
// switch (this.transition) {
|
267
|
+
// case 'fade':
|
263
268
|
this.nativeImageViewProtected.alpha = 0.0;
|
264
269
|
this.nativeImageViewProtected.image = nativeImage;
|
265
270
|
UIView.animateWithDurationAnimations(this.fadeDuration / 1000, () => {
|
266
271
|
this.nativeImageViewProtected.alpha = this.opacity;
|
267
272
|
});
|
273
|
+
// break;
|
274
|
+
// case 'curlUp':
|
275
|
+
// UIView.transitionWithViewDurationOptionsAnimationsCompletion(
|
276
|
+
// this.nativeImageViewProtected,
|
277
|
+
// 0.3,
|
278
|
+
// UIViewAnimationOptions.TransitionCrossDissolve,
|
279
|
+
// () => {
|
280
|
+
// this._setNativeImage(image);
|
281
|
+
// },
|
282
|
+
// null
|
283
|
+
// );
|
284
|
+
// break;
|
285
|
+
// default:
|
286
|
+
// this._setNativeImage(image);
|
287
|
+
// }
|
268
288
|
}
|
269
289
|
else {
|
270
290
|
this.nativeImageViewProtected.image = nativeImage;
|
@@ -283,6 +303,7 @@ export class Img extends ImageBase {
|
|
283
303
|
if (Utils.isFontIconURI(imagePath)) {
|
284
304
|
const fontIconCode = imagePath.split('//')[1];
|
285
305
|
if (fontIconCode !== undefined) {
|
306
|
+
// support sync mode only
|
286
307
|
const font = this.style.fontInternal;
|
287
308
|
const color = this.style.color;
|
288
309
|
image = ImageSource.fromFontIconCodeSync(fontIconCode, font, color).ios;
|
@@ -317,6 +338,7 @@ export class Img extends ImageBase {
|
|
317
338
|
if (Utils.isFontIconURI(src)) {
|
318
339
|
const fontIconCode = src.split('//')[1];
|
319
340
|
if (fontIconCode !== undefined) {
|
341
|
+
// support sync mode only
|
320
342
|
const font = this.style.fontInternal;
|
321
343
|
const color = this.style.color;
|
322
344
|
this._setNativeImage(ImageSource.fromFontIconCodeSync(fontIconCode, font, color).ios, animate);
|
@@ -334,16 +356,17 @@ export class Img extends ImageBase {
|
|
334
356
|
}
|
335
357
|
}
|
336
358
|
this.isLoading = true;
|
337
|
-
let options = 2048 | 1024
|
359
|
+
let options = 2048 /* SDWebImageOptions.ScaleDownLargeImages */ | 1024 /* SDWebImageOptions.AvoidAutoSetImage */;
|
338
360
|
if (this.alwaysFade === true) {
|
339
|
-
options |= 131072
|
361
|
+
options |= 131072 /* SDWebImageOptions.ForceTransition */;
|
340
362
|
}
|
341
363
|
const context = NSMutableDictionary.dictionary();
|
342
364
|
const transformers = [];
|
343
365
|
if (this.progressiveRenderingEnabled === true) {
|
344
|
-
options = options | 4
|
366
|
+
options = options | 4 /* SDWebImageOptions.ProgressiveLoad */;
|
345
367
|
}
|
346
368
|
if (this.decodeWidth && this.decodeHeight) {
|
369
|
+
//@ts-ignore
|
347
370
|
transformers.push(NSImageDecodeSizeTransformer.transformerWithDecodeWidthDecodeHeight(this.decodeWidth, this.decodeHeight));
|
348
371
|
}
|
349
372
|
if (this.tintColor) {
|
@@ -353,14 +376,18 @@ export class Img extends ImageBase {
|
|
353
376
|
transformers.push(SDImageBlurTransformer.transformerWithRadius(this.blurRadius));
|
354
377
|
}
|
355
378
|
if (this.roundAsCircle === true) {
|
379
|
+
//@ts-ignore
|
356
380
|
transformers.push(NSImageRoundAsCircleTransformer.transformer());
|
357
381
|
}
|
358
382
|
if (this.roundBottomLeftRadius || this.roundBottomRightRadius || this.roundTopLeftRadius || this.roundTopRightRadius) {
|
359
|
-
transformers.push(
|
383
|
+
transformers.push(
|
384
|
+
//@ts-ignore
|
385
|
+
NSImageRoundCornerTransformer.transformerWithTopLefRadiusTopRightRadiusBottomRightRadiusBottomLeftRadius(layout.toDeviceIndependentPixels(this.roundTopLeftRadius), layout.toDeviceIndependentPixels(this.roundTopRightRadius), layout.toDeviceIndependentPixels(this.roundBottomRightRadius), layout.toDeviceIndependentPixels(this.roundBottomLeftRadius)));
|
360
386
|
}
|
361
387
|
if (transformers.length > 0) {
|
362
388
|
if (this.animatedImageView) {
|
363
|
-
|
389
|
+
// as we use SDAnimatedImageView all images are loaded as SDAnimatedImage;
|
390
|
+
options |= 512 /* SDWebImageOptions.TransformAnimatedImage */;
|
364
391
|
}
|
365
392
|
context.setValueForKey(SDImagePipelineTransformer.transformerWithTransformers(transformers), SDWebImageContextImageTransformer);
|
366
393
|
}
|
@@ -382,6 +409,7 @@ export class Img extends ImageBase {
|
|
382
409
|
this.initImage();
|
383
410
|
}
|
384
411
|
[ImageBase.failureImageUriProperty.setNative]() {
|
412
|
+
// this.updateHierarchy();
|
385
413
|
}
|
386
414
|
[ImageBase.stretchProperty.setNative](value) {
|
387
415
|
if (!this.nativeView) {
|
@@ -389,6 +417,20 @@ export class Img extends ImageBase {
|
|
389
417
|
}
|
390
418
|
this.nativeImageViewProtected.contentMode = getUIImageScaleType(value);
|
391
419
|
}
|
420
|
+
// [ImageBase.blendingModeProperty.setNative](value: string) {
|
421
|
+
// console.log('blendingModeProperty', value);
|
422
|
+
// switch (value) {
|
423
|
+
// case 'multiply':
|
424
|
+
// this.nativeImageViewProtected.layer.compositingFilter = 'multiply';
|
425
|
+
// break;
|
426
|
+
// case 'lighten':
|
427
|
+
// this.nativeImageViewProtected.layer.compositingFilter = 'lighten';
|
428
|
+
// break;
|
429
|
+
// case 'screen':
|
430
|
+
// this.nativeImageViewProtected.layer.compositingFilter = 'screen';
|
431
|
+
// break;
|
432
|
+
// }
|
433
|
+
// }
|
392
434
|
startAnimating() {
|
393
435
|
this.nativeImageViewProtected.startAnimating();
|
394
436
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nativescript-community/ui-image",
|
3
|
-
"version": "4.3.
|
3
|
+
"version": "4.3.8",
|
4
4
|
"description": "Advanced and efficient image display plugin which uses Fresco (Android) and SDWebImage (iOS) to implement caching, placeholders, image effects, and much more.",
|
5
5
|
"main": "./index",
|
6
6
|
"sideEffects": false,
|
@@ -8,10 +8,10 @@
|
|
8
8
|
"scripts": {
|
9
9
|
"build": "npm run tsc && npm run readme",
|
10
10
|
"build.all": "npm run build && npm run build.angular",
|
11
|
-
"build.angular": "
|
12
|
-
"readme": "
|
13
|
-
"tsc": "
|
14
|
-
"clean": "
|
11
|
+
"build.angular": "ng-packagr -p ../../src/image/angular/ng-package.json -c ../../src/image/angular/tsconfig.json",
|
12
|
+
"readme": "readme generate -c ../../tools/readme/blueprint.json",
|
13
|
+
"tsc": "cpy '**/*.d.ts' '../../packages/image' --parents --cwd=../../src/image && tsc -skipLibCheck -d",
|
14
|
+
"clean": "rimraf ./*.d.ts ./*.js ./*.js.map"
|
15
15
|
},
|
16
16
|
"nativescript": {
|
17
17
|
"platforms": {
|
@@ -44,5 +44,5 @@
|
|
44
44
|
},
|
45
45
|
"license": "Apache-2.0",
|
46
46
|
"readmeFilename": "README.md",
|
47
|
-
"gitHead": "
|
47
|
+
"gitHead": "5f56e2e92f95199ceb3407cb6b41c8e54247bb72"
|
48
48
|
}
|
@@ -1,35 +1,36 @@
|
|
1
1
|
{
|
2
2
|
"uses": [
|
3
|
-
"com.facebook.drawee.drawable:ScalingUtils
|
4
|
-
"com.facebook.drawee.drawable.
|
5
|
-
"com.facebook.drawee.generic:RoundingParams
|
6
|
-
"com.facebook.drawee.drawable:ProgressBarDrawable
|
7
|
-
"com.facebook.drawee.view:DraweeView
|
8
|
-
"com.facebook.drawee.interfaces:DraweeHierarchy
|
9
|
-
"com.facebook.drawee.interfaces:SettableDraweeHierarchy
|
10
|
-
"com.facebook.drawee.interfaces:SimpleDraweeControllerBuilder
|
11
|
-
"com.facebook.drawee.interfaces:DraweeController
|
12
|
-
"com.facebook.drawee.generic:GenericDraweeHierarchyBuilder
|
13
|
-
"com.facebook.drawee.generic:GenericDraweeHierarchy
|
14
|
-
"com.facebook.imagepipeline.request:ImageRequestBuilder
|
15
|
-
"com.facebook.imagepipeline.request:ImageRequest
|
16
|
-
"com.facebook.imagepipeline.core:ImagePipelineConfig
|
17
|
-
"com.facebook.imagepipeline.
|
18
|
-
"com.facebook.imagepipeline.common:
|
19
|
-
"com.facebook.
|
20
|
-
"com.facebook.drawee.backends.pipeline:
|
21
|
-
"com.facebook.drawee.backends.pipeline:
|
22
|
-
"com.facebook.drawee.
|
23
|
-
"com.facebook.drawee.controller:
|
24
|
-
"com.facebook.drawee.
|
25
|
-
"com.facebook.drawee.backends.pipeline.info:
|
26
|
-
"com.facebook.drawee.
|
27
|
-
"com.
|
28
|
-
"com.nativescript.image:
|
3
|
+
"com.facebook.drawee.drawable:ScalingUtils",
|
4
|
+
"com.facebook.drawee.drawable:ScalingUtils.ScaleType",
|
5
|
+
"com.facebook.drawee.generic:RoundingParams",
|
6
|
+
"com.facebook.drawee.drawable:ProgressBarDrawable",
|
7
|
+
"com.facebook.drawee.view:DraweeView",
|
8
|
+
"com.facebook.drawee.interfaces:DraweeHierarchy",
|
9
|
+
"com.facebook.drawee.interfaces:SettableDraweeHierarchy",
|
10
|
+
"com.facebook.drawee.interfaces:SimpleDraweeControllerBuilder",
|
11
|
+
"com.facebook.drawee.interfaces:DraweeController",
|
12
|
+
"com.facebook.drawee.generic:GenericDraweeHierarchyBuilder",
|
13
|
+
"com.facebook.drawee.generic:GenericDraweeHierarchy",
|
14
|
+
"com.facebook.imagepipeline.request:ImageRequestBuilder",
|
15
|
+
"com.facebook.imagepipeline.request:ImageRequest",
|
16
|
+
"com.facebook.imagepipeline.core:ImagePipelineConfig",
|
17
|
+
"com.facebook.imagepipeline.core:ImagePipeline",
|
18
|
+
"com.facebook.imagepipeline.common:RotationOptions",
|
19
|
+
"com.facebook.imagepipeline.common:ResizeOptions",
|
20
|
+
"com.facebook.drawee.backends.pipeline:Fresco",
|
21
|
+
"com.facebook.drawee.backends.pipeline:PipelineDraweeControllerBuilder",
|
22
|
+
"com.facebook.drawee.backends.pipeline:PipelineDraweeController",
|
23
|
+
"com.facebook.drawee.controller:AbstractDraweeControllerBuilder",
|
24
|
+
"com.facebook.drawee.controller:AbstractDraweeController",
|
25
|
+
"com.facebook.drawee.backends.pipeline.info:ImagePerfDataListener",
|
26
|
+
"com.facebook.drawee.backends.pipeline.info:ImagePerfData",
|
27
|
+
"com.facebook.drawee.controller:ControllerListener",
|
28
|
+
"com.nativescript.image:DraweeView",
|
29
|
+
"com.nativescript.image:ScalingBlurPostprocessor",
|
29
30
|
"android.graphics.drawable:Animatable",
|
30
|
-
"com.facebook.imagepipeline.image:ImageInfo
|
31
|
-
"com.facebook.common.util:UriUtil
|
32
|
-
"android.net:Uri
|
33
|
-
"android.net.Uri:Builder
|
31
|
+
"com.facebook.imagepipeline.image:ImageInfo",
|
32
|
+
"com.facebook.common.util:UriUtil",
|
33
|
+
"android.net:Uri",
|
34
|
+
"android.net.Uri:Builder"
|
34
35
|
]
|
35
36
|
}
|
Binary file
|