about summary refs log tree commit diff
path: root/patches/expo-image-manipulator+13.0.6.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/expo-image-manipulator+13.0.6.patch')
-rw-r--r--patches/expo-image-manipulator+13.0.6.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/patches/expo-image-manipulator+13.0.6.patch b/patches/expo-image-manipulator+13.0.6.patch
new file mode 100644
index 000000000..02d4d5fb9
--- /dev/null
+++ b/patches/expo-image-manipulator+13.0.6.patch
@@ -0,0 +1,101 @@
+diff --git a/node_modules/expo-image-manipulator/src/ImageManipulator.web.ts b/node_modules/expo-image-manipulator/src/ImageManipulator.web.ts
+new file mode 100644
+index 0000000..babbb3b
+--- /dev/null
++++ b/node_modules/expo-image-manipulator/src/ImageManipulator.web.ts
+@@ -0,0 +1,60 @@
++import { useReleasingSharedObject } from 'expo-modules-core';
++import { SharedRef } from 'expo-modules-core/types';
++
++import { Action, ImageResult, SaveFormat, SaveOptions } from './ImageManipulator.types';
++import { ImageManipulatorContext } from './ImageManipulatorContext';
++import ExpoImageManipulator from './NativeImageManipulatorModule';
++import { validateArguments } from './validators';
++
++// @needsAudit
++/**
++ * Manipulate the image provided via `uri`. Available modifications are rotating, flipping (mirroring),
++ * resizing and cropping. Each invocation results in a new file. With one invocation you can provide
++ * a set of actions to perform over the image. Overwriting the source file would not have an effect
++ * in displaying the result as images are cached.
++ * @param uri URI of the file to manipulate. Should be on the local file system or a base64 data URI.
++ * @param actions An array of objects representing manipulation options. Each object should have
++ * __only one__ of the keys that corresponds to specific transformation.
++ * @param saveOptions A map defining how modified image should be saved.
++ * @return Promise which fulfils with [`ImageResult`](#imageresult) object.
++ * @deprecated It has been replaced by the new, contextual and object-oriented API.
++ * Use [`ImageManipulator.manipulate`](#manipulateuri) or [`useImageManipulator`](#useimagemanipulatoruri) instead.
++ */
++export async function manipulateAsync(
++  uri: string,
++  actions: Action[] = [],
++  saveOptions: SaveOptions = {}
++): Promise<ImageResult> {
++  validateArguments(uri, actions, saveOptions);
++
++  const { format = SaveFormat.JPEG, ...rest } = saveOptions;
++  const context = ExpoImageManipulator.manipulate(uri);
++
++  for (const action of actions) {
++    if ('resize' in action) {
++      context.resize(action.resize);
++    } else if ('rotate' in action) {
++      context.rotate(action.rotate);
++    } else if ('flip' in action) {
++      context.flip(action.flip);
++    } else if ('crop' in action) {
++      context.crop(action.crop);
++    } else if ('extent' in action && context.extent) {
++      context.extent(action.extent);
++    }
++  }
++  const image = await context.renderAsync(saveOptions.compress);
++  const result = await image.saveAsync({ format, ...rest });
++
++  // These shared objects will not be used anymore, so free up some memory.
++  context.release();
++  image.release();
++
++  return result;
++}
++
++export function useImageManipulator(source: string | SharedRef<'image'>): ImageManipulatorContext {
++  return useReleasingSharedObject(() => ExpoImageManipulator.manipulate(source), [source]);
++}
++
++export { ExpoImageManipulator as ImageManipulator };
+diff --git a/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts b/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts
+index 120d8d3..f8aa49c 100644
+--- a/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts
++++ b/node_modules/expo-image-manipulator/src/ImageManipulatorContext.ts
+@@ -52,7 +52,7 @@ export declare class ImageManipulatorContext extends SharedObject {
+   /**
+    * Awaits for all manipulation tasks to finish and resolves with a reference to the resulted native image.
+    */
+-  renderAsync(): Promise<ImageRef>;
++  renderAsync(compress?: number): Promise<ImageRef>;
+ }
+ 
+ export default ExpoImageManipulator.Context as typeof ImageManipulatorContext;
+diff --git a/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts b/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts
+index 428848c..363a57a 100644
+--- a/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts
++++ b/node_modules/expo-image-manipulator/src/web/ImageManipulatorContext.web.ts
+@@ -41,7 +41,7 @@ export default class ImageManipulatorContext extends SharedObject {
+     return this;
+   }
+ 
+-  async renderAsync(): Promise<ImageManipulatorImageRef> {
++  async renderAsync(compress?: number): Promise<ImageManipulatorImageRef> {
+     const canvas = await this.currentTask;
+ 
+     return new Promise((resolve) => {
+@@ -49,7 +49,7 @@ export default class ImageManipulatorContext extends SharedObject {
+         const url = blob ? URL.createObjectURL(blob) : canvas.toDataURL();
+ 
+         resolve(new ImageManipulatorImageRef(url, canvas.width, canvas.height));
+-      });
++      }, typeof compress === 'number' ? 'image/jpeg' : undefined, compress);
+     });
+   }
+