@technotoil/image-video-editor 0.1.3 → 0.1.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@technotoil/image-video-editor",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "A high-performance React Native image and video editor featuring video trimming, filters, photo overlay frames, and camera/gallery integration.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/icons.ts CHANGED
@@ -21,7 +21,7 @@ export const Base64Icons = {
21
21
  "checkmark": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAABaklEQVR4nO3ZsUoDQRRG4dXCaOFz24iFXTqfwSLsE9kJIhHLI4srCIImkflndud8EAikyL2HIQybYZAkSZIkSZIkSZIigA1wCzwDe2ALXGW+va/IO37a1p6th8iT19rz9RB58lJ7xh4iT+5qz9lD5OnzTe1ZFwu4AB7/iDwCl7VnXSwjBxg5wMgBRg4wcoCRA4wcYOQAIwcYOcDIAUYOMHKAkQOMHGDkACMHGDlg8ZGBc+BsaBhL/iMVuAYegHfgDbhvcVCWHHkyR256YFYQ+Xw+yc0OztIjfwu9b3UB1hD5y/yb3NwirClyqwvR4Eyru5vS0CyrXZAGZoiouSi9RK65ML1FrrE4vUZOBqD3yIkQGLl8EIxcPgxGLh8IIx/mP6Ew8nFOCYaRT3NMOIwce8K2W91TuLQDT+tvPMmB2KORy8cejVw+9mjk8rFHI5ePPRq5zNXvBniaX9N7r3CSJEmSJEmSJEkaPn0AMr2jP/wFTP0AAAAASUVORK5CYII=",
22
22
  "chevron-down": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAABUUlEQVR4nO3av0oDQRRG8dHCqC8uiJDaQh/CIuwT2VgIUbE8MmgV8l/27szd84NAuv3uIULAlCJJkiRJkiRJkiRJkiRJagRwUV+RD7wBHoFP4A24BxYlKWABPADvwDfwBNxGPLhG3rTKGJvfyPW2Tc8Rfz4fWx6cLja7I1dfwOXYA9Y7Hp4mNvsjV+uIEcs9A7qPzeHI1bKVIV3GprXbgCvg5cCgAbgunaDVm5odlvGW5gdmuqGboRm2dze49Lm5u+F0tLXbA+hgY/eH0PC2NAfR4KZ0h9HQlrQH0sCGEFMeylwiT3kwc4s8xeHMNXJkgNlHjghh5IAgRg4Ig5HHD4SRj8M/Qhn5RJwRzMhn4oRwRo77d/8q488dQnHcp9VP8sSxByOPH9vIAbGNHBB7MPL4sQcjj/PV7w54/XvV936FkyRJkiRJkiRJkiRJkiSVYD+slS8141kMxgAAAABJRU5ErkJggg==",
23
23
  "camera-reverse-outline": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEMElEQVR4nO2cy2tVRxjAjzGtjz4kvtCmK6GbFkRxU1xpRcGIVOmDQrtPbYzFB7iQtlfxERFBXfgvKC7FlbaFQltbXbRN4qbtpjXRCj5oVa5a6E8+OpLrNXPuPZMzM+fc8/3gbpKc+WZ+GeacmfN9N0kURVEURVEURVEURVGUXAEWAweBUaDO1Kmbtg4Ai2KPrxAAq4Gb+EPaXpVUGWAJcBf/3ANeS8oK8DxwGLjWNLBxYEh+3+L6rwjHl0lZMTLTGEq5dhXhKecSYmZuGuOW66YB3xAeiTktqQrAFuLRn1QB4KOcHuFckdgfJp0I8AqwAThHMfgPOAusl74lRQCYCXwK/Ggek5T/ERc/ANuAGVOV/Crwi2lYsfOzuJrKTFbJ2WRnn9lmuYjJA/M4JhuiTcAbQC/wAtAN9ACvA5uBmvnbh5H7POgiWtbkGAybf/J8hz7PBT42sysGF11EhziDaORXYGPmjto3RH3ACGH5x6WzITnS6lzEUbgsMTvNMhSEoos+73NrDCwDfgsxEJfOhWbAi+Wn1+/vfQ/CpWOhud98ZgxMB9YCJ4CvgRvAHeA28Jc5Zj0GrJO/bWNMLwGXqi4aM+NE7mzgcyOzXcbNNbNbjGsB8DsVFy2cBsZw5yrwbouxLfd1gyyT6LyQlxJdKePbhQeqKFo4ZZMNPGfelOdKVUUL+1LGuJEOFF0znxhnz5tTdpAjnST6i4Z2dxMeubnOsoxzsFNE1yZpO8bM3m4Z50Lg37KLfkZyRNnXU26MF/MKkmTFp+SIst9M3PJT2ibJSl5rchtxdhOO/ZY+fFBG0TWHWDXCcMESf0XZRLc9kyPN7NGUl9C5kGQlpOSAsm8lkwDMyStAkpW8AgMvW9q/hV+sCZY+l7SYohdb2r+Cf5xlu943YopeHjk3OujNOabo9yztS81KKIZCPQHFFH3Q0v5KwhJkAxVT9HeW9rvMtjgk3o8EYop+JO/pLDF2EB6vh1wxRQufpCRS/kF4hnztSmOLHrYlyADvEwcvLyJiixY2pMQ6SYdQBNEjkgtniSW5HGfoAIogWtiREk+eQg5Rcooiui4Jhy3ivgP8OcUEGknCqbRoTFbnghaxJSXss4wZS1ImvcdcOz1EQmPRRWMSDV9sow+ynKwBjkott9ng3DafMfOz48BbzUmOkjBpEicrLVq4LG+gM3cs2xgGCIxLJ0OVUyzzYnkiQUaS3IPh0slQ1E35Q7enr7mQso1gFFl043N2X14lFsDbocopyib6CVK61g/Mc+jzfMlICvT2pvSiG0/9pEhzb0NBZ49Jt51pijuXmoJOWR6+LUBBJ2WoM+wE/i5T5WyZcaqcla9HULKx1UX0jIg11WXkJ+fqX5MqpbLbk9zrJLlpZg+aHGK9QU5w1xxcbfVRx64oiqIoiqIoiqIoiqIoiqIoipJUnsc6JOcw0usCBgAAAABJRU5ErkJggg==",
24
- "square-outline": "data:image/png;base64,eyJzdWNjZXNzIjpmYWxzZSwiZXJyb3IiOiJJY29uIHVuY2hlY2tlZC1jaGVja2JveCBpbiBpb3MtZ2x5cGhzIHN0eWxlcyBub3QgZm91bmQiLCJjb2RlIjoiUExBVEZPUk1fSUNPTl9OT1RfRk9VTkQifQ==",
24
+ "square-outline": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB40lEQVR4nO3cwU0DMRRFUdeCCFRBkAhQIwFqCYQiCD0gQCjZPzTSLMLCC0uO5873OxW8+xUps3JKZmZmZmZmZmb2j6R7SU+SPiQdNH8HSTtJj5LuCAe+lPSm+LaSLqY68rWkH/XjW9Jyil9yT0c+Pvai5aFf1K9tqyPfTV0KsGpx6OepKwHWLQ49fML1btfi0PupKwH2LQ5tknzoRnzoXg+dZkK0LtygqF24QVG7cIOiduEGRe3CDYrahRsUtQs3KGoXblDULtygqF24QVG7cIOidp16kCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQuhJtkCqhdRWjBefQutLsB0Xtwg2K2oUbFLULNyhqF25Q1C7coKhduEFRu3CDonbhBkXtwg2K2oUbFLULNyhqV+mgqJIP3YYPHejQfhhF+m1xaD/1I723OPTwNGbvHloc+nbqSoCbkx96PPZG/XptcuTx0GeSPtWfL0nnzQ49Hns5vtXZ05Gvmh756NiLTt4p3TT/JWcOvhqekRw+e4J8Z+/HlnWzPz4zMzMzMzMzszQffz4FjsmWDL4eAAAAAElFTkSuQmCC",
25
25
  "expand-outline": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC8klEQVR4nO2czW4TMRSFh9IQingykBBRxaK8S0GIPT9tUbIqvACo7aJkAc8DElXoJmXXD1m1UBWl07F9ndjD+aQsY59zZM0kvr5uGiGEEEIIIYQQQoj/GOA+8B74hR2/gQNgy1DnA+ADcG6o88x7N9PZZsBNlIuJoc5JRp1vrXS2GZhlNDAHNgw0bgAXGXWe2aTZbuIyo4F5JUFf2qTZbiIn40oeHVjpbDOQgxmwZ/wy3AL2/YvWHCudbQa6MnW/UJpKAO4BJzUGXU3YBIZcYtDFh01EyKUGXWzYsSE7ViHuJk5v0XYKDJtCcFo6ai4u6C6rY1rCyg7RWlzQoQaaNRGqscigY4yskhhtxQYdayg3sZqKDjrFWA5StBQfdKpBK1I1VBH0usPGYO5qgl5X2BjNWVXQqw7bcq7qgg74N3acsvnvN/1PrP6lrjPoZfu7s4DvDzuEPUrQt20VsoXfaHy1epG9wDGGt4T9KkHfa6uQrfymVC4mvr7nPuOYygjtYe8k6NuxCtnSbzTAHfdJHGPon8nX+QYMEsYcAN8XxjxO3Tm08LtWuHp5jdzjwq/GgcGYLuznfsyRRWVdCCGEEEIIIYQQQgghMsHVPu9j4AXwDNg0GHPTj7ULPGpqxqh7agh8Wdik/2pQnHUV7ut8Ntj4X+2eti/tHPiO1HPfkGNdytrOUJxNKWUl+w0GeLfExBvj4uxugr6XxsXZZL9RAD+XTPzD+LjBkwR9T42PGyT5jeYm9YYhH6UUQf3L9cgq7BS/ScROjI6EBZsInhgdcowyEDSxju1GEjKxDqIn0HXiEkLufWtFSSH3tlmoxJB71/5Wcsi9aeisIeRetCir6d4Y4piWsJL7co1EVSH37WKUokPuy1U/VYTcl8ur+nY36T+sdLYZyMnEUGe9Fwz6TfWczCu5MpOsHVrAXeBPRvHzSoK+yF4VBz5lNDCu5NFxaKWzzcBD4KPxyp5Vcjep83zoMrDSKYQQQgghhBBCCNFUyF/jytQRykBraQAAAABJRU5ErkJggg==",
26
26
  "flash": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAACa0lEQVR4nO3bQWpUQRSF4SKDZOhcHQfcgJAlKG6hdQuJLiEiDYI6UASXoLgFISsQnYtOxEHEmU4Uf3nQE7Xfzet6VXWrb59v3HTXOYSGd1KdkoiIiIiMAA6AR8A34DOwBPbHXi+ZgCf8b5n7frIGcAj8XFP0l3Wvl0zAa0bkvqf8A7gO/FbRlQFvxkpW0YUAt6ySVXQBwB7wVkVXBty5qGQVPROwD3xQ0ZUB96aUrKJnAC4BX1V0ZcCDqSWr6EzAZeC7iq4MeLFJySq67HBk8j53qOHI4n3uUMORxfvsoYYji/fZQw1HFu/zhxqOLN4ZQg1HFu8MoYYji3eOUMORxTtHqOHI4p0l1HBk8c4SajiyeOcJNRxZvPOEGo4s3plCDUcW70yhhiOLd65Qw5HFO1eo4cjina234egd/Yh5iR24TZ/iXGKn0HBUSZxL7MBd+nWeIqDgcFTJsxQBBYejCn4AV9K2Kz0cVXCaIgCe0q/z4WstRdD5d/NJimL1UNCjj8MvcFMUqyevHi1SJKsHlWVnf9nDDLDn3U03qOeGd7auUMeZd67uUN7wz4Yj71y7UPRL70xdoqxfwDXvTLtQ9HPvPN2i7HB01TvPLhR96p2la5QRZzjqvOhj7xzdY75PoYajjoteeGfYCszzXsNRm6I1HE01o2QNR42K1nC0icySX230IZJyitZw1KhoDUc5NixZw1Gjou9nf9CuYzoNR42KPvE+61ZjGg1HjYpeeJ9z63ExDUeNir7pfcYQsGk4alT0kff5wmCchqOSWH/VV8NRo0vsj73PFQ5/X2IfHrMfhvvdtoiIiEgq6Q+nr/dgQAHSRwAAAABJRU5ErkJggg==",
27
27
  "flash-off": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC/UlEQVR4nO3dPYoUQRTA8YeIGmmgiWgseIEFYzP1CuIZFg/ggiIDghq4iGcQE8HRSNYTzGouCCIGI2aaKP6l3dl1dGe6q7rrq1+9/wH640fRbRdvXBHLsizLsqziAo5KAQHHgfvAV+ATMAGOiYaALWDa3GQB1/KQw01ECfJ+r4ATGa/lAvBjBfRnUYScHRt4xppEGXI2bGAD+KUKunnxLZ7JbSV9ZgM7bRcjY615kwPPO7CTrGzgWsd1jBe6FGzgCDBTDV0CNnCjC1kFdE5s9s77vhroXNjATRdkVdCpsYFTwJcqoVNiA3ddkVVCp8AGzgLfqoeOjQ088UFWDR0Lm/UbR/VCx8CmZeOoauiQ2HRsHFUPHQobeN0HuSroodjA1b7I1UH3xcZx48igB2LjuHFk0MOwT7puHBl0+2jAtMPo41Dk6qE9Vvbgct9nNdhipcFenMaKjf3nBFZ87KVTWDGxDw5uxcX+7/BWLOx/DmzFw15xaKvnF2TodA2x7wdcBk5LWdg6hthXTBztAmdyf66rGmJfDthcurFZYSt7Lhpi9cRRSdjboiHWTxyV8Bj5DpyTsecwcbSbGfu2aAh45HCzuR4j8+axJhrymAadZcDeFC0tPgpcS/kY+VDCj1ODtfjy8inVyr4umlqswonnyo6N/baZI0krUXDEw76S9k4KjzjP7Ddp72IEsVdo7Etp72IE8bdQ2E/T3sFIIvwL8qWqf9KFisOFWNlZ/7+RImN1hh061mfYIaM9ww4V3Rl2Iugmwx4a7hl2Iugmw+4b/hl2ImjDTgjd/Lx5o+O4Lp/rL6r5XKdfThtHtrKX6oH8E7gojhl2f+jH4plhizd0M3F0vud56sbGrzsDz1UvNoknjqrFJsPEUZXYZJo4qg6bjBNHVWHT3buYE0fVYFPAxFEV2LS3k/A6XPZGpqX8nRrvSpo4cljZt2SsUdjEUQv2eJGb1oz6em0cJcAeN3LLEPsDydzSM3tLFA6xz4F7pfxue7QvPsuyLMuyRHe/AUjoq7FJeXprAAAAAElFTkSuQmCC"
@@ -1727,10 +1727,9 @@ export function EditorScreen({
1727
1727
  cumulativeMusicOffsetMs += newDuration;
1728
1728
  }
1729
1729
  } else {
1730
- if (selectedMusic) {
1731
- let outUri = targetItem.uri;
1732
- if (targetItem.type === 'image') {
1733
- outUri = await trimVideo(targetItem.uri, {
1730
+ if (targetItem.type === 'image') {
1731
+ if (selectedMusic) {
1732
+ const outUri = await trimVideo(targetItem.uri, {
1734
1733
  isImage: true,
1735
1734
  musicUri: selectedMusic.url,
1736
1735
  musicOffsetMs: cumulativeMusicOffsetMs,
@@ -1743,9 +1742,17 @@ export function EditorScreen({
1743
1742
  grayscale: false,
1744
1743
  });
1745
1744
  cumulativeMusicOffsetMs += 10000;
1746
- } else {
1747
- const safeEndMs = targetItem.durationMs || 10000;
1748
- outUri = await trimVideo(targetItem.uri, {
1745
+ updatedItems[i] = {
1746
+ ...targetItem,
1747
+ uri: outUri,
1748
+ thumbnailUri: outUri,
1749
+ };
1750
+ }
1751
+ } else {
1752
+ const needsTrim = selectedMusic || (maxVideoDurationMs && (!targetItem.durationMs || targetItem.durationMs > maxVideoDurationMs));
1753
+ if (needsTrim) {
1754
+ const safeEndMs = maxVideoDurationMs ? Math.min(targetItem.durationMs || 10000, maxVideoDurationMs) : (targetItem.durationMs || 10000);
1755
+ const outUri = await trimVideo(targetItem.uri, {
1749
1756
  startMs: 0,
1750
1757
  endMs: safeEndMs,
1751
1758
  mute: isMuted,
@@ -1758,13 +1765,24 @@ export function EditorScreen({
1758
1765
  saturation: 1,
1759
1766
  grayscale: false,
1760
1767
  });
1768
+
1769
+ let newThumb = undefined;
1770
+ try {
1771
+ newThumb = await captureFrame(outUri, { timeMs: 0 });
1772
+ } catch (e) {
1773
+ console.warn('Could not generate filtered thumb', e);
1774
+ }
1775
+
1776
+ updatedItems[i] = {
1777
+ ...targetItem,
1778
+ uri: outUri,
1779
+ thumbnailUri: newThumb ? newThumb : targetItem.thumbnailUri,
1780
+ durationMs: safeEndMs,
1781
+ };
1761
1782
  cumulativeMusicOffsetMs += safeEndMs;
1783
+ } else {
1784
+ cumulativeMusicOffsetMs += targetItem.durationMs || 10000;
1762
1785
  }
1763
- updatedItems[i] = {
1764
- ...targetItem,
1765
- uri: outUri,
1766
- thumbnailUri: targetItem.type === 'image' ? outUri : targetItem.thumbnailUri,
1767
- };
1768
1786
  }
1769
1787
  }
1770
1788
  }