@sumaris-net/ngx-components 1.22.11-rc16 → 1.22.11-rc17

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
3
- typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global['sumaris-net'] = global['sumaris-net'] || {}, global['sumaris-net']['ngx-components'] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global['ngx-translate'].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global['ionic-native'].keyboard.ngx, global['angular2-text-mask'], global['ngx-material-timepicker'], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global['ngx-color-picker'], global['ionic-native']['native-audio'].ngx, global['ionic-native'].vibration.ngx, global['ionic-native']['audio-management'].ngx, global['ionic-native']['native-audio'].ngx.index, global['ionic-native'].vibration.ngx.index, global['ionic-native']['audio-management'].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global['ngx-markdown'], global.tweetnacl, global.ionic.storage, null, global['ionic-native']['splash-screen'].ngx, global['ionic-native'].network.ngx, global['ionic-cache'], global['ionic-cache/dist/cache'].service, global['ionic-native'].network.ngx.index, global['ionic-native']['splash-screen'].ngx.index, global['ionic-native']['status-bar'].ngx, global.ng.cdk.platform, global['ionic-native']['in-app-browser'].ngx, global.apollo.client.core, global['apollo-angular'], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global['apollo-link-queue'], global['apollo-link-serialize'], global['apollo-link-logger'], global['apollo-angular'].http, global['apollo3-cache-persist'], global['ionic-native'].downloader.ngx, global['ionic-native']['status-bar'].ngx.index, global['ionic-native'].keyboard.ngx.index, global['ionic-native']['in-app-browser'].ngx.index, global['ionic-native'].downloader.ngx.index, global.ng.cdk.textField, global['e-is']['ngx-material-table'], global.ng.cdk.collections, global['ngx-jdenticon'], null, null, null, global['moment-timezone']));
5
- }(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('rxjs/internal/operators'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
3
+ typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', 'rxjs/internal/operators', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global['sumaris-net'] = global['sumaris-net'] || {}, global['sumaris-net']['ngx-components'] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global['ngx-translate'].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global['ionic-native'].keyboard.ngx, global['angular2-text-mask'], global['ngx-material-timepicker'], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global['ngx-color-picker'], global['ionic-native']['native-audio'].ngx, global['ionic-native'].vibration.ngx, global['ionic-native']['audio-management'].ngx, global['ionic-native']['native-audio'].ngx.index, global['ionic-native'].vibration.ngx.index, global['ionic-native']['audio-management'].ngx.index, global.uuid.v4, global.rxjs['internal/operators'], global.ng.cdk.dragDrop, global['ngx-markdown'], global.tweetnacl, global.ionic.storage, null, global['ionic-native']['splash-screen'].ngx, global['ionic-native'].network.ngx, global['ionic-cache'], global['ionic-cache/dist/cache'].service, global['ionic-native'].network.ngx.index, global['ionic-native']['splash-screen'].ngx.index, global['ionic-native']['status-bar'].ngx, global.ng.cdk.platform, global['ionic-native']['in-app-browser'].ngx, global.apollo.client.core, global['apollo-angular'], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global['apollo-link-queue'], global['apollo-link-serialize'], global['apollo-link-logger'], global['apollo-angular'].http, global['apollo3-cache-persist'], global['ionic-native'].downloader.ngx, global['ionic-native']['status-bar'].ngx.index, global['ionic-native'].keyboard.ngx.index, global['ionic-native']['in-app-browser'].ngx.index, global['ionic-native'].downloader.ngx.index, global.ng.cdk.textField, global['e-is']['ngx-material-table'], global.ng.cdk.collections, global['ngx-jdenticon'], null, null, null, global['moment-timezone']));
5
+ }(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, operators$1, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -10553,44 +10553,97 @@
10553
10553
  },] }
10554
10554
  ];
10555
10555
 
10556
+ var UploadFile = /** @class */ (function (_super) {
10557
+ __extends(UploadFile, _super);
10558
+ function UploadFile() {
10559
+ return _super !== null && _super.apply(this, arguments) || this;
10560
+ }
10561
+ return UploadFile;
10562
+ }(File));
10563
+ var FileResponse = /** @class */ (function () {
10564
+ function FileResponse(init) {
10565
+ this.type = i2$1.HttpEventType.Response;
10566
+ this.body = isNotNil(init === null || init === void 0 ? void 0 : init.body) ? init.body : null;
10567
+ this.status = (init === null || init === void 0 ? void 0 : init.status) || 0;
10568
+ this.statusText = (init === null || init === void 0 ? void 0 : init.statusText) || 'OK';
10569
+ }
10570
+ return FileResponse;
10571
+ }());
10572
+ function isProgressEvent(event) {
10573
+ return event && (event.type === i2$1.HttpEventType.UploadProgress
10574
+ || event.type === i2$1.HttpEventType.DownloadProgress);
10575
+ }
10576
+ function isResponseEvent(event) {
10577
+ return event && event.type === i2$1.HttpEventType.Response;
10578
+ }
10579
+
10556
10580
  var IMAGE_DEFAULTS = {
10557
10581
  MAX_HEIGHT: 480,
10558
10582
  MAX_WIDTH: 640,
10559
10583
  THUMB_MAX_HEIGHT: 200,
10560
10584
  THUMB_MAX_WIDTH: 200
10561
10585
  };
10562
- var Base64ImageReader = /** @class */ (function () {
10563
- function Base64ImageReader() {
10586
+ // @dynamic
10587
+ var ImagesUtils = /** @class */ (function () {
10588
+ function ImagesUtils() {
10564
10589
  }
10565
- Base64ImageReader.prototype.readFromBlob = function (file) {
10566
- return __awaiter(this, void 0, void 0, function () {
10567
- var dataUrl;
10568
- return __generator(this, function (_a) {
10569
- switch (_a.label) {
10570
- case 0:
10571
- if (!file)
10572
- throw new Error('Illegal argument: missing file');
10573
- return [4 /*yield*/, new Promise(function (resolve, reject) {
10574
- var reader = new FileReader();
10575
- reader.addEventListener('load', function (event) { return resolve(reader.result); }, false);
10576
- reader.readAsDataURL(file);
10577
- })];
10578
- case 1:
10579
- dataUrl = _a.sent();
10580
- return [2 /*return*/, dataUrl];
10581
- }
10582
- });
10583
- });
10590
+ ImagesUtils.readAsDataURL = function (file, opts) {
10591
+ var _this = this;
10592
+ var $progress = new rxjs.Subject();
10593
+ var reader = new FileReader();
10594
+ // Listen progress
10595
+ reader.onprogress = function (e) {
10596
+ var total = e.total || 1;
10597
+ var loaded = e.total || 0;
10598
+ if (loaded < total)
10599
+ $progress.next({ type: i2$1.HttpEventType.UploadProgress, loaded: loaded, total: total });
10600
+ };
10601
+ // Listen end
10602
+ reader.onloadend = function (e) {
10603
+ var body = reader.result;
10604
+ if (typeof body === 'string') {
10605
+ $progress.next(new FileResponse({ body: body }));
10606
+ $progress.complete();
10607
+ }
10608
+ else {
10609
+ console.error("[image-utils] Cannot read file '" + file.name + "' as text");
10610
+ $progress.error("Cannot read file as text");
10611
+ }
10612
+ };
10613
+ // Listen error
10614
+ reader.onerror = function (event) {
10615
+ console.error('[image-utils] Error while reading file:', event);
10616
+ $progress.error(event);
10617
+ };
10618
+ // Start reading the file
10619
+ reader.readAsDataURL(file);
10620
+ // Resize image, if need
10621
+ if (opts) {
10622
+ return $progress.pipe(operators$1.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
10623
+ var body;
10624
+ return __generator(this, function (_a) {
10625
+ switch (_a.label) {
10626
+ case 0:
10627
+ if (!(event instanceof FileResponse)) return [3 /*break*/, 2];
10628
+ return [4 /*yield*/, ImagesUtils.resizeBase64(event.body, opts)];
10629
+ case 1:
10630
+ body = _a.sent();
10631
+ return [2 /*return*/, new FileResponse({ body: body })];
10632
+ case 2: return [2 /*return*/, event];
10633
+ }
10634
+ });
10635
+ }); }));
10636
+ }
10637
+ return $progress.asObservable();
10584
10638
  };
10585
- Base64ImageReader.prototype.readAndResizeFromUrl = function (path, opts) {
10639
+ ImagesUtils.readAndResizeFromUrl = function (fileUrl, opts) {
10586
10640
  return __awaiter(this, void 0, void 0, function () {
10587
10641
  var img, err_1;
10588
- var _this = this;
10589
10642
  return __generator(this, function (_a) {
10590
10643
  switch (_a.label) {
10591
10644
  case 0:
10592
- if (isNilOrBlank(path))
10593
- throw new Error('Illegal argument: missing path');
10645
+ if (isNilOrBlank(fileUrl))
10646
+ throw new Error('Illegal argument: missing fileUrl');
10594
10647
  img = document.createElement('img');
10595
10648
  // Need to avoid CORS error
10596
10649
  // (see https://stackoverflow.com/questions/22710627/tainted-canvases-may-not-be-exported)
@@ -10599,14 +10652,14 @@
10599
10652
  case 1:
10600
10653
  _a.trys.push([1, 3, 4, 5]);
10601
10654
  return [4 /*yield*/, new Promise(function (resolve, reject) {
10602
- img.addEventListener('load', _this.createImageOnLoadResizeFn(resolve, reject, opts), false);
10655
+ img.addEventListener('load', ImagesUtils.createImageOnLoadResizeFn(resolve, reject, opts), false);
10603
10656
  img.addEventListener('error', reject);
10604
- img.src = path;
10657
+ img.src = fileUrl;
10605
10658
  })];
10606
10659
  case 2: return [2 /*return*/, _a.sent()];
10607
10660
  case 3:
10608
10661
  err_1 = _a.sent();
10609
- throw new Error("Failed to load and resize image {" + path + "}");
10662
+ throw new Error("Failed to load and resize image {" + fileUrl + "}");
10610
10663
  case 4:
10611
10664
  img.remove();
10612
10665
  return [7 /*endfinally*/];
@@ -10615,15 +10668,12 @@
10615
10668
  });
10616
10669
  });
10617
10670
  };
10618
- Base64ImageReader.prototype.readAndResizeFromBlob = function (file, opts) {
10671
+ ImagesUtils.resizeBase64 = function (dataUrl, opts) {
10619
10672
  return __awaiter(this, void 0, void 0, function () {
10620
10673
  var img;
10621
- var _this = this;
10622
10674
  return __generator(this, function (_a) {
10623
10675
  switch (_a.label) {
10624
10676
  case 0:
10625
- if (!file)
10626
- throw new Error('Illegal argument: missing file');
10627
10677
  img = document.createElement('img');
10628
10678
  // Need to avoid CORS error
10629
10679
  // (see https://stackoverflow.com/questions/22710627/tainted-canvases-may-not-be-exported)
@@ -10632,13 +10682,9 @@
10632
10682
  case 1:
10633
10683
  _a.trys.push([1, , 3, 4]);
10634
10684
  return [4 /*yield*/, new Promise(function (resolve, reject) {
10635
- var reader = new FileReader();
10636
- reader.addEventListener('load', function (event) {
10637
- // Resize image
10638
- img.onload = _this.createImageOnLoadResizeFn(resolve, reject, opts);
10639
- img.src = reader.result;
10640
- }, false);
10641
- reader.readAsDataURL(file);
10685
+ img.addEventListener('load', ImagesUtils.createImageOnLoadResizeFn(resolve, reject, opts), false);
10686
+ img.addEventListener('error', reject);
10687
+ img.src = dataUrl;
10642
10688
  })];
10643
10689
  case 2: return [2 /*return*/, _a.sent()];
10644
10690
  case 3:
@@ -10649,8 +10695,7 @@
10649
10695
  });
10650
10696
  });
10651
10697
  };
10652
- /* -- protected methods -- */
10653
- Base64ImageReader.prototype.createImageOnLoadResizeFn = function (resolve, reject, opts) {
10698
+ ImagesUtils.createImageOnLoadResizeFn = function (resolve, reject, opts) {
10654
10699
  return function (event) {
10655
10700
  var maxWidth = (opts && opts.thumbnail ? IMAGE_DEFAULTS.THUMB_MAX_WIDTH : (opts && opts.maxWidth || IMAGE_DEFAULTS.MAX_WIDTH));
10656
10701
  var maxHeight = (opts && opts.thumbnail ? IMAGE_DEFAULTS.THUMB_MAX_HEIGHT : (opts && opts.maxHeight || IMAGE_DEFAULTS.MAX_HEIGHT));
@@ -10716,7 +10761,7 @@
10716
10761
  }
10717
10762
  };
10718
10763
  };
10719
- return Base64ImageReader;
10764
+ return ImagesUtils;
10720
10765
  }());
10721
10766
 
10722
10767
  var uuidv4 = uuidv4Imported__namespace;
@@ -10751,28 +10796,28 @@
10751
10796
  var jobsFactories = (sources || []).map(function (source) { return function () { return _this.getImage(source, Object.assign({}, opts)); }; });
10752
10797
  return chainPromises(jobsFactories);
10753
10798
  };
10754
- FileService.prototype.getImage = function (source, opts) {
10799
+ FileService.prototype.getImage = function (fileUrl, opts) {
10755
10800
  return __awaiter(this, void 0, void 0, function () {
10756
- var responseType, debug, now, lastSlashIndex, fileName, targetFilePath, blob, err_1, dataUrl;
10801
+ var outputType, debug, now, lastSlashIndex, fileName, targetFilePath, blob, err_1, dataUrl;
10757
10802
  return __generator(this, function (_a) {
10758
10803
  switch (_a.label) {
10759
10804
  case 0:
10760
- responseType = opts && opts.responseType || (this.canUseFileSystem ? 'file' : 'dataUrl');
10805
+ outputType = opts && opts.outputType || (this.canUseFileSystem ? 'fileUrl' : 'dataUrl');
10761
10806
  debug = this._debug /*&& (!opts || !opts.fileTransfer)*/;
10762
10807
  now = debug && Date.now();
10763
10808
  if (debug)
10764
- console.debug("[file] Fetching image {" + source + "} into " + responseType + "...");
10765
- lastSlashIndex = source.lastIndexOf('/');
10809
+ console.debug("[file] Fetching image {" + fileUrl + "} into " + outputType + "...");
10810
+ lastSlashIndex = fileUrl.lastIndexOf('/');
10766
10811
  if (lastSlashIndex === -1)
10767
- throw new Error('Invalid URL: ' + source);
10768
- fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
10769
- if (!(responseType === 'file' && this.canUseFileSystem)) return [3 /*break*/, 4];
10770
- console.warn("WARN: [file] Fetching image {" + source + "} in local file...");
10812
+ throw new Error('Invalid URL: ' + fileUrl);
10813
+ fileName = lastSlashIndex < (fileUrl.length - 1) && fileUrl.substring(lastSlashIndex + 1) || uuidv4();
10814
+ if (!(outputType === 'fileUrl' && this.canUseFileSystem)) return [3 /*break*/, 4];
10815
+ console.warn("WARN: [file] Downloading image {" + fileUrl + "} in local filesystem...");
10771
10816
  targetFilePath = this._imageDirectory + fileName;
10772
10817
  _a.label = 1;
10773
10818
  case 1:
10774
10819
  _a.trys.push([1, 3, , 4]);
10775
- return [4 /*yield*/, firstNotNilPromise(this.http.get(source, {
10820
+ return [4 /*yield*/, firstNotNilPromise(this.http.get(fileUrl, {
10776
10821
  observe: 'body',
10777
10822
  responseType: 'blob',
10778
10823
  reportProgress: false
@@ -10784,25 +10829,25 @@
10784
10829
  //const fileTransfer = (opts && opts.fileTransfer) || this.transfer.create();
10785
10830
  //await fileTransfer.download(source, targetFilePath);
10786
10831
  if (debug)
10787
- console.debug("[file] Fetching image {" + source + "} into " + responseType + " [OK] in " + (Date.now() - now) + "ms");
10832
+ console.debug("[file] Fetching image {" + fileUrl + "} into " + outputType + " [OK] in " + (Date.now() - now) + "ms");
10788
10833
  return [2 /*return*/, targetFilePath];
10789
10834
  case 3:
10790
10835
  err_1 = _a.sent();
10791
- console.error("[file] Error while download " + source + ": " + (err_1 && err_1.message || err_1));
10836
+ console.error("[file] Error while download " + fileUrl + ": " + (err_1 && err_1.message || err_1));
10792
10837
  // Continue (fallback to data Url)
10793
- responseType = 'dataUrl';
10838
+ outputType = 'dataUrl';
10794
10839
  return [3 /*break*/, 4];
10795
10840
  case 4:
10796
- if (!(responseType === 'dataUrl')) return [3 /*break*/, 6];
10797
- return [4 /*yield*/, new Base64ImageReader().readAndResizeFromUrl(source, opts)];
10841
+ if (!(outputType === 'dataUrl')) return [3 /*break*/, 6];
10842
+ return [4 /*yield*/, ImagesUtils.readAndResizeFromUrl(fileUrl, opts)];
10798
10843
  case 5:
10799
10844
  dataUrl = _a.sent();
10800
10845
  if (debug)
10801
- console.debug("[file] Fetching image {" + source + "} into " + responseType + " [OK] in " + (Date.now() - now) + "ms");
10846
+ console.debug("[file] Fetching image {" + fileUrl + "} into " + outputType + " [OK] in " + (Date.now() - now) + "ms");
10802
10847
  return [2 /*return*/, dataUrl];
10803
10848
  case 6:
10804
10849
  // Keep original URL
10805
- return [2 /*return*/, source];
10850
+ return [2 /*return*/, fileUrl];
10806
10851
  }
10807
10852
  });
10808
10853
  });
@@ -17184,7 +17229,7 @@
17184
17229
  if (!(hasAvatarUrl && this.network.online)) return [3 /*break*/, 2];
17185
17230
  return [4 /*yield*/, this.file.getImage(json.avatar, {
17186
17231
  thumbnail: true,
17187
- responseType: 'dataUrl'
17232
+ outputType: 'dataUrl'
17188
17233
  })
17189
17234
  .then(function (dataUrl) {
17190
17235
  if (dataUrl && _this._debug)
@@ -18159,30 +18204,6 @@
18159
18204
  ]; };
18160
18205
  var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
18161
18206
 
18162
- var UploadFile = /** @class */ (function (_super) {
18163
- __extends(UploadFile, _super);
18164
- function UploadFile() {
18165
- return _super !== null && _super.apply(this, arguments) || this;
18166
- }
18167
- return UploadFile;
18168
- }(File));
18169
- var FileResponse = /** @class */ (function () {
18170
- function FileResponse(init) {
18171
- this.type = i2$1.HttpEventType.Response;
18172
- this.body = isNotNil(init === null || init === void 0 ? void 0 : init.body) ? init.body : null;
18173
- this.status = (init === null || init === void 0 ? void 0 : init.status) || 0;
18174
- this.statusText = (init === null || init === void 0 ? void 0 : init.statusText) || 'OK';
18175
- }
18176
- return FileResponse;
18177
- }());
18178
- function isProgressEvent(event) {
18179
- return event && (event.type === i2$1.HttpEventType.UploadProgress
18180
- || event.type === i2$1.HttpEventType.DownloadProgress);
18181
- }
18182
- function isResponseEvent(event) {
18183
- return event && event.type === i2$1.HttpEventType.Response;
18184
- }
18185
-
18186
18207
  var UploadFilePopover = /** @class */ (function () {
18187
18208
  function UploadFilePopover(popoverController, translate, cd) {
18188
18209
  this.popoverController = popoverController;
@@ -34737,7 +34758,6 @@
34737
34758
  exports.AutocompleteTestPage = AutocompleteTestPage;
34738
34759
  exports.AutofocusDirective = AutofocusDirective;
34739
34760
  exports.Base58 = Base58;
34740
- exports.Base64ImageReader = Base64ImageReader;
34741
34761
  exports.BaseEntityService = BaseEntityService;
34742
34762
  exports.BaseGraphqlService = BaseGraphqlService;
34743
34763
  exports.BaseGraphqlServiceOptions = BaseGraphqlServiceOptions;
@@ -34791,6 +34811,7 @@
34791
34811
  exports.FileResponse = FileResponse;
34792
34812
  exports.FileService = FileService;
34793
34813
  exports.FileSizePipe = FileSizePipe;
34814
+ exports.FilesUtils = FilesUtils;
34794
34815
  exports.FormArrayHelper = FormArrayHelper;
34795
34816
  exports.FormButtonsBarComponent = FormButtonsBarComponent;
34796
34817
  exports.FormButtonsBarToken = FormButtonsBarToken;
@@ -34811,6 +34832,7 @@
34811
34832
  exports.Hotkeys = Hotkeys;
34812
34833
  exports.HotkeysDialogComponent = HotkeysDialogComponent;
34813
34834
  exports.IMAGE_DEFAULTS = IMAGE_DEFAULTS;
34835
+ exports.ImagesUtils = ImagesUtils;
34814
34836
  exports.InMemoryEntitiesService = InMemoryEntitiesService;
34815
34837
  exports.IsLoginAccountPipe = IsLoginAccountPipe;
34816
34838
  exports.IsNilOrBlankPipe = IsNilOrBlankPipe;
@@ -34867,6 +34889,7 @@
34867
34889
  exports.MessageService = MessageService;
34868
34890
  exports.MessageTypeList = MessageTypeList;
34869
34891
  exports.MessageTypes = MessageTypes;
34892
+ exports.MimeTypes = MimeTypes;
34870
34893
  exports.ModalToolbarComponent = ModalToolbarComponent;
34871
34894
  exports.NetworkService = NetworkService;
34872
34895
  exports.NgInitDirective = NgInitDirective;
@@ -35121,20 +35144,19 @@
35121
35144
  exports.ɵa = CustomReuseStrategy;
35122
35145
  exports.ɵb = MatNumpadDomService;
35123
35146
  exports.ɵc = isFocusableElement;
35124
- exports.ɵd = FilesUtils;
35125
- exports.ɵe = RegisterForm;
35126
- exports.ɵf = AccountValidatorService;
35127
- exports.ɵg = RegisterModal;
35128
- exports.ɵh = UserSettingsValidatorService;
35129
- exports.ɵi = LocalSettingsValidatorService;
35130
- exports.ɵj = AppUpdateOfflineModeCard;
35131
- exports.ɵk = UserEventNotificationList;
35132
- exports.ɵl = JobProgressionList;
35133
- exports.ɵm = DateTestPage;
35134
- exports.ɵn = NumpadTestPage;
35135
- exports.ɵo = MatBadgeIconTestPage;
35136
- exports.ɵp = ToastTestingModule;
35137
- exports.ɵq = ToastTestingPage;
35147
+ exports.ɵd = RegisterForm;
35148
+ exports.ɵe = AccountValidatorService;
35149
+ exports.ɵf = RegisterModal;
35150
+ exports.ɵg = UserSettingsValidatorService;
35151
+ exports.ɵh = LocalSettingsValidatorService;
35152
+ exports.ɵi = AppUpdateOfflineModeCard;
35153
+ exports.ɵj = UserEventNotificationList;
35154
+ exports.ɵk = JobProgressionList;
35155
+ exports.ɵl = DateTestPage;
35156
+ exports.ɵm = NumpadTestPage;
35157
+ exports.ɵn = MatBadgeIconTestPage;
35158
+ exports.ɵo = ToastTestingModule;
35159
+ exports.ɵp = ToastTestingPage;
35138
35160
 
35139
35161
  Object.defineProperty(exports, '__esModule', { value: true });
35140
35162