@nativescript-community/ui-image 4.5.7 → 4.6.0
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 +6 -0
- package/angular/fesm2022/nativescript-community-ui-image-angular.mjs +3 -3
- package/angular/index.d.ts +15 -1
- package/angular/package.json +1 -3
- package/index-common.d.ts +2 -0
- package/index-common.js +2 -0
- package/index.android.d.ts +24 -1
- package/index.android.js +5 -2
- package/index.ios.d.ts +9 -1
- package/index.ios.js +19 -2
- package/package.json +2 -2
- package/platforms/android/include.gradle +24 -10
- package/platforms/android/java/com/nativescript/image/DraweeView.java +6 -3
- package/typings/android.d.ts +2 -3
- package/angular/directives.d.ts +0 -7
- package/angular/esm2022/directives.mjs +0 -15
- package/angular/esm2022/index.mjs +0 -2
- package/angular/esm2022/module.mjs +0 -22
- package/angular/esm2022/nativescript-community-ui-image-angular.mjs +0 -5
- package/angular/module.d.ts +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
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.6.0](https://github.com/nativescript-community/ui-image/compare/v4.5.7...v4.6.0) (2025-10-06)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **image:** new `noRatioEnforce` property ([66c2b91](https://github.com/nativescript-community/ui-image/commit/66c2b91f61edc29b0bc41d90507d6206d6b96840))
|
|
11
|
+
|
|
6
12
|
## [4.5.7](https://github.com/nativescript-community/ui-image/compare/v4.5.5...v4.5.7) (2025-09-25)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @nativescript-community/ui-image
|
|
@@ -24,11 +24,11 @@ class TNSImageModule {
|
|
|
24
24
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TNSImageModule, [{
|
|
25
25
|
type: NgModule,
|
|
26
26
|
args: [{
|
|
27
|
-
|
|
28
|
-
exports: [NSIMG_DIRECTIVES]
|
|
27
|
+
imports: [NSIMG_DIRECTIVES],
|
|
28
|
+
exports: [NSIMG_DIRECTIVES]
|
|
29
29
|
}]
|
|
30
30
|
}], null, null); })();
|
|
31
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, {
|
|
31
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, { imports: [ImgDirective], exports: [ImgDirective] }); })();
|
|
32
32
|
registerElement('NSImg', () => Img);
|
|
33
33
|
|
|
34
34
|
/**
|
package/angular/index.d.ts
CHANGED
|
@@ -1 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
|
|
3
|
+
declare class ImgDirective {
|
|
4
|
+
constructor();
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ImgDirective, never>;
|
|
6
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ImgDirective, "NSImg", never, {}, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
declare class TNSImageModule {
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TNSImageModule, never>;
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<TNSImageModule, never, [typeof ImgDirective], [typeof ImgDirective]>;
|
|
12
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<TNSImageModule>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { ImgDirective, TNSImageModule };
|
package/angular/package.json
CHANGED
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
},
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./index.d.ts",
|
|
12
|
-
"esm2022": "./esm2022/nativescript-community-ui-image-angular.mjs",
|
|
13
|
-
"esm": "./esm2022/nativescript-community-ui-image-angular.mjs",
|
|
14
12
|
"default": "./fesm2022/nativescript-community-ui-image-angular.mjs"
|
|
15
13
|
}
|
|
16
14
|
},
|
|
@@ -19,6 +17,6 @@
|
|
|
19
17
|
"tslib": "^2.3.0"
|
|
20
18
|
},
|
|
21
19
|
"scripts": {
|
|
22
|
-
"prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled
|
|
20
|
+
"prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with partial compilation mode, before attempting to publish.\\n')\" && exit 1"
|
|
23
21
|
}
|
|
24
22
|
}
|
package/index-common.d.ts
CHANGED
|
@@ -79,6 +79,7 @@ export declare const tintColorProperty: Property<ImageBase, Color>;
|
|
|
79
79
|
export declare const alwaysFadeProperty: Property<ImageBase, boolean>;
|
|
80
80
|
export declare const fadeDurationProperty: Property<ImageBase, number>;
|
|
81
81
|
export declare const noCacheProperty: Property<ImageBase, boolean>;
|
|
82
|
+
export declare const noRatioEnforceProperty: Property<ImageBase, boolean>;
|
|
82
83
|
export declare const roundTopLeftRadiusProperty: Property<ImageBase, CoreTypes.LengthType>;
|
|
83
84
|
export declare const roundTopRightRadiusProperty: Property<ImageBase, CoreTypes.LengthType>;
|
|
84
85
|
export declare const roundBottomLeftRadiusProperty: Property<ImageBase, CoreTypes.LengthType>;
|
|
@@ -124,6 +125,7 @@ export declare abstract class ImageBase extends View {
|
|
|
124
125
|
loadMode: 'sync' | 'async';
|
|
125
126
|
alwaysFade: boolean;
|
|
126
127
|
noCache: boolean;
|
|
128
|
+
noRatioEnforce: boolean;
|
|
127
129
|
tintColor: Color;
|
|
128
130
|
headers: Record<string, string>;
|
|
129
131
|
readonly isLoading: boolean;
|
package/index-common.js
CHANGED
|
@@ -141,6 +141,7 @@ export const tintColorProperty = new Property({ name: 'tintColor' });
|
|
|
141
141
|
export const alwaysFadeProperty = new Property({ name: 'alwaysFade', valueConverter: booleanConverter, defaultValue: false });
|
|
142
142
|
export const fadeDurationProperty = new Property({ name: 'fadeDuration', valueConverter: (v) => parseFloat(v) });
|
|
143
143
|
export const noCacheProperty = new Property({ name: 'noCache', defaultValue: false, valueConverter: booleanConverter });
|
|
144
|
+
export const noRatioEnforceProperty = new Property({ name: 'noRatioEnforce', affectsLayout: true, defaultValue: false, valueConverter: booleanConverter });
|
|
144
145
|
export const roundTopLeftRadiusProperty = new Property({
|
|
145
146
|
name: 'roundTopLeftRadius',
|
|
146
147
|
defaultValue: 0,
|
|
@@ -339,6 +340,7 @@ noCacheProperty.register(ImageBase);
|
|
|
339
340
|
clipToBoundsProperty.register(ImageBase);
|
|
340
341
|
animatedImageViewProperty.register(ImageBase);
|
|
341
342
|
loadModeProperty.register(ImageBase);
|
|
343
|
+
noRatioEnforceProperty.register(ImageBase);
|
|
342
344
|
// roundRadiusProperty.register(ImageBase as any);
|
|
343
345
|
// ImageBase.blendingModeProperty.register(ImageBase);
|
|
344
346
|
//# sourceMappingURL=index-common.js.map
|
package/index.android.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './index-common';
|
|
2
|
-
import {
|
|
2
|
+
import { Background, Color, backgroundInternalProperty } from '@nativescript/core';
|
|
3
|
+
import { AnimatedImage, EventData, ImageBase, ImageError as ImageErrorBase, ImageInfo as ImageInfoBase, ImagePipelineConfigSetting, SrcType, aspectRatioProperty, backgroundUriProperty, blurDownSamplingProperty, blurRadiusProperty, fadeDurationProperty, failureImageUriProperty, headersProperty, imageRotationProperty, lowerResSrcProperty, noRatioEnforceProperty, placeholderImageUriProperty, progressBarColorProperty, roundAsCircleProperty, roundBottomLeftRadiusProperty, roundBottomRightRadiusProperty, roundTopLeftRadiusProperty, roundTopRightRadiusProperty, showProgressBarProperty, srcProperty, stretchProperty, tintColorProperty } from './index-common';
|
|
3
4
|
export declare function initialize(config?: ImagePipelineConfigSetting): void;
|
|
4
5
|
export declare function getImagePipeline(): ImagePipeline;
|
|
5
6
|
export declare function shutDown(): void;
|
|
@@ -59,6 +60,28 @@ export declare class IntermediateEventData extends EventData {
|
|
|
59
60
|
}
|
|
60
61
|
export declare const needUpdateHierarchy: (targetOrNeedsLayout: any, propertyKey?: string | Symbol, descriptor?: PropertyDescriptor) => any;
|
|
61
62
|
export declare class Img extends ImageBase {
|
|
63
|
+
[placeholderImageUriProperty.setNative]: () => void;
|
|
64
|
+
[failureImageUriProperty.setNative]: () => void;
|
|
65
|
+
[stretchProperty.setNative]: () => void;
|
|
66
|
+
[fadeDurationProperty.setNative]: () => void;
|
|
67
|
+
[backgroundUriProperty.setNative]: () => void;
|
|
68
|
+
[showProgressBarProperty.setNative]: () => void;
|
|
69
|
+
[progressBarColorProperty.setNative]: () => void;
|
|
70
|
+
[roundAsCircleProperty.setNative]: () => void;
|
|
71
|
+
[roundTopLeftRadiusProperty.setNative]: () => void;
|
|
72
|
+
[imageRotationProperty.setNative]: (value: any) => void;
|
|
73
|
+
[roundTopRightRadiusProperty.setNative]: () => void;
|
|
74
|
+
[roundBottomLeftRadiusProperty.setNative]: () => void;
|
|
75
|
+
[roundBottomRightRadiusProperty.setNative]: () => void;
|
|
76
|
+
[tintColorProperty.setNative]: (value: Color) => void;
|
|
77
|
+
[blurRadiusProperty.setNative]: () => void;
|
|
78
|
+
[srcProperty.setNative]: () => void;
|
|
79
|
+
[lowerResSrcProperty.setNative]: () => void;
|
|
80
|
+
[blurDownSamplingProperty.setNative]: () => void;
|
|
81
|
+
[aspectRatioProperty.setNative]: () => void;
|
|
82
|
+
[headersProperty.setNative]: (value: any) => void;
|
|
83
|
+
[backgroundInternalProperty.setNative]: (value: Background) => void;
|
|
84
|
+
[noRatioEnforceProperty.setNative]: (value: boolean) => void;
|
|
62
85
|
nativeViewProtected: com.nativescript.image.DraweeView;
|
|
63
86
|
nativeImageViewProtected: com.nativescript.image.DraweeView;
|
|
64
87
|
isLoading: boolean;
|
package/index.android.js
CHANGED
|
@@ -3,7 +3,7 @@ export * from './index-common';
|
|
|
3
3
|
import { Application, ImageAsset, ImageSource, Trace, Utils, backgroundInternalProperty, knownFolders, path } from '@nativescript/core';
|
|
4
4
|
import { isString } from '@nativescript/core/utils/types';
|
|
5
5
|
import { layout } from '@nativescript/core/utils/layout-helper';
|
|
6
|
-
import { CLog, CLogTypes, EventData, ImageBase, ScaleType, aspectRatioProperty, backgroundUriProperty, blurDownSamplingProperty, blurRadiusProperty, fadeDurationProperty, failureImageUriProperty, headersProperty, imageRotationProperty, lowerResSrcProperty, needRequestImage, placeholderImageUriProperty, progressBarColorProperty, roundAsCircleProperty, roundBottomLeftRadiusProperty, roundBottomRightRadiusProperty, roundTopLeftRadiusProperty, roundTopRightRadiusProperty, showProgressBarProperty, srcProperty, stretchProperty, tintColorProperty, wrapNativeException } from './index-common';
|
|
6
|
+
import { CLog, CLogTypes, EventData, ImageBase, ScaleType, aspectRatioProperty, backgroundUriProperty, blurDownSamplingProperty, blurRadiusProperty, fadeDurationProperty, failureImageUriProperty, headersProperty, imageRotationProperty, lowerResSrcProperty, needRequestImage, noRatioEnforceProperty, placeholderImageUriProperty, progressBarColorProperty, roundAsCircleProperty, roundBottomLeftRadiusProperty, roundBottomRightRadiusProperty, roundTopLeftRadiusProperty, roundTopRightRadiusProperty, showProgressBarProperty, srcProperty, stretchProperty, tintColorProperty, wrapNativeException } from './index-common';
|
|
7
7
|
let initialized = false;
|
|
8
8
|
let initializeConfig;
|
|
9
9
|
export function initialize(config) {
|
|
@@ -454,6 +454,9 @@ export class Img extends ImageBase {
|
|
|
454
454
|
super[backgroundInternalProperty.setNative](value);
|
|
455
455
|
this.nativeViewProtected.setClipToOutline(value?.hasBorderRadius());
|
|
456
456
|
}
|
|
457
|
+
[noRatioEnforceProperty.setNative](value) {
|
|
458
|
+
this.nativeViewProtected.noRatioEnforce = value;
|
|
459
|
+
}
|
|
457
460
|
async handleImageSrc(src) {
|
|
458
461
|
const view = this.nativeViewProtected;
|
|
459
462
|
if (view) {
|
|
@@ -478,7 +481,7 @@ export class Img extends ImageBase {
|
|
|
478
481
|
// if (identifier >= 0 && isVectorDrawable(this._context, identifier)) {
|
|
479
482
|
// drawable = getBitmapFromVectorDrawable(this._context, identifier);
|
|
480
483
|
// }
|
|
481
|
-
// } else
|
|
484
|
+
// } else
|
|
482
485
|
if (Utils.isFontIconURI(src)) {
|
|
483
486
|
const fontIconCode = src.split('//')[1];
|
|
484
487
|
if (fontIconCode !== undefined) {
|
package/index.ios.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './index-common';
|
|
2
|
-
import { EventData, ImageBase, ImageInfo as ImageInfoBase, ImagePipelineConfigSetting, SrcType } from './index-common';
|
|
2
|
+
import { EventData, ImageBase, ImageInfo as ImageInfoBase, ImagePipelineConfigSetting, SrcType, Stretch, failureImageUriProperty, headersProperty, imageRotationProperty, placeholderImageUriProperty, progressBarColorProperty, showProgressBarProperty, srcProperty, stretchProperty } from './index-common';
|
|
3
3
|
import { GetContextFromOptionsCallback } from '@nativescript-community/ui-image';
|
|
4
4
|
export declare class ImageInfo implements ImageInfoBase {
|
|
5
5
|
private width;
|
|
@@ -36,6 +36,14 @@ export declare class ImagePipeline {
|
|
|
36
36
|
export declare const needRequestImage: (target: any, propertyKey: string | Symbol, descriptor: PropertyDescriptor) => void;
|
|
37
37
|
export declare function getImagePipeline(): ImagePipeline;
|
|
38
38
|
export declare class Img extends ImageBase {
|
|
39
|
+
[srcProperty.setNative]: (value: any) => void;
|
|
40
|
+
[imageRotationProperty.setNative]: (value: any) => void;
|
|
41
|
+
[placeholderImageUriProperty.setNative]: () => void;
|
|
42
|
+
[showProgressBarProperty.setNative]: (value: any) => void;
|
|
43
|
+
[progressBarColorProperty.setNative]: (value: any) => void;
|
|
44
|
+
[headersProperty.setNative]: (value: any) => void;
|
|
45
|
+
[failureImageUriProperty.setNative]: () => void;
|
|
46
|
+
[stretchProperty.setNative]: (value: Stretch) => void;
|
|
39
47
|
nativeViewProtected: SDAnimatedImageView | UIImageView;
|
|
40
48
|
nativeImageViewProtected: SDAnimatedImageView | UIImageView;
|
|
41
49
|
isLoading: boolean;
|
package/index.ios.js
CHANGED
|
@@ -314,10 +314,20 @@ export class Img extends ImageBase {
|
|
|
314
314
|
const ratio = this.aspectRatio || imgRatio;
|
|
315
315
|
// const scale = this.computeScaleFactor(width, height, finiteWidth, finiteHeight, nativeWidth, nativeHeight, this.aspectRatio || imgRatio );
|
|
316
316
|
if (!finiteWidth && finiteHeight) {
|
|
317
|
-
|
|
317
|
+
if (!this.noRatioEnforce || this.horizontalAlignment !== 'stretch') {
|
|
318
|
+
widthMeasureSpec = layout.makeMeasureSpec(height * ratio, layout.EXACTLY);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
widthMeasureSpec = layout.makeMeasureSpec(0, layout.AT_MOST);
|
|
322
|
+
}
|
|
318
323
|
}
|
|
319
324
|
else if (!finiteHeight && finiteWidth) {
|
|
320
|
-
|
|
325
|
+
if (!this.noRatioEnforce || this.verticalAlignment !== 'stretch') {
|
|
326
|
+
heightMeasureSpec = layout.makeMeasureSpec(width / ratio, layout.EXACTLY);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
heightMeasureSpec = layout.makeMeasureSpec(0, layout.AT_MOST);
|
|
330
|
+
}
|
|
321
331
|
}
|
|
322
332
|
else if (!finiteWidth && !finiteHeight) {
|
|
323
333
|
const viewRatio = width / height;
|
|
@@ -334,6 +344,13 @@ export class Img extends ImageBase {
|
|
|
334
344
|
CLog(CLogTypes.info, 'onMeasure', this.src, this.aspectRatio, finiteWidth, finiteHeight, width, height, nativeWidth, nativeHeight, widthMeasureSpec, heightMeasureSpec);
|
|
335
345
|
}
|
|
336
346
|
}
|
|
347
|
+
else {
|
|
348
|
+
// if (!finiteWidth && finiteHeight) {
|
|
349
|
+
// widthMeasureSpec = layout.makeMeasureSpec(0, layout.UNSPECIFIED);
|
|
350
|
+
// } else if (!finiteHeight && finiteWidth) {
|
|
351
|
+
// heightMeasureSpec = layout.makeMeasureSpec(0, layout.UNSPECIFIED);
|
|
352
|
+
// }
|
|
353
|
+
}
|
|
337
354
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
|
338
355
|
}
|
|
339
356
|
async updateImageUri() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nativescript-community/ui-image",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
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,
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
},
|
|
45
45
|
"license": "Apache-2.0",
|
|
46
46
|
"readmeFilename": "README.md",
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "bd62b4826c83c73ee7de69e65998317788894f08"
|
|
48
48
|
}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import groovy.json.JsonSlurper
|
|
2
|
+
|
|
3
|
+
// for now we support only @nativescript/core and @akylas/nativescript
|
|
4
|
+
// we should have a more generic way
|
|
5
|
+
def widgetsDir = "$USER_PROJECT_ROOT/node_modules/@nativescript/core/platforms/android"
|
|
6
|
+
def appPackageJsonFile = file("$USER_PROJECT_ROOT/package.json")
|
|
7
|
+
if (appPackageJsonFile.exists()) {
|
|
8
|
+
def appPackageJson = new JsonSlurper().parseText(appPackageJsonFile.text)
|
|
9
|
+
if (appPackageJson.dependencies['@akylas/nativescript'] != null) {
|
|
10
|
+
widgetsDir = "$USER_PROJECT_ROOT/node_modules/@akylas/nativescript/platforms/android"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
2
14
|
dependencies {
|
|
3
|
-
def frescoVersion = project.hasProperty("frescoVersion") ? project.frescoVersion : "3.
|
|
15
|
+
def frescoVersion = project.hasProperty("frescoVersion") ? project.frescoVersion : "3.1.3"
|
|
4
16
|
|
|
5
17
|
implementation("com.facebook.fresco:fresco:$frescoVersion") {
|
|
6
18
|
exclude group: 'com.facebook.soloader', module: 'soloader'
|
|
@@ -15,19 +27,21 @@ dependencies {
|
|
|
15
27
|
// implementation ("com.facebook.fresco:animated-gif:$frescoVersion") {
|
|
16
28
|
// exclude group: 'com.facebook.soloader', module: 'soloader'
|
|
17
29
|
// }
|
|
18
|
-
|
|
30
|
+
|
|
31
|
+
if (project.hasProperty("tempBuild")) {
|
|
32
|
+
// if ui-mobile-base is provided as source the name is nativescript.aar
|
|
33
|
+
if (file("$widgetsDir/nativescript.aar").exists()) {
|
|
34
|
+
implementation(name:'nativescript', ext:'aar')
|
|
35
|
+
}
|
|
36
|
+
// if ui-mobile-base is provided as aar the name is widget-release.aar
|
|
37
|
+
if (file("$widgetsDir/widget-release.aar").exists()) {
|
|
38
|
+
implementation(name:'widget-release', ext:'aar')
|
|
39
|
+
}
|
|
40
|
+
}
|
|
19
41
|
}
|
|
20
42
|
|
|
21
43
|
repositories {
|
|
22
44
|
mavenCentral()
|
|
23
|
-
def widgetsDir = "$USER_PROJECT_ROOT/node_modules/@nativescript/core/platforms/android"
|
|
24
|
-
def appPackageJsonFile = file("$USER_PROJECT_ROOT/package.json")
|
|
25
|
-
if (appPackageJsonFile.exists()) {
|
|
26
|
-
def appPackageJson = new JsonSlurper().parseText(appPackageJsonFile.text)
|
|
27
|
-
if (appPackageJson.dependencies['@akylas/nativescript'] != null) {
|
|
28
|
-
widgetsDir = "$USER_PROJECT_ROOT/node_modules/@akylas/nativescript/platforms/android"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
45
|
flatDir {
|
|
32
46
|
dirs "$widgetsDir"
|
|
33
47
|
}
|
|
@@ -38,6 +38,7 @@ public class DraweeView extends SimpleDraweeView {
|
|
|
38
38
|
public int imageWidth = 0;
|
|
39
39
|
public int imageHeight = 0;
|
|
40
40
|
public boolean isUsingOutlineProvider = false;
|
|
41
|
+
public boolean noRatioEnforce = false;
|
|
41
42
|
private static Paint clipPaint;
|
|
42
43
|
|
|
43
44
|
private boolean mLegacyVisibilityHandlingEnabled = false;
|
|
@@ -166,10 +167,11 @@ public class DraweeView extends SimpleDraweeView {
|
|
|
166
167
|
int width = MeasureSpec.getSize(widthMeasureSpec);
|
|
167
168
|
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
|
168
169
|
int height = MeasureSpec.getSize(heightMeasureSpec);
|
|
170
|
+
|
|
171
|
+
boolean finiteWidth = widthMode == android.view.View.MeasureSpec.EXACTLY;
|
|
172
|
+
boolean finiteHeight = heightMode == android.view.View.MeasureSpec.EXACTLY;
|
|
169
173
|
float aspectRatio = this.getAspectRatio();
|
|
170
|
-
if (aspectRatio > 0) {
|
|
171
|
-
boolean finiteWidth = widthMode == android.view.View.MeasureSpec.EXACTLY;
|
|
172
|
-
boolean finiteHeight = heightMode == android.view.View.MeasureSpec.EXACTLY;
|
|
174
|
+
if (aspectRatio > 0 && !this.noRatioEnforce) {
|
|
173
175
|
Object scaleType = getHierarchy().getActualImageScaleType();
|
|
174
176
|
if (scaleType instanceof AbstractScaleType) {
|
|
175
177
|
final float rotation = ((AbstractScaleType)scaleType).getImageRotation();
|
|
@@ -195,6 +197,7 @@ public class DraweeView extends SimpleDraweeView {
|
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
}
|
|
200
|
+
} else {
|
|
198
201
|
}
|
|
199
202
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
|
200
203
|
}
|
package/typings/android.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ declare namespace com {
|
|
|
5
5
|
export namespace nativescript {
|
|
6
6
|
export namespace image {
|
|
7
7
|
class DraweeView extends facebook.drawee.view.SimpleDraweeView {
|
|
8
|
+
noRatioEnforce: boolean;
|
|
8
9
|
imageWidth: number;
|
|
9
10
|
imageHeight: number;
|
|
10
11
|
setUri(uri: globalAndroid.net.Uri, options: string, listener: facebook.drawee.controller.ControllerListener);
|
|
@@ -20,9 +21,7 @@ declare namespace com {
|
|
|
20
21
|
class BaseDataSubscriber extends facebook.datasource.BaseDataSubscriber<any> {
|
|
21
22
|
public constructor(listener: BaseDataSubscriberListener);
|
|
22
23
|
}
|
|
23
|
-
class OkHttpNetworkFetcher extends facebook.imagepipeline.backends.okhttp3.OkHttpNetworkFetcher {
|
|
24
|
-
|
|
25
|
-
}
|
|
24
|
+
class OkHttpNetworkFetcher extends facebook.imagepipeline.backends.okhttp3.OkHttpNetworkFetcher {}
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
27
|
}
|
package/angular/directives.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class ImgDirective {
|
|
3
|
-
constructor();
|
|
4
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ImgDirective, never>;
|
|
5
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ImgDirective, "NSImg", never, {}, {}, never, never, false, never>;
|
|
6
|
-
}
|
|
7
|
-
export declare const NSIMG_DIRECTIVES: (typeof ImgDirective)[];
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ImgDirective {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static ɵfac = function ImgDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ImgDirective)(); };
|
|
6
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ImgDirective, selectors: [["NSImg"]] });
|
|
7
|
-
}
|
|
8
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImgDirective, [{
|
|
9
|
-
type: Directive,
|
|
10
|
-
args: [{
|
|
11
|
-
selector: 'NSImg'
|
|
12
|
-
}]
|
|
13
|
-
}], () => [], null); })();
|
|
14
|
-
export const NSIMG_DIRECTIVES = [ImgDirective];
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbWFnZS9hbmd1bGFyL2RpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLFlBQVk7SUFDckIsZ0JBQWUsQ0FBQztzR0FEUCxZQUFZOzZEQUFaLFlBQVk7O2lGQUFaLFlBQVk7Y0FIeEIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxPQUFPO2FBQ3BCOztBQUlELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdOU0ltZydcbn0pXG5leHBvcnQgY2xhc3MgSW1nRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG59XG5leHBvcnQgY29uc3QgTlNJTUdfRElSRUNUSVZFUyA9IFtJbWdEaXJlY3RpdmVdO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './module';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1hZ2UvYW5ndWxhci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xuIl19
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { registerElement } from '@nativescript/angular';
|
|
3
|
-
import { ImgDirective, NSIMG_DIRECTIVES } from './directives';
|
|
4
|
-
import { Img } from '@nativescript-community/ui-image';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./directives";
|
|
7
|
-
export { ImgDirective };
|
|
8
|
-
export class TNSImageModule {
|
|
9
|
-
static ɵfac = function TNSImageModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TNSImageModule)(); };
|
|
10
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: TNSImageModule });
|
|
11
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
12
|
-
}
|
|
13
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TNSImageModule, [{
|
|
14
|
-
type: NgModule,
|
|
15
|
-
args: [{
|
|
16
|
-
declarations: [NSIMG_DIRECTIVES],
|
|
17
|
-
exports: [NSIMG_DIRECTIVES],
|
|
18
|
-
}]
|
|
19
|
-
}], null, null); })();
|
|
20
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(TNSImageModule, { declarations: [i1.ImgDirective], exports: [i1.ImgDirective] }); })();
|
|
21
|
-
registerElement('NSImg', () => Img);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltYWdlL2FuZ3VsYXIvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBS3hCLE1BQU0sT0FBTyxjQUFjO3dHQUFkLGNBQWM7NERBQWQsY0FBYzs7O2lGQUFkLGNBQWM7Y0FKMUIsUUFBUTtlQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzthQUM5Qjs7d0ZBQ1ksY0FBYztBQUUzQixlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcblxuaW1wb3J0IHsgSW1nRGlyZWN0aXZlLCBOU0lNR19ESVJFQ1RJVkVTIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEltZyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQtY29tbXVuaXR5L3VpLWltYWdlJztcbmV4cG9ydCB7IEltZ0RpcmVjdGl2ZSB9O1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOU0lNR19ESVJFQ1RJVkVTXSxcbiAgICBleHBvcnRzOiBbTlNJTUdfRElSRUNUSVZFU10sXG59KVxuZXhwb3J0IGNsYXNzIFROU0ltYWdlTW9kdWxlIHt9XG5cbnJlZ2lzdGVyRWxlbWVudCgnTlNJbWcnLCAoKSA9PiBJbWcpO1xuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1pbWFnZS1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltYWdlL2FuZ3VsYXIvbmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1pbWFnZS1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/angular/module.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ImgDirective } from './directives';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./directives";
|
|
4
|
-
export { ImgDirective };
|
|
5
|
-
export declare class TNSImageModule {
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TNSImageModule, never>;
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<TNSImageModule, [typeof i1.ImgDirective], never, [typeof i1.ImgDirective]>;
|
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<TNSImageModule>;
|
|
9
|
-
}
|