@stratusjs/angular 0.6.7 → 0.7.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.
Files changed (48) hide show
  1. package/dist/angular.bundle.js +467 -1259
  2. package/dist/angular.bundle.min.js +1 -1
  3. package/package.json +3 -2
  4. package/src/core/dialog.interface.js.map +1 -0
  5. package/src/core/root.component.js +8 -5
  6. package/src/core/root.component.js.map +1 -1
  7. package/src/core/root.component.min.js +1 -1
  8. package/src/core/root.component.ts +6 -3
  9. package/src/editor/editor.component.js +8 -1
  10. package/src/editor/editor.component.js.map +1 -1
  11. package/src/editor/editor.component.min.js +1 -1
  12. package/src/editor/editor.component.ts +11 -0
  13. package/src/editor/quill-break-blot.plugin.js +0 -38
  14. package/src/editor/quill-break-blot.plugin.js.map +0 -1
  15. package/src/editor/quill-break-blot.plugin.min.js +0 -1
  16. package/src/editor/quill-html-edit.plugin.js +0 -164
  17. package/src/editor/quill-html-edit.plugin.js.map +0 -1
  18. package/src/editor/quill-html-edit.plugin.min.js +0 -1
  19. package/src/editor/quill-image-format.plugin.js +0 -50
  20. package/src/editor/quill-image-format.plugin.js.map +0 -1
  21. package/src/editor/quill-image-format.plugin.min.js +0 -1
  22. package/src/editor/quill-input-button.plugin.js +0 -98
  23. package/src/editor/quill-input-button.plugin.js.map +0 -1
  24. package/src/editor/quill-input-button.plugin.min.js +0 -1
  25. package/src/froala/editor/froala-editor.directive.js +0 -328
  26. package/src/froala/editor/froala-editor.directive.js.map +0 -1
  27. package/src/froala/editor/froala-editor.directive.min.js +0 -1
  28. package/src/froala/editor/froala-editor.module.js +0 -37
  29. package/src/froala/editor/froala-editor.module.js.map +0 -1
  30. package/src/froala/editor/froala-editor.module.min.js +0 -1
  31. package/src/froala/editor/index.js +0 -22
  32. package/src/froala/editor/index.js.map +0 -1
  33. package/src/froala/editor/index.min.js +0 -1
  34. package/src/froala/plugins/image_manager.js +0 -364
  35. package/src/froala/plugins/image_manager.js.map +0 -1
  36. package/src/froala/plugins/image_manager.min.js +0 -1
  37. package/src/froala/view/froala-view.directive.js +0 -49
  38. package/src/froala/view/froala-view.directive.js.map +0 -1
  39. package/src/froala/view/froala-view.directive.min.js +0 -1
  40. package/src/froala/view/froala-view.module.js +0 -37
  41. package/src/froala/view/froala-view.module.js.map +0 -1
  42. package/src/froala/view/froala-view.module.min.js +0 -1
  43. package/src/froala/view/index.js +0 -22
  44. package/src/froala/view/index.js.map +0 -1
  45. package/src/froala/view/index.min.js +0 -1
  46. package/src/root/root.component.js +0 -43
  47. package/src/root/root.component.js.map +0 -1
  48. package/src/root/root.component.min.js +0 -1
@@ -1,6 +1,6 @@
1
- System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/environment', '@stratusjs/angularjs/services/model', '@stratusjs/angularjs/services/registry', '@stratusjs/core/events/eventManager', 'html2pdf', 'font-awesome', 'froala-plugins', 'froala-embedly', 'froala-font-awesome', 'froala-image-tui', 'froala-editor', '@stratusjs/core/datastore/xhr', '@agentepsilon/decko', '@stratusjs/core/misc', '@stratusjs/angularjs/services/collection', 'zone.js/dist/zone'], (function (exports) {
1
+ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/environment', '@stratusjs/core/misc', '@stratusjs/angularjs/services/model', '@stratusjs/angularjs/services/registry', '@stratusjs/core/events/eventManager', 'html2pdf', 'font-awesome', 'froala-plugins', 'froala-embedly', 'froala-font-awesome', 'froala-image-tui', 'froala-editor', '@stratusjs/core/datastore/xhr', '@agentepsilon/decko', 'toastify-js', '@stratusjs/angularjs/services/collection', 'zone.js/dist/zone'], (function (exports) {
2
2
  'use strict';
3
- var Stratus, _, uniqueId$3, snakeCase, head, isEmpty, isUndefined, isString, extend$1, debounce$2, isNumber, isBoolean, isArray$1, isFunction$1, set, isNil, includes, isObject$2, assignIn, forEach, cookie, Model, Registry, EventManager$1, FroalaEditor, XHR, debounce$1, safeUniqueId, isJSON, Collection;
3
+ var Stratus, _, uniqueId$3, snakeCase, head, isEmpty, isUndefined, isString, extend$1, debounce$2, isNumber, isBoolean, isArray$1, isFunction$1, set, isNil, includes, isObject$2, assignIn, forEach, cookie, isJSON, safeUniqueId, Model, Registry, EventManager$1, FroalaEditor, XHR, debounce$1, Toastify, Collection;
4
4
  return {
5
5
  setters: [function (module) {
6
6
  Stratus = module.Stratus;
@@ -26,6 +26,9 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
26
26
  forEach = module.forEach;
27
27
  }, function (module) {
28
28
  cookie = module.cookie;
29
+ }, function (module) {
30
+ isJSON = module.isJSON;
31
+ safeUniqueId = module.safeUniqueId;
29
32
  }, function (module) {
30
33
  Model = module.Model;
31
34
  }, function (module) {
@@ -39,8 +42,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
39
42
  }, function (module) {
40
43
  debounce$1 = module.debounce;
41
44
  }, function (module) {
42
- safeUniqueId = module.safeUniqueId;
43
- isJSON = module.isJSON;
45
+ Toastify = module["default"];
44
46
  }, function (module) {
45
47
  Collection = module.Collection;
46
48
  }, function () {}],
@@ -52501,14 +52503,14 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
52501
52503
  const attrKebab = _.kebabCase(attr);
52502
52504
  const variants = [
52503
52505
  attrKebab,
52504
- 'data-' + attrKebab
52506
+ `data-${attrKebab}`
52505
52507
  ];
52506
52508
  const variant = _.find(variants, (v) => elementRef.nativeElement.hasAttribute(v));
52507
52509
  if (_.isEmpty(variant)) {
52508
52510
  return;
52509
52511
  }
52510
- const value = sanitizer.sanitize(SecurityContext$1.HTML, elementRef.nativeElement.getAttribute(variant));
52511
- _.set(this, attr, value);
52512
+ const value = sanitizer.sanitize(SecurityContext$1.STYLE, elementRef.nativeElement.getAttribute(variant));
52513
+ _.set(this, attr, isJSON(value) ? JSON.parse(value) : value);
52512
52514
  });
52513
52515
  }
52514
52516
  } exports('RootComponent', RootComponent);
@@ -85201,7 +85203,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
85201
85203
  this.styled = true;
85202
85204
  this.refresh();
85203
85205
  });
85204
- this.hydrate(elementRef, sanitizer, ["title", "uid", "dev", "debug", "editor", "target", "targetSuffix", "id", "manifest", "decouple", "direct", "api", "urlRoot", "property", "_", "has", "log", "Stratus", "registry", "fetched", "data", "collection", "model", "dataSub", "onChange", "subscriber", "svgIcons", "initialized", "styled", "blurred", "focused", "codeViewIsOpen", "form", "dataChangeLog", "incomingData", "outgoingData", "debounceSave", "debounceTime", "forceSave", "froalaEditorDirective", "froalaStandardButtons", "froalaConfig", "sanitizer", "ref", "elementRef", "fb", "dialog", "ngOnInit", "modelSave", "listDuplicates", "normalizeIn", "normalizeOut", "changeImgSize", "handleError", "fetchData", "dataDefer", "dataRef", "onDataChange", "created", "changedEditor", "onChangeEvent", "onFocus", "onBlur", "bypassHTML", "trigger", "openCitationDialog", "openLinkDialog", "openMediaDialog", "openCodeViewDialog", "hydrate", "disableRefresh", "stagger", "reloading", "refresh", "ngOnDestroy"]);
85206
+ this.hydrate(elementRef, sanitizer, ["title", "uid", "dev", "debug", "editor", "target", "targetSuffix", "id", "manifest", "decouple", "direct", "api", "urlRoot", "property", "classes", "_", "has", "log", "Stratus", "registry", "fetched", "data", "collection", "model", "dataSub", "onChange", "subscriber", "svgIcons", "initialized", "styled", "blurred", "focused", "codeViewIsOpen", "form", "dataChangeLog", "incomingData", "outgoingData", "debounceSave", "debounceTime", "forceSave", "froalaEditorDirective", "froalaStandardButtons", "froalaConfig", "sanitizer", "ref", "elementRef", "fb", "dialog", "ngOnInit", "modelSave", "listDuplicates", "normalizeIn", "normalizeOut", "changeImgSize", "handleError", "fetchData", "dataDefer", "dataRef", "onDataChange", "created", "changedEditor", "onChangeEvent", "onFocus", "onBlur", "bypassHTML", "trigger", "openCitationDialog", "openLinkDialog", "openMediaDialog", "openCodeViewDialog", "hydrate", "disableRefresh", "stagger", "reloading", "refresh", "ngOnDestroy"]);
85205
85207
  this.fetchData()
85206
85208
  .then(data => {
85207
85209
  if (!data || !(data instanceof EventManager$1)) {
@@ -85246,6 +85248,9 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
85246
85248
  }
85247
85249
  ngOnInit() {
85248
85250
  this.initialized = true;
85251
+ if (!_.isUndefined(this.classes)) {
85252
+ this.froalaConfig.inlineClasses = this.classes;
85253
+ }
85249
85254
  const dataControl = this.form.get('dataString');
85250
85255
  if (this.debounceSave) {
85251
85256
  dataControl.valueChanges.pipe(debounce(() => timer(this.debounceTime)), catchError(this.handleError)).subscribe((evt) => this.modelSave(evt));
@@ -85584,6 +85589,10 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
85584
85589
  Input(),
85585
85590
  __metadata$f("design:type", String)
85586
85591
  ], EditorComponent.prototype, "property", void 0);
85592
+ __decorate$j([
85593
+ Input(),
85594
+ __metadata$f("design:type", Object)
85595
+ ], EditorComponent.prototype, "classes", void 0);
85587
85596
  exports('EditorComponent', EditorComponent = __decorate$j([
85588
85597
  Component({
85589
85598
  selector: `sa-${moduleName$8}`,
@@ -124793,6 +124802,11 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
124793
124802
  /** Width of the map. Set this to `null` if you'd like to control the width through CSS. */
124794
124803
  this.width = DEFAULT_WIDTH;
124795
124804
  this._options = DEFAULT_OPTIONS;
124805
+ /**
124806
+ * See
124807
+ * https://developers.google.com/maps/documentation/javascript/events#auth-errors
124808
+ */
124809
+ this.authFailure = new EventEmitter();
124796
124810
  /**
124797
124811
  * See
124798
124812
  * https://developers.google.com/maps/documentation/javascript/reference/map#Map.bounds_changed
@@ -124893,6 +124907,13 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
124893
124907
  'https://developers.google.com/maps/documentation/javascript/' +
124894
124908
  'tutorial#Loading_the_Maps_API');
124895
124909
  }
124910
+ this._existingAuthFailureCallback = googleMapsWindow.gm_authFailure;
124911
+ googleMapsWindow.gm_authFailure = () => {
124912
+ if (this._existingAuthFailureCallback) {
124913
+ this._existingAuthFailureCallback();
124914
+ }
124915
+ this.authFailure.emit();
124916
+ };
124896
124917
  }
124897
124918
  }
124898
124919
  set center(center) {
@@ -124941,6 +124962,10 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
124941
124962
  }
124942
124963
  ngOnDestroy() {
124943
124964
  this._eventManager.destroy();
124965
+ if (this._isBrowser) {
124966
+ const googleMapsWindow = window;
124967
+ googleMapsWindow.gm_authFailure = this._existingAuthFailureCallback;
124968
+ }
124944
124969
  }
124945
124970
  /**
124946
124971
  * See
@@ -125127,6 +125152,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
125127
125152
  center: [{ type: Input }],
125128
125153
  zoom: [{ type: Input }],
125129
125154
  options: [{ type: Input }],
125155
+ authFailure: [{ type: Output }],
125130
125156
  boundsChanged: [{ type: Output }],
125131
125157
  centerChanged: [{ type: Output }],
125132
125158
  mapClick: [{ type: Output }],
@@ -125479,6 +125505,131 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
125479
125505
  circleRightclick: [{ type: Output }]
125480
125506
  };
125481
125507
 
125508
+ /**
125509
+ * @license
125510
+ * Copyright Google LLC All Rights Reserved.
125511
+ *
125512
+ * Use of this source code is governed by an MIT-style license that can be
125513
+ * found in the LICENSE file at https://angular.io/license
125514
+ */
125515
+ /**
125516
+ * Angular component that renders a Google Maps Directions Renderer via the Google Maps
125517
+ * JavaScript API.
125518
+ *
125519
+ * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsRenderer
125520
+ */
125521
+ class MapDirectionsRenderer {
125522
+ constructor(_googleMap, _ngZone) {
125523
+ this._googleMap = _googleMap;
125524
+ this._ngZone = _ngZone;
125525
+ this._eventManager = new MapEventManager(this._ngZone);
125526
+ /**
125527
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125528
+ * #DirectionsRenderer.directions_changed
125529
+ */
125530
+ this.directionsChanged = this._eventManager.getLazyEmitter('directions_changed');
125531
+ }
125532
+ /**
125533
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125534
+ * #DirectionsRendererOptions.directions
125535
+ */
125536
+ set directions(directions) {
125537
+ this._directions = directions;
125538
+ }
125539
+ /**
125540
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125541
+ * #DirectionsRendererOptions
125542
+ */
125543
+ set options(options) {
125544
+ this._options = options;
125545
+ }
125546
+ ngOnInit() {
125547
+ if (this._googleMap._isBrowser) {
125548
+ // Create the object outside the zone so its events don't trigger change detection.
125549
+ // We'll bring it back in inside the `MapEventManager` only for the events that the
125550
+ // user has subscribed to.
125551
+ this._ngZone.runOutsideAngular(() => {
125552
+ this.directionsRenderer = new google.maps.DirectionsRenderer(this._combineOptions());
125553
+ });
125554
+ this._assertInitialized();
125555
+ this.directionsRenderer.setMap(this._googleMap.googleMap);
125556
+ this._eventManager.setTarget(this.directionsRenderer);
125557
+ }
125558
+ }
125559
+ ngOnChanges(changes) {
125560
+ if (this.directionsRenderer) {
125561
+ if (changes['options']) {
125562
+ this.directionsRenderer.setOptions(this._combineOptions());
125563
+ }
125564
+ if (changes['directions'] && this._directions !== undefined) {
125565
+ this.directionsRenderer.setDirections(this._directions);
125566
+ }
125567
+ }
125568
+ }
125569
+ ngOnDestroy() {
125570
+ this._eventManager.destroy();
125571
+ if (this.directionsRenderer) {
125572
+ this.directionsRenderer.setMap(null);
125573
+ }
125574
+ }
125575
+ /**
125576
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125577
+ * #DirectionsRenderer.getDirections
125578
+ */
125579
+ getDirections() {
125580
+ this._assertInitialized();
125581
+ return this.directionsRenderer.getDirections();
125582
+ }
125583
+ /**
125584
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125585
+ * #DirectionsRenderer.getPanel
125586
+ */
125587
+ getPanel() {
125588
+ this._assertInitialized();
125589
+ return this.directionsRenderer.getPanel();
125590
+ }
125591
+ /**
125592
+ * See developers.google.com/maps/documentation/javascript/reference/directions
125593
+ * #DirectionsRenderer.getRouteIndex
125594
+ */
125595
+ getRouteIndex() {
125596
+ this._assertInitialized();
125597
+ return this.directionsRenderer.getRouteIndex();
125598
+ }
125599
+ _combineOptions() {
125600
+ const options = this._options || {};
125601
+ return Object.assign(Object.assign({}, options), { directions: this._directions || options.directions, map: this._googleMap.googleMap });
125602
+ }
125603
+ _assertInitialized() {
125604
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
125605
+ if (!this._googleMap.googleMap) {
125606
+ throw Error('Cannot access Google Map information before the API has been initialized. ' +
125607
+ 'Please wait for the API to load before trying to interact with it.');
125608
+ }
125609
+ if (!this.directionsRenderer) {
125610
+ throw Error('Cannot interact with a Google Map Directions Renderer before it has been ' +
125611
+ 'initialized. Please wait for the Directions Renderer to load before trying ' +
125612
+ 'to interact with it.');
125613
+ }
125614
+ }
125615
+ }
125616
+ }
125617
+ MapDirectionsRenderer.decorators = [
125618
+ { type: Directive, args: [{
125619
+ selector: 'map-directions-renderer',
125620
+ exportAs: 'mapDirectionsRenderer',
125621
+ },] }
125622
+ ];
125623
+ MapDirectionsRenderer.ctorParameters = () => [
125624
+ { type: GoogleMap },
125625
+ { type: NgZone }
125626
+ ];
125627
+ MapDirectionsRenderer.propDecorators = {
125628
+ directions: [{ type: Input }],
125629
+ options: [{ type: Input }],
125630
+ directionsChanged: [{ type: Output }]
125631
+ };
125632
+
125482
125633
  /**
125483
125634
  * @license
125484
125635
  * Copyright Google LLC All Rights Reserved.
@@ -126147,6 +126298,20 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126147
126298
  set options(options) {
126148
126299
  this._options = options;
126149
126300
  }
126301
+ /**
126302
+ * Icon to be used for the marker.
126303
+ * See: https://developers.google.com/maps/documentation/javascript/reference/marker#Icon
126304
+ */
126305
+ set icon(icon) {
126306
+ this._icon = icon;
126307
+ }
126308
+ /**
126309
+ * Whether the marker is visible.
126310
+ * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.visible
126311
+ */
126312
+ set visible(value) {
126313
+ this._visible = value;
126314
+ }
126150
126315
  ngOnInit() {
126151
126316
  if (this._googleMap._isBrowser) {
126152
126317
  // Create the object outside the zone so its events don't trigger change detection.
@@ -126161,7 +126326,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126161
126326
  }
126162
126327
  }
126163
126328
  ngOnChanges(changes) {
126164
- const { marker, _title, _position, _label, _clickable } = this;
126329
+ const { marker, _title, _position, _label, _clickable, _icon, _visible } = this;
126165
126330
  if (marker) {
126166
126331
  if (changes['options']) {
126167
126332
  marker.setOptions(this._combineOptions());
@@ -126178,6 +126343,12 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126178
126343
  if (changes['clickable'] && _clickable !== undefined) {
126179
126344
  marker.setClickable(_clickable);
126180
126345
  }
126346
+ if (changes['icon'] && _icon) {
126347
+ marker.setIcon(_icon);
126348
+ }
126349
+ if (changes['visible'] && _visible !== undefined) {
126350
+ marker.setVisible(_visible);
126351
+ }
126181
126352
  }
126182
126353
  }
126183
126354
  ngOnDestroy() {
@@ -126289,8 +126460,9 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126289
126460
  }
126290
126461
  /** Creates a combined options object using the passed-in options and the individual inputs. */
126291
126462
  _combineOptions() {
126463
+ var _a, _b;
126292
126464
  const options = this._options || DEFAULT_MARKER_OPTIONS;
126293
- return Object.assign(Object.assign({}, options), { title: this._title || options.title, position: this._position || options.position, label: this._label || options.label, clickable: this._clickable !== undefined ? this._clickable : options.clickable, map: this._googleMap.googleMap });
126465
+ return Object.assign(Object.assign({}, options), { title: this._title || options.title, position: this._position || options.position, label: this._label || options.label, clickable: (_a = this._clickable) !== null && _a !== void 0 ? _a : options.clickable, map: this._googleMap.googleMap, icon: this._icon || options.icon, visible: (_b = this._visible) !== null && _b !== void 0 ? _b : options.visible });
126294
126466
  }
126295
126467
  _assertInitialized() {
126296
126468
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
@@ -126321,6 +126493,8 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126321
126493
  label: [{ type: Input }],
126322
126494
  clickable: [{ type: Input }],
126323
126495
  options: [{ type: Input }],
126496
+ icon: [{ type: Input }],
126497
+ visible: [{ type: Input }],
126324
126498
  animationChanged: [{ type: Output }],
126325
126499
  mapClick: [{ type: Output }],
126326
126500
  clickableChanged: [{ type: Output }],
@@ -126351,6 +126525,8 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126351
126525
  * Use of this source code is governed by an MIT-style license that can be
126352
126526
  * found in the LICENSE file at https://angular.io/license
126353
126527
  */
126528
+ /** Default options for a clusterer. */
126529
+ const DEFAULT_CLUSTERER_OPTIONS = {};
126354
126530
  /**
126355
126531
  * Angular component for implementing a Google Maps Marker Clusterer.
126356
126532
  *
@@ -126375,6 +126551,8 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126375
126551
  * googlemaps.github.io/v3-utility-library/modules/_google_markerclustererplus.html#clusteringend
126376
126552
  */
126377
126553
  this.clusteringend = this._eventManager.getLazyEmitter('clusteringend');
126554
+ /** Emits when a cluster has been clicked. */
126555
+ this.clusterClick = this._eventManager.getLazyEmitter('click');
126378
126556
  this._canInitialize = this._googleMap._isBrowser;
126379
126557
  }
126380
126558
  set averageCenter(averageCenter) {
@@ -126425,8 +126603,17 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126425
126603
  set zoomOnClick(zoomOnClick) {
126426
126604
  this._zoomOnClick = zoomOnClick;
126427
126605
  }
126606
+ set options(options) {
126607
+ this._options = options;
126608
+ }
126428
126609
  ngOnInit() {
126429
126610
  if (this._canInitialize) {
126611
+ const clustererWindow = window;
126612
+ if (!clustererWindow.MarkerClusterer && (typeof ngDevMode === 'undefined' || ngDevMode)) {
126613
+ throw Error('MarkerClusterer class not found, cannot construct a marker cluster. ' +
126614
+ 'Please install the MarkerClustererPlus library: ' +
126615
+ 'https://github.com/googlemaps/js-markerclustererplus');
126616
+ }
126430
126617
  // Create the object outside the zone so its events don't trigger change detection.
126431
126618
  // We'll bring it back in inside the `MapEventManager` only for the events that the
126432
126619
  // user has subscribed to.
@@ -126445,6 +126632,9 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126445
126632
  ngOnChanges(changes) {
126446
126633
  const { markerClusterer: clusterer, ariaLabelFn, _averageCenter, _batchSizeIE, _calculator, _styles, _clusterClass, _enableRetinaIcons, _gridSize, _ignoreHidden, _imageExtension, _imagePath, _imageSizes, _maxZoom, _minimumClusterSize, _title, _zIndex, _zoomOnClick } = this;
126447
126634
  if (clusterer) {
126635
+ if (changes['options']) {
126636
+ clusterer.setOptions(this._combineOptions());
126637
+ }
126448
126638
  if (changes['ariaLabelFn']) {
126449
126639
  clusterer.ariaLabelFn = ariaLabelFn;
126450
126640
  }
@@ -126454,7 +126644,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126454
126644
  if (changes['batchSizeIE'] && _batchSizeIE !== undefined) {
126455
126645
  clusterer.setBatchSizeIE(_batchSizeIE);
126456
126646
  }
126457
- if (changes['calculator'] && _calculator) {
126647
+ if (changes['calculator'] && !!_calculator) {
126458
126648
  clusterer.setCalculator(_calculator);
126459
126649
  }
126460
126650
  if (changes['clusterClass'] && _clusterClass !== undefined) {
@@ -126587,26 +126777,9 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126587
126777
  return this.markerClusterer.getZoomOnClick();
126588
126778
  }
126589
126779
  _combineOptions() {
126590
- return {
126591
- ariaLabelFn: this.ariaLabelFn,
126592
- averageCenter: this._averageCenter,
126593
- batchSize: this.batchSize,
126594
- batchSizeIE: this._batchSizeIE,
126595
- calculator: this._calculator,
126596
- clusterClass: this._clusterClass,
126597
- enableRetinaIcons: this._enableRetinaIcons,
126598
- gridSize: this._gridSize,
126599
- ignoreHidden: this._ignoreHidden,
126600
- imageExtension: this._imageExtension,
126601
- imagePath: this._imagePath,
126602
- imageSizes: this._imageSizes,
126603
- maxZoom: this._maxZoom,
126604
- minimumClusterSize: this._minimumClusterSize,
126605
- styles: this._styles,
126606
- title: this._title,
126607
- zIndex: this._zIndex,
126608
- zoomOnClick: this._zoomOnClick,
126609
- };
126780
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
126781
+ const options = this._options || DEFAULT_CLUSTERER_OPTIONS;
126782
+ return Object.assign(Object.assign({}, options), { ariaLabelFn: (_a = this.ariaLabelFn) !== null && _a !== void 0 ? _a : options.ariaLabelFn, averageCenter: (_b = this._averageCenter) !== null && _b !== void 0 ? _b : options.averageCenter, batchSize: (_c = this.batchSize) !== null && _c !== void 0 ? _c : options.batchSize, batchSizeIE: (_d = this._batchSizeIE) !== null && _d !== void 0 ? _d : options.batchSizeIE, calculator: (_e = this._calculator) !== null && _e !== void 0 ? _e : options.calculator, clusterClass: (_f = this._clusterClass) !== null && _f !== void 0 ? _f : options.clusterClass, enableRetinaIcons: (_g = this._enableRetinaIcons) !== null && _g !== void 0 ? _g : options.enableRetinaIcons, gridSize: (_h = this._gridSize) !== null && _h !== void 0 ? _h : options.gridSize, ignoreHidden: (_j = this._ignoreHidden) !== null && _j !== void 0 ? _j : options.ignoreHidden, imageExtension: (_k = this._imageExtension) !== null && _k !== void 0 ? _k : options.imageExtension, imagePath: (_l = this._imagePath) !== null && _l !== void 0 ? _l : options.imagePath, imageSizes: (_m = this._imageSizes) !== null && _m !== void 0 ? _m : options.imageSizes, maxZoom: (_o = this._maxZoom) !== null && _o !== void 0 ? _o : options.maxZoom, minimumClusterSize: (_p = this._minimumClusterSize) !== null && _p !== void 0 ? _p : options.minimumClusterSize, styles: (_q = this._styles) !== null && _q !== void 0 ? _q : options.styles, title: (_r = this._title) !== null && _r !== void 0 ? _r : options.title, zIndex: (_s = this._zIndex) !== null && _s !== void 0 ? _s : options.zIndex, zoomOnClick: (_t = this._zoomOnClick) !== null && _t !== void 0 ? _t : options.zoomOnClick });
126610
126783
  }
126611
126784
  _watchForMarkerChanges() {
126612
126785
  this._assertInitialized();
@@ -126689,8 +126862,10 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
126689
126862
  title: [{ type: Input }],
126690
126863
  zIndex: [{ type: Input }],
126691
126864
  zoomOnClick: [{ type: Input }],
126865
+ options: [{ type: Input }],
126692
126866
  clusteringbegin: [{ type: Output }],
126693
126867
  clusteringend: [{ type: Output }],
126868
+ clusterClick: [{ type: Output }],
126694
126869
  _markers: [{ type: ContentChildren, args: [MapMarker, { descendants: true },] }]
126695
126870
  };
126696
126871
 
@@ -127090,8 +127265,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
127090
127265
  /**
127091
127266
  * See
127092
127267
  * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.boundsChanged
127093
- */
127094
- this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');
127268
+ */ this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');
127095
127269
  /**
127096
127270
  * See
127097
127271
  * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.click
@@ -127392,6 +127566,132 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
127392
127566
  },] }
127393
127567
  ];
127394
127568
 
127569
+ /**
127570
+ * @license
127571
+ * Copyright Google LLC All Rights Reserved.
127572
+ *
127573
+ * Use of this source code is governed by an MIT-style license that can be
127574
+ * found in the LICENSE file at https://angular.io/license
127575
+ */
127576
+ /**
127577
+ * Angular directive that renders a Google Maps heatmap via the Google Maps JavaScript API.
127578
+ *
127579
+ * See: https://developers.google.com/maps/documentation/javascript/reference/visualization
127580
+ */
127581
+ class MapHeatmapLayer {
127582
+ constructor(_googleMap, _ngZone) {
127583
+ this._googleMap = _googleMap;
127584
+ this._ngZone = _ngZone;
127585
+ }
127586
+ /**
127587
+ * Data shown on the heatmap.
127588
+ * See: https://developers.google.com/maps/documentation/javascript/reference/visualization
127589
+ */
127590
+ set data(data) {
127591
+ this._data = data;
127592
+ }
127593
+ /**
127594
+ * Options used to configure the heatmap. See:
127595
+ * developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions
127596
+ */
127597
+ set options(options) {
127598
+ this._options = options;
127599
+ }
127600
+ ngOnInit() {
127601
+ var _a, _b;
127602
+ if (this._googleMap._isBrowser) {
127603
+ if (!((_b = (_a = window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.visualization) && (typeof ngDevMode === 'undefined' || ngDevMode)) {
127604
+ throw Error('Namespace `google.maps.visualization` not found, cannot construct heatmap. ' +
127605
+ 'Please install the Google Maps JavaScript API with the "visualization" library: ' +
127606
+ 'https://developers.google.com/maps/documentation/javascript/visualization');
127607
+ }
127608
+ // Create the object outside the zone so its events don't trigger change detection.
127609
+ // We'll bring it back in inside the `MapEventManager` only for the events that the
127610
+ // user has subscribed to.
127611
+ this._ngZone.runOutsideAngular(() => {
127612
+ this.heatmap = new google.maps.visualization.HeatmapLayer(this._combineOptions());
127613
+ });
127614
+ this._assertInitialized();
127615
+ this.heatmap.setMap(this._googleMap.googleMap);
127616
+ }
127617
+ }
127618
+ ngOnChanges(changes) {
127619
+ const { _data, heatmap } = this;
127620
+ if (heatmap) {
127621
+ if (changes['options']) {
127622
+ heatmap.setOptions(this._combineOptions());
127623
+ }
127624
+ if (changes['data'] && _data !== undefined) {
127625
+ heatmap.setData(this._normalizeData(_data));
127626
+ }
127627
+ }
127628
+ }
127629
+ ngOnDestroy() {
127630
+ if (this.heatmap) {
127631
+ this.heatmap.setMap(null);
127632
+ }
127633
+ }
127634
+ /**
127635
+ * Gets the data that is currently shown on the heatmap.
127636
+ * See: developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayer
127637
+ */
127638
+ getData() {
127639
+ this._assertInitialized();
127640
+ return this.heatmap.getData();
127641
+ }
127642
+ /** Creates a combined options object using the passed-in options and the individual inputs. */
127643
+ _combineOptions() {
127644
+ const options = this._options || {};
127645
+ return Object.assign(Object.assign({}, options), { data: this._normalizeData(this._data || options.data || []), map: this._googleMap.googleMap });
127646
+ }
127647
+ /**
127648
+ * Most Google Maps APIs support both `LatLng` objects and `LatLngLiteral`. The latter is more
127649
+ * convenient to write out, because the Google Maps API doesn't have to have been loaded in order
127650
+ * to construct them. The `HeatmapLayer` appears to be an exception that only allows a `LatLng`
127651
+ * object, or it throws a runtime error. Since it's more convenient and we expect that Angular
127652
+ * users will load the API asynchronously, we allow them to pass in a `LatLngLiteral` and we
127653
+ * convert it to a `LatLng` object before passing it off to Google Maps.
127654
+ */
127655
+ _normalizeData(data) {
127656
+ const result = [];
127657
+ data.forEach(item => {
127658
+ result.push(isLatLngLiteral(item) ? new google.maps.LatLng(item.lat, item.lng) : item);
127659
+ });
127660
+ return result;
127661
+ }
127662
+ /** Asserts that the heatmap object has been initialized. */
127663
+ _assertInitialized() {
127664
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
127665
+ if (!this._googleMap.googleMap) {
127666
+ throw Error('Cannot access Google Map information before the API has been initialized. ' +
127667
+ 'Please wait for the API to load before trying to interact with it.');
127668
+ }
127669
+ if (!this.heatmap) {
127670
+ throw Error('Cannot interact with a Google Map HeatmapLayer before it has been ' +
127671
+ 'initialized. Please wait for the heatmap to load before trying to interact with it.');
127672
+ }
127673
+ }
127674
+ }
127675
+ }
127676
+ MapHeatmapLayer.decorators = [
127677
+ { type: Directive, args: [{
127678
+ selector: 'map-heatmap-layer',
127679
+ exportAs: 'mapHeatmapLayer',
127680
+ },] }
127681
+ ];
127682
+ MapHeatmapLayer.ctorParameters = () => [
127683
+ { type: GoogleMap },
127684
+ { type: NgZone }
127685
+ ];
127686
+ MapHeatmapLayer.propDecorators = {
127687
+ data: [{ type: Input }],
127688
+ options: [{ type: Input }]
127689
+ };
127690
+ /** Asserts that an object is a `LatLngLiteral`. */
127691
+ function isLatLngLiteral(value) {
127692
+ return value && typeof value.lat === 'number' && typeof value.lng === 'number';
127693
+ }
127694
+
127395
127695
  /**
127396
127696
  * @license
127397
127697
  * Copyright Google LLC All Rights Reserved.
@@ -127404,6 +127704,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
127404
127704
  MapBaseLayer,
127405
127705
  MapBicyclingLayer,
127406
127706
  MapCircle,
127707
+ MapDirectionsRenderer,
127407
127708
  MapGroundOverlay,
127408
127709
  MapInfoWindow,
127409
127710
  MapKmlLayer,
@@ -127414,6 +127715,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
127414
127715
  MapRectangle,
127415
127716
  MapTrafficLayer,
127416
127717
  MapTransitLayer,
127718
+ MapHeatmapLayer,
127417
127719
  ];
127418
127720
  class GoogleMapsModule {
127419
127721
  }
@@ -127424,6 +127726,95 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
127424
127726
  },] }
127425
127727
  ];
127426
127728
 
127729
+ /**
127730
+ * @license
127731
+ * Copyright Google LLC All Rights Reserved.
127732
+ *
127733
+ * Use of this source code is governed by an MIT-style license that can be
127734
+ * found in the LICENSE file at https://angular.io/license
127735
+ */
127736
+ /**
127737
+ * Angular service that wraps the Google Maps DirectionsService from the Google Maps JavaScript
127738
+ * API.
127739
+ *
127740
+ * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService
127741
+ */
127742
+ class MapDirectionsService {
127743
+ constructor(_ngZone) {
127744
+ this._ngZone = _ngZone;
127745
+ }
127746
+ /**
127747
+ * See
127748
+ * developers.google.com/maps/documentation/javascript/reference/directions
127749
+ * #DirectionsService.route
127750
+ */
127751
+ route(request) {
127752
+ return new Observable(observer => {
127753
+ // Initialize the `DirectionsService` lazily since the Google Maps API may
127754
+ // not have been loaded when the provider is instantiated.
127755
+ if (!this._directionsService) {
127756
+ this._directionsService = new google.maps.DirectionsService();
127757
+ }
127758
+ const callback = (result, status) => {
127759
+ this._ngZone.run(() => {
127760
+ observer.next({ result, status });
127761
+ observer.complete();
127762
+ });
127763
+ };
127764
+ this._directionsService.route(request, callback);
127765
+ });
127766
+ }
127767
+ }
127768
+ MapDirectionsService.ɵprov = ɵɵdefineInjectable({ factory: function MapDirectionsService_Factory() { return new MapDirectionsService(ɵɵinject(NgZone)); }, token: MapDirectionsService, providedIn: "root" });
127769
+ MapDirectionsService.decorators = [
127770
+ { type: Injectable, args: [{ providedIn: 'root' },] }
127771
+ ];
127772
+ MapDirectionsService.ctorParameters = () => [
127773
+ { type: NgZone }
127774
+ ];
127775
+
127776
+ /**
127777
+ * @license
127778
+ * Copyright Google LLC All Rights Reserved.
127779
+ *
127780
+ * Use of this source code is governed by an MIT-style license that can be
127781
+ * found in the LICENSE file at https://angular.io/license
127782
+ */
127783
+ /**
127784
+ * Angular service that wraps the Google Maps Geocoder from the Google Maps JavaScript API.
127785
+ * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder
127786
+ */
127787
+ class MapGeocoder {
127788
+ constructor(_ngZone) {
127789
+ this._ngZone = _ngZone;
127790
+ }
127791
+ /**
127792
+ * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode
127793
+ */
127794
+ geocode(request) {
127795
+ return new Observable(observer => {
127796
+ // Initialize the `Geocoder` lazily since the Google Maps API may
127797
+ // not have been loaded when the provider is instantiated.
127798
+ if (!this._geocoder) {
127799
+ this._geocoder = new google.maps.Geocoder();
127800
+ }
127801
+ this._geocoder.geocode(request, (results, status) => {
127802
+ this._ngZone.run(() => {
127803
+ observer.next({ results, status });
127804
+ observer.complete();
127805
+ });
127806
+ });
127807
+ });
127808
+ }
127809
+ }
127810
+ MapGeocoder.ɵprov = ɵɵdefineInjectable({ factory: function MapGeocoder_Factory() { return new MapGeocoder(ɵɵinject(NgZone)); }, token: MapGeocoder, providedIn: "root" });
127811
+ MapGeocoder.decorators = [
127812
+ { type: Injectable, args: [{ providedIn: 'root' },] }
127813
+ ];
127814
+ MapGeocoder.ctorParameters = () => [
127815
+ { type: NgZone }
127816
+ ];
127817
+
127427
127818
  var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
127428
127819
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
127429
127820
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -128085,15 +128476,35 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
128085
128476
  console.warn('Stripe Api was not initialized yet, waiting...');
128086
128477
  yield this.delay(3000);
128087
128478
  if (!Object.prototype.hasOwnProperty.call(window, 'Stripe')) {
128088
- console.error('Stripe Api was not initialized, cannot continue');
128479
+ const error = 'Stripe Api was not initialized, payment widgets cannot load.';
128480
+ console.error(error);
128089
128481
  this.initializing = false;
128482
+ Toastify({
128483
+ text: error,
128484
+ duration: 3000,
128485
+ close: true,
128486
+ stopOnFocus: true,
128487
+ style: {
128488
+ background: '#E14D45',
128489
+ }
128490
+ }).showToast();
128090
128491
  return;
128091
128492
  }
128092
128493
  }
128093
128494
  }
128094
128495
  catch (e) {
128095
- console.error('Stripe Api could not be fetched, cannot continue');
128496
+ const error = 'Stripe Api could not be fetched, payment widgets cannot load.';
128497
+ console.error(error);
128096
128498
  this.initializing = false;
128499
+ Toastify({
128500
+ text: error,
128501
+ duration: 3000,
128502
+ close: true,
128503
+ stopOnFocus: true,
128504
+ style: {
128505
+ background: '#E14D45',
128506
+ }
128507
+ }).showToast();
128097
128508
  return;
128098
128509
  }
128099
128510
  this.Stripe.stripe = window.Stripe(this.publishKey);
@@ -128169,7 +128580,7 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
128169
128580
  }
128170
128581
  fetchCollections() {
128171
128582
  this.collections.forEach((collection) => {
128172
- collection.fetch();
128583
+ collection.fetch().then();
128173
128584
  });
128174
128585
  }
128175
128586
  createElement(id, publishKey, paymentMethodType, options, mountElement) {
@@ -128207,7 +128618,17 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
128207
128618
  elementAddEventListener(id, event, handler) {
128208
128619
  if (isEmpty(this.currentElement) ||
128209
128620
  this.currentElement.id !== id) {
128210
- console.error('The StripeElement for', id, 'no longer exists. Cannot attach listener');
128621
+ const error = `The StripeElement for${id} no longer exists. Cannot attach listener`;
128622
+ console.error(error);
128623
+ Toastify({
128624
+ text: error,
128625
+ duration: 3000,
128626
+ close: true,
128627
+ stopOnFocus: true,
128628
+ style: {
128629
+ background: '#3C90D1',
128630
+ }
128631
+ }).showToast();
128211
128632
  return;
128212
128633
  }
128213
128634
  return this.currentElement.element.addEventListener(event, handler);
@@ -128945,6 +129366,15 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
128945
129366
  }
128946
129367
  handleObservableError(err) {
128947
129368
  console.error(err);
129369
+ Toastify({
129370
+ text: err.toString(),
129371
+ duration: 3000,
129372
+ close: true,
129373
+ stopOnFocus: true,
129374
+ style: {
129375
+ background: '#E14D45',
129376
+ }
129377
+ }).showToast();
128948
129378
  return err;
128949
129379
  }
128950
129380
  isPMExpired(paymentMethod) {
@@ -160838,1173 +161268,6 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
160838
161268
  })
160839
161269
  .catch(err => console.error('@stratusjs/angular failed to initialize!', err));
160840
161270
 
160841
- System.register(["quill", "@stratusjs/core/environment"], function (exports_1, context_1) {
160842
- var quill_1, environment_1, Break, Embed, QuillBreak;
160843
- context_1 && context_1.id;
160844
- return {
160845
- setters: [
160846
- function (quill_1_1) {
160847
- quill_1 = quill_1_1;
160848
- },
160849
- function (environment_1_1) {
160850
- environment_1 = environment_1_1;
160851
- }
160852
- ],
160853
- execute: function () {
160854
- Break = quill_1.default.import('blots/break');
160855
- Embed = quill_1.default.import('blots/embed');
160856
- QuillBreak = class QuillBreak extends Break {
160857
- length() {
160858
- return 1;
160859
- }
160860
- value() {
160861
- return '\n';
160862
- }
160863
- insertInto(parent, ref) {
160864
- if (environment_1.cookie('env')) {
160865
- console.log('insertInto:', parent, ref);
160866
- }
160867
- Embed.prototype.insertInto.call(this, parent, ref);
160868
- }
160869
- };
160870
- exports_1("QuillBreak", QuillBreak);
160871
- QuillBreak.blotName = 'break';
160872
- QuillBreak.tagName = 'BR';
160873
- }
160874
- };
160875
- });
160876
-
160877
- System.register(["quill"], function (exports_1, context_1) {
160878
- var quill_1, BaseImage, ATTRIBUTES, QuillImageFormatPlugin;
160879
- context_1 && context_1.id;
160880
- return {
160881
- setters: [
160882
- function (quill_1_1) {
160883
- quill_1 = quill_1_1;
160884
- }
160885
- ],
160886
- execute: function () {
160887
- BaseImage = quill_1.default.import('formats/image');
160888
- ATTRIBUTES = [
160889
- 'alt',
160890
- 'height',
160891
- 'width',
160892
- 'stratus-src',
160893
- 'stratusSrc'
160894
- ];
160895
- QuillImageFormatPlugin = class QuillImageFormatPlugin extends BaseImage {
160896
- constructor() {
160897
- super(...arguments);
160898
- this.blotName = 'imageCustom';
160899
- this.tagName = 'IMG';
160900
- }
160901
- format(name, value) {
160902
- console.log('format:', name, value, this.domNode.getAttribute('src'));
160903
- if (ATTRIBUTES.indexOf(name) === -1) {
160904
- super.format(name, value);
160905
- return;
160906
- }
160907
- if (!value) {
160908
- this.domNode.removeAttribute(name);
160909
- return;
160910
- }
160911
- if (name === 'stratus-src') {
160912
- console.log('stratus-src:', value);
160913
- }
160914
- if (name === 'stratusSrc') {
160915
- console.log('stratusSrc:', value);
160916
- }
160917
- this.domNode.setAttribute(name, value);
160918
- }
160919
- };
160920
- exports_1("QuillImageFormatPlugin", QuillImageFormatPlugin);
160921
- }
160922
- };
160923
- });
160924
-
160925
- System.register(["@stratusjs/runtime/stratus", "lodash", "quill"], function (exports_1, context_1) {
160926
- var stratus_1, lodash_1, quill_1, QuillInputButtonPlugin;
160927
- context_1 && context_1.id;
160928
- return {
160929
- setters: [
160930
- function (stratus_1_1) {
160931
- stratus_1 = stratus_1_1;
160932
- },
160933
- function (lodash_1_1) {
160934
- lodash_1 = lodash_1_1;
160935
- },
160936
- function (quill_1_1) {
160937
- quill_1 = quill_1_1;
160938
- }
160939
- ],
160940
- execute: function () {
160941
- QuillInputButtonPlugin = class QuillInputButtonPlugin {
160942
- constructor(quill, options) {
160943
- this.debug = false;
160944
- this.buttonHTML = '<i class="fas fa-carrot"></i>';
160945
- this.buttonTitle = 'Input Button';
160946
- this.name = 'inputButton';
160947
- this.eventName = 'input-button';
160948
- this.uid = lodash_1.default.uniqueId(`quill_input_button_`);
160949
- stratus_1.Stratus.Instances[this.uid] = this;
160950
- this.debug = options && options.debug;
160951
- if (!options || typeof options !== 'object') {
160952
- options = {};
160953
- }
160954
- this.buttonHTML = options.buttonHTML || this.buttonHTML;
160955
- this.buttonTitle = options.buttonTitle || this.buttonTitle;
160956
- this.name = options.name || this.name;
160957
- this.eventName = options.eventName || this.eventName;
160958
- this.createToolbarModule(quill);
160959
- }
160960
- createToolbarModule(quill) {
160961
- const toolbarModule = quill.getModule('toolbar');
160962
- if (!toolbarModule) {
160963
- throw new Error(`quill.${this.name} requires the "toolbar" module`);
160964
- }
160965
- this.registerDivModule();
160966
- const toolbarEl = toolbarModule.container;
160967
- const buttonContainer = document.createElement('span');
160968
- buttonContainer.setAttribute('class', 'ql-formats');
160969
- const button = document.createElement('button');
160970
- button.innerHTML = this.buttonHTML;
160971
- button.title = this.buttonTitle;
160972
- button.onclick = (e) => {
160973
- e.preventDefault();
160974
- this.onClick(quill);
160975
- };
160976
- buttonContainer.appendChild(button);
160977
- toolbarEl.appendChild(buttonContainer);
160978
- }
160979
- registerDivModule() {
160980
- const Block = quill_1.default.import('blots/block');
160981
- class Div extends Block {
160982
- }
160983
- Div.tagName = 'div';
160984
- Div.blotName = 'div';
160985
- Div.allowedChildren = Block.allowedChildren;
160986
- Div.allowedChildren.push(Block);
160987
- quill_1.default.register(Div);
160988
- }
160989
- findUID(el) {
160990
- if ('uid' in el.dataset) {
160991
- return el.dataset.uid;
160992
- }
160993
- return this.findUID(el.parentElement);
160994
- }
160995
- getInstance(uid) {
160996
- if (!(uid in stratus_1.Stratus.Instances)) {
160997
- return undefined;
160998
- }
160999
- return stratus_1.Stratus.Instances[uid];
161000
- }
161001
- onClick(quill) {
161002
- const container = quill.container;
161003
- const uid = this.findUID(container);
161004
- const instance = this.getInstance(uid);
161005
- if (!instance) {
161006
- return;
161007
- }
161008
- instance.trigger(this.eventName, null, this);
161009
- }
161010
- trigger(name, data, callee) {
161011
- if (this.debug) {
161012
- console.log(`quill.${this.name}.trigger:`, name, data, callee);
161013
- }
161014
- }
161015
- };
161016
- exports_1("QuillInputButtonPlugin", QuillInputButtonPlugin);
161017
- }
161018
- };
161019
- });
161020
-
161021
- System.register(["quill"], function (exports_1, context_1) {
161022
- var quill_1, debug, Logger, QuillHtmlEditPlugin;
161023
- context_1 && context_1.id;
161024
- function $create(elName) {
161025
- return document.createElement(elName);
161026
- }
161027
- function $setAttr(el, key, value) {
161028
- return el.setAttribute(key, value);
161029
- }
161030
- function launchPopupEditor(quill, options) {
161031
- const htmlFromEditor = quill.container.querySelector('.ql-editor').innerHTML;
161032
- const popupContainer = $create('div');
161033
- const overlayContainer = $create('div');
161034
- const msg = options.msg || 'Edit HTML here, when you click "OK" the quill editor\'s contents will be replaced';
161035
- const cancelText = options.cancelText || 'Cancel';
161036
- const okText = options.okText || 'Ok';
161037
- $setAttr(overlayContainer, 'class', 'ql-html-overlayContainer');
161038
- $setAttr(popupContainer, 'class', 'ql-html-popupContainer');
161039
- const popupTitle = $create('i');
161040
- $setAttr(popupTitle, 'class', 'ql-html-popupTitle');
161041
- popupTitle.innerText = msg;
161042
- const textContainer = $create('div');
161043
- textContainer.appendChild(popupTitle);
161044
- $setAttr(textContainer, 'class', 'ql-html-textContainer');
161045
- const textArea = $create('textarea');
161046
- $setAttr(textArea, 'class', 'ql-html-textArea');
161047
- textArea.value = formatHTML(htmlFromEditor);
161048
- const buttonCancel = $create('button');
161049
- buttonCancel.innerHTML = cancelText;
161050
- $setAttr(buttonCancel, 'class', 'ql-html-buttonCancel');
161051
- const buttonOk = $create('button');
161052
- buttonOk.innerHTML = okText;
161053
- const buttonGroup = $create('div');
161054
- $setAttr(buttonGroup, 'class', 'ql-html-buttonGroup');
161055
- buttonGroup.appendChild(buttonCancel);
161056
- buttonGroup.appendChild(buttonOk);
161057
- textContainer.appendChild(textArea);
161058
- textContainer.appendChild(buttonGroup);
161059
- popupContainer.appendChild(textContainer);
161060
- overlayContainer.appendChild(popupContainer);
161061
- document.body.appendChild(overlayContainer);
161062
- buttonCancel.onclick = () => {
161063
- document.body.removeChild(overlayContainer);
161064
- };
161065
- overlayContainer.onclick = buttonCancel.onclick;
161066
- popupContainer.onclick = (e) => {
161067
- e.preventDefault();
161068
- e.stopPropagation();
161069
- };
161070
- buttonOk.onclick = () => {
161071
- const output = textArea.value.split(/\r?\n/g).map((el) => el.trim());
161072
- const noNewlines = output.join('');
161073
- quill.container.querySelector('.ql-editor').innerHTML = noNewlines;
161074
- document.body.removeChild(overlayContainer);
161075
- };
161076
- }
161077
- function formatHTML(code) {
161078
- const whitespace = ' '.repeat(2);
161079
- let currentIndent = 0;
161080
- const newlineChar = '\n';
161081
- let char = null;
161082
- let nextChar = null;
161083
- let result = '';
161084
- for (let pos = 0; pos <= code.length; pos++) {
161085
- char = code.substr(pos, 1);
161086
- nextChar = code.substr(pos + 1, 1);
161087
- const isBrTag = code.substr(pos, 4) === '<br>';
161088
- const isOpeningTag = char === '<' && nextChar !== '/' && !isBrTag;
161089
- const isClosingTag = char === '<' && nextChar === '/' && !isBrTag;
161090
- if (isBrTag) {
161091
- result += newlineChar;
161092
- currentIndent--;
161093
- pos += 4;
161094
- }
161095
- if (isOpeningTag) {
161096
- result += newlineChar + whitespace.repeat(currentIndent);
161097
- currentIndent++;
161098
- }
161099
- else if (isClosingTag) {
161100
- if (--currentIndent < 0) {
161101
- currentIndent = 0;
161102
- }
161103
- result += newlineChar + whitespace.repeat(currentIndent);
161104
- }
161105
- else if (char === ' ' && nextChar === ' ') {
161106
- char = '';
161107
- }
161108
- else if (char === newlineChar) {
161109
- if (code.substr(pos, code.substr(pos).indexOf('<')).trim() === '') {
161110
- char = '';
161111
- }
161112
- }
161113
- result += char;
161114
- }
161115
- Logger.log('formatHTML', {
161116
- before: code,
161117
- after: result
161118
- });
161119
- return result;
161120
- }
161121
- return {
161122
- setters: [
161123
- function (quill_1_1) {
161124
- quill_1 = quill_1_1;
161125
- }
161126
- ],
161127
- execute: function () {
161128
- debug = false;
161129
- Logger = {
161130
- prefixString() {
161131
- return `</> quill-html-edit-button: `;
161132
- },
161133
- get log() {
161134
- if (!debug) {
161135
- return () => { };
161136
- }
161137
- const boundLogFn = console.log.bind(console, this.prefixString());
161138
- return boundLogFn;
161139
- }
161140
- };
161141
- QuillHtmlEditPlugin = class QuillHtmlEditPlugin {
161142
- constructor(quill, options) {
161143
- debug = options && options.debug;
161144
- Logger.log('logging enabled');
161145
- const toolbarModule = quill.getModule('toolbar');
161146
- if (!toolbarModule) {
161147
- throw new Error('quill.htmlEditButton requires the "toolbar" module to be included too');
161148
- }
161149
- this.registerDivModule();
161150
- const toolbarEl = toolbarModule.container;
161151
- const buttonContainer = $create('span');
161152
- $setAttr(buttonContainer, 'class', 'ql-formats');
161153
- const button = $create('button');
161154
- button.innerHTML = options.buttonHTML || '&lt;&gt;';
161155
- button.title = options.buttonTitle || 'Show HTML source';
161156
- button.onclick = (e) => {
161157
- e.preventDefault();
161158
- launchPopupEditor(quill, options);
161159
- };
161160
- buttonContainer.appendChild(button);
161161
- toolbarEl.appendChild(buttonContainer);
161162
- }
161163
- registerDivModule() {
161164
- const Block = quill_1.default.import('blots/block');
161165
- class Div extends Block {
161166
- }
161167
- Div.tagName = 'div';
161168
- Div.blotName = 'div';
161169
- Div.allowedChildren = Block.allowedChildren;
161170
- Div.allowedChildren.push(Block);
161171
- quill_1.default.register(Div);
161172
- }
161173
- };
161174
- exports_1("QuillHtmlEditPlugin", QuillHtmlEditPlugin);
161175
- exports_1("default", QuillHtmlEditPlugin);
161176
- }
161177
- };
161178
- });
161179
-
161180
- System.register(["reflect-metadata", "lodash", "@angular/core"], function (exports_1, context_1) {
161181
- var lodash_1, core_1, RootComponent;
161182
- context_1 && context_1.id;
161183
- return {
161184
- setters: [
161185
- function (_1) {
161186
- },
161187
- function (lodash_1_1) {
161188
- lodash_1 = lodash_1_1;
161189
- },
161190
- function (core_1_1) {
161191
- core_1 = core_1_1;
161192
- }
161193
- ],
161194
- execute: function () {
161195
- RootComponent = class RootComponent {
161196
- hydrate(elementRef, sanitizer, attrs) {
161197
- lodash_1.default.forEach(attrs, (attr) => {
161198
- const metaDataKeys = Reflect.getMetadataKeys(this, attr);
161199
- if (!lodash_1.default.includes(metaDataKeys, 'design:type')) {
161200
- return;
161201
- }
161202
- const attrKebab = lodash_1.default.kebabCase(attr);
161203
- const variants = [
161204
- attrKebab,
161205
- 'data-' + attrKebab
161206
- ];
161207
- const variant = lodash_1.default.find(variants, (v) => elementRef.nativeElement.hasAttribute(v));
161208
- if (lodash_1.default.isEmpty(variant)) {
161209
- return;
161210
- }
161211
- const value = sanitizer.sanitize(core_1.SecurityContext.HTML, elementRef.nativeElement.getAttribute(variant));
161212
- lodash_1.default.set(this, attr, value);
161213
- });
161214
- }
161215
- };
161216
- exports_1("RootComponent", RootComponent);
161217
- }
161218
- };
161219
- });
161220
-
161221
- System.register(["@angular/forms", "@angular/core", "froala-editor"], function (exports_1, context_1) {
161222
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
161223
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
161224
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
161225
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
161226
- return c > 3 && r && Object.defineProperty(target, key, r), r;
161227
- };
161228
- var __metadata = (this && this.__metadata) || function (k, v) {
161229
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
161230
- };
161231
- var FroalaEditorDirective_1, forms_1, core_1, froala_editor_1, FroalaEditorDirective;
161232
- context_1 && context_1.id;
161233
- return {
161234
- setters: [
161235
- function (forms_1_1) {
161236
- forms_1 = forms_1_1;
161237
- },
161238
- function (core_1_1) {
161239
- core_1 = core_1_1;
161240
- },
161241
- function (froala_editor_1_1) {
161242
- froala_editor_1 = froala_editor_1_1;
161243
- }
161244
- ],
161245
- execute: function () {
161246
- FroalaEditorDirective = FroalaEditorDirective_1 = class FroalaEditorDirective {
161247
- constructor(el, zone) {
161248
- this.zone = zone;
161249
- this._opts = {
161250
- immediateAngularModelUpdate: false,
161251
- angularIgnoreAttrs: null
161252
- };
161253
- this.SPECIAL_TAGS = ['img', 'button', 'input', 'a'];
161254
- this.INNER_HTML_ATTR = 'innerHTML';
161255
- this._hasSpecialTag = false;
161256
- this._editorInitialized = false;
161257
- this._oldModel = null;
161258
- this.froalaModelChange = new core_1.EventEmitter();
161259
- this.froalaInit = new core_1.EventEmitter();
161260
- this.onChange = (_) => {
161261
- };
161262
- this.onTouched = () => {
161263
- };
161264
- const element = el.nativeElement;
161265
- if (this.SPECIAL_TAGS.indexOf(element.tagName.toLowerCase()) != -1) {
161266
- this._hasSpecialTag = true;
161267
- }
161268
- this._element = element;
161269
- this.zone = zone;
161270
- }
161271
- set froalaEditor(opts) {
161272
- this._opts = this.clone(opts || this._opts);
161273
- this._opts = Object.assign({}, this._opts);
161274
- }
161275
- set froalaModel(content) {
161276
- this.updateEditor(content);
161277
- }
161278
- writeValue(content) {
161279
- this.updateEditor(content);
161280
- }
161281
- registerOnChange(fn) {
161282
- this.onChange = fn;
161283
- }
161284
- registerOnTouched(fn) {
161285
- this.onTouched = fn;
161286
- }
161287
- clone(item) {
161288
- const me = this;
161289
- if (!item) {
161290
- return item;
161291
- }
161292
- const types = [Number, String, Boolean];
161293
- let result;
161294
- types.forEach((type) => {
161295
- if (item instanceof type) {
161296
- result = type(item);
161297
- }
161298
- });
161299
- if (typeof result === 'undefined') {
161300
- if (Object.prototype.toString.call(item) === '[object Array]') {
161301
- result = [];
161302
- item.forEach((child, index, array) => {
161303
- result[index] = me.clone(child);
161304
- });
161305
- }
161306
- else if (typeof item === 'object') {
161307
- if (item.nodeType && typeof item.cloneNode === 'function') {
161308
- result = item.cloneNode(true);
161309
- }
161310
- else if (!item.prototype) {
161311
- if (item instanceof Date) {
161312
- result = new Date(item);
161313
- }
161314
- else {
161315
- result = {};
161316
- for (const i in item) {
161317
- result[i] = me.clone(item[i]);
161318
- }
161319
- }
161320
- }
161321
- else {
161322
- {
161323
- result = item;
161324
- }
161325
- }
161326
- }
161327
- else {
161328
- result = item;
161329
- }
161330
- }
161331
- return result;
161332
- }
161333
- updateEditor(content) {
161334
- if (JSON.stringify(this._oldModel) === JSON.stringify(content)) {
161335
- return;
161336
- }
161337
- if (!this._hasSpecialTag) {
161338
- this._oldModel = content;
161339
- }
161340
- else {
161341
- this._model = content;
161342
- }
161343
- if (this._editorInitialized) {
161344
- if (!this._hasSpecialTag) {
161345
- this._editor.html.set(content);
161346
- }
161347
- else {
161348
- this.setContent();
161349
- }
161350
- }
161351
- else {
161352
- if (!this._hasSpecialTag) {
161353
- this._element.innerHTML = content || '';
161354
- }
161355
- else {
161356
- this.setContent();
161357
- }
161358
- }
161359
- }
161360
- updateModel() {
161361
- this.zone.run(() => {
161362
- let modelContent = null;
161363
- if (this._hasSpecialTag) {
161364
- const attributeNodes = this._element.attributes;
161365
- const attrs = {};
161366
- for (let i = 0; i < attributeNodes.length; i++) {
161367
- const attrName = attributeNodes[i].name;
161368
- if (this._opts.angularIgnoreAttrs && this._opts.angularIgnoreAttrs.indexOf(attrName) != -1) {
161369
- continue;
161370
- }
161371
- attrs[attrName] = attributeNodes[i].value;
161372
- }
161373
- if (this._element.innerHTML) {
161374
- attrs[this.INNER_HTML_ATTR] = this._element.innerHTML;
161375
- }
161376
- modelContent = attrs;
161377
- }
161378
- else {
161379
- const returnedHtml = this._editor.html.get();
161380
- if (typeof returnedHtml === 'string') {
161381
- modelContent = returnedHtml;
161382
- }
161383
- }
161384
- if (this._oldModel !== modelContent) {
161385
- this._oldModel = modelContent;
161386
- this.froalaModelChange.emit(modelContent);
161387
- this.onChange(modelContent);
161388
- }
161389
- });
161390
- }
161391
- registerEvent(eventName, callback) {
161392
- if (!eventName || !callback) {
161393
- return;
161394
- }
161395
- if (!this._opts.events) {
161396
- this._opts.events = {};
161397
- }
161398
- this._opts.events[eventName] = callback;
161399
- }
161400
- initListeners() {
161401
- const self = this;
161402
- if (this._editor.events) {
161403
- this._editor.events.on('contentChanged', function () {
161404
- self.updateModel();
161405
- });
161406
- this._editor.events.on('mousedown', function () {
161407
- setTimeout(function () {
161408
- self.onTouched();
161409
- }, 0);
161410
- });
161411
- if (this._opts.immediateAngularModelUpdate) {
161412
- this._editor.events.on('keyup', function () {
161413
- setTimeout(function () {
161414
- self.updateModel();
161415
- }, 0);
161416
- });
161417
- }
161418
- }
161419
- this._editorInitialized = true;
161420
- }
161421
- createEditor() {
161422
- if (this._editorInitialized) {
161423
- return;
161424
- }
161425
- this.setContent(true);
161426
- this.zone.runOutsideAngular(() => {
161427
- if (!this._opts.events) {
161428
- this._opts.events = {};
161429
- }
161430
- this.registerEvent('initialized', this._opts.events && this._opts.events.initialized);
161431
- const existingInitCallback = this._opts.events.initialized;
161432
- if (!this._opts.events.initialized || !this._opts.events.initialized.overridden) {
161433
- this._opts.events.initialized = () => {
161434
- this.initListeners();
161435
- existingInitCallback && existingInitCallback.call(this._editor, this);
161436
- };
161437
- this._opts.events.initialized.overridden = true;
161438
- }
161439
- this._editor = new froala_editor_1.default(this._element, this._opts);
161440
- });
161441
- }
161442
- setHtml() {
161443
- this._editor.html.set(this._model || '');
161444
- this._editor.undo.reset();
161445
- this._editor.undo.saveStep();
161446
- }
161447
- setContent(firstTime = false) {
161448
- const self = this;
161449
- if (this._model || this._model === '') {
161450
- this._oldModel = this._model;
161451
- if (this._hasSpecialTag) {
161452
- const tags = this._model;
161453
- if (tags) {
161454
- for (const attr in tags) {
161455
- if (tags.hasOwnProperty(attr) && attr != this.INNER_HTML_ATTR) {
161456
- this._element.setAttribute(attr, tags[attr]);
161457
- }
161458
- }
161459
- if (tags.hasOwnProperty(this.INNER_HTML_ATTR)) {
161460
- this._element.innerHTML = tags[this.INNER_HTML_ATTR];
161461
- }
161462
- }
161463
- }
161464
- else {
161465
- if (firstTime) {
161466
- this.registerEvent('initialized', function () {
161467
- self.setHtml();
161468
- });
161469
- }
161470
- else {
161471
- self.setHtml();
161472
- }
161473
- }
161474
- }
161475
- }
161476
- destroyEditor() {
161477
- if (this._editorInitialized) {
161478
- this._editor.destroy();
161479
- this._editorInitialized = false;
161480
- }
161481
- }
161482
- getEditor() {
161483
- if (this._element) {
161484
- return this._editor;
161485
- }
161486
- return null;
161487
- }
161488
- generateManualController() {
161489
- const controls = {
161490
- initialize: this.createEditor.bind(this),
161491
- destroy: this.destroyEditor.bind(this),
161492
- getEditor: this.getEditor.bind(this),
161493
- };
161494
- this.froalaInit.emit(controls);
161495
- }
161496
- ngAfterViewInit() {
161497
- if (!this.froalaInit.observers.length) {
161498
- this.createEditor();
161499
- }
161500
- else {
161501
- this.generateManualController();
161502
- }
161503
- }
161504
- ngOnDestroy() {
161505
- this.destroyEditor();
161506
- }
161507
- };
161508
- __decorate([
161509
- core_1.Input(),
161510
- __metadata("design:type", Object),
161511
- __metadata("design:paramtypes", [Object])
161512
- ], FroalaEditorDirective.prototype, "froalaEditor", null);
161513
- __decorate([
161514
- core_1.Input(),
161515
- __metadata("design:type", Object),
161516
- __metadata("design:paramtypes", [Object])
161517
- ], FroalaEditorDirective.prototype, "froalaModel", null);
161518
- __decorate([
161519
- core_1.Output(),
161520
- __metadata("design:type", core_1.EventEmitter)
161521
- ], FroalaEditorDirective.prototype, "froalaModelChange", void 0);
161522
- __decorate([
161523
- core_1.Output(),
161524
- __metadata("design:type", core_1.EventEmitter)
161525
- ], FroalaEditorDirective.prototype, "froalaInit", void 0);
161526
- FroalaEditorDirective = FroalaEditorDirective_1 = __decorate([
161527
- core_1.Directive({
161528
- selector: '[froalaEditor]',
161529
- exportAs: 'froalaEditor',
161530
- providers: [
161531
- {
161532
- provide: forms_1.NG_VALUE_ACCESSOR, useExisting: core_1.forwardRef(() => FroalaEditorDirective_1),
161533
- multi: true
161534
- }
161535
- ]
161536
- }),
161537
- __metadata("design:paramtypes", [core_1.ElementRef, core_1.NgZone])
161538
- ], FroalaEditorDirective);
161539
- exports_1("FroalaEditorDirective", FroalaEditorDirective);
161540
- }
161541
- };
161542
- });
161543
-
161544
- System.register(["@angular/core", "@stratusjs/angular/froala/editor/froala-editor.directive"], function (exports_1, context_1) {
161545
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
161546
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
161547
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
161548
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
161549
- return c > 3 && r && Object.defineProperty(target, key, r), r;
161550
- };
161551
- var FroalaEditorModule_1, core_1, froala_editor_directive_1, FroalaEditorModule;
161552
- context_1 && context_1.id;
161553
- return {
161554
- setters: [
161555
- function (core_1_1) {
161556
- core_1 = core_1_1;
161557
- },
161558
- function (froala_editor_directive_1_1) {
161559
- froala_editor_directive_1 = froala_editor_directive_1_1;
161560
- }
161561
- ],
161562
- execute: function () {
161563
- FroalaEditorModule = FroalaEditorModule_1 = class FroalaEditorModule {
161564
- static forRoot() {
161565
- return { ngModule: FroalaEditorModule_1, providers: [] };
161566
- }
161567
- };
161568
- FroalaEditorModule = FroalaEditorModule_1 = __decorate([
161569
- core_1.NgModule({
161570
- declarations: [froala_editor_directive_1.FroalaEditorDirective],
161571
- exports: [froala_editor_directive_1.FroalaEditorDirective]
161572
- })
161573
- ], FroalaEditorModule);
161574
- exports_1("FroalaEditorModule", FroalaEditorModule);
161575
- }
161576
- };
161577
- });
161578
-
161579
- System.register(["@stratusjs/angular/froala/editor/froala-editor.directive", "@stratusjs/angular/froala/editor/froala-editor.module"], function (exports_1, context_1) {
161580
- context_1 && context_1.id;
161581
- return {
161582
- setters: [
161583
- function (froala_editor_directive_1_1) {
161584
- exports_1({
161585
- "FroalaEditorDirective": froala_editor_directive_1_1["FroalaEditorDirective"]
161586
- });
161587
- },
161588
- function (froala_editor_module_1_1) {
161589
- exports_1({
161590
- "FroalaEditorModule": froala_editor_module_1_1["FroalaEditorModule"]
161591
- });
161592
- }
161593
- ],
161594
- execute: function () {
161595
- }
161596
- };
161597
- });
161598
-
161599
- /*!
161600
- * froala_editor v3.2.3 (https://www.froala.com/wysiwyg-editor)
161601
- * License https://froala.com/wysiwyg-editor/terms/
161602
- * Copyright 2014-2020 Froala Labs
161603
- */
161604
- System.register(["froala-editor"], function (exports_1, context_1) {
161605
- var froala_editor_1;
161606
- context_1 && context_1.id;
161607
- return {
161608
- setters: [
161609
- function (froala_editor_1_1) {
161610
- froala_editor_1 = froala_editor_1_1;
161611
- }
161612
- ],
161613
- execute: function () {
161614
- /*!
161615
- * froala_editor v3.2.3 (https://www.froala.com/wysiwyg-editor)
161616
- * License https://froala.com/wysiwyg-editor/terms/
161617
- * Copyright 2014-2020 Froala Labs
161618
- */
161619
- if (((froala_editor_1.default && froala_editor_1.default.hasOwnProperty('default') ? froala_editor_1.default.default : froala_editor_1.default),
161620
- Object.assign(froala_editor_1.default.DEFAULTS, {
161621
- imageManagerLoadURL: 'https://i.froala.com/load-files',
161622
- imageManagerLoadMethod: 'get',
161623
- imageManagerLoadParams: {},
161624
- imageManagerPreloader: null,
161625
- imageManagerDeleteURL: '',
161626
- imageManagerDeleteMethod: 'post',
161627
- imageManagerDeleteParams: {},
161628
- imageManagerPageSize: 12,
161629
- imageManagerScrollOffset: 20,
161630
- imageManagerToggleTags: !0,
161631
- }),
161632
- (froala_editor_1.default.PLUGINS.imageManagerCustom = (s) => {
161633
- let g, l, i, o, d, m, c, f, u, p, h, v = s.$, M = 'image_manager', e = 10, b = 11, w = 12, C = 13, L = 14, D = 15, t = 21, r = 22, n = {};
161634
- function y() {
161635
- let e = v(window).outerWidth();
161636
- return e < 768 ? 2 : e < 1200 ? 3 : 4;
161637
- }
161638
- function I() {
161639
- d.empty();
161640
- for (let e = 0; e < h; e++) {
161641
- d.append('<div class="fr-list-column"></div>');
161642
- }
161643
- }
161644
- function P() {
161645
- if (u < c.length
161646
- && (d.outerHeight() <= i.outerHeight() + s.opts.imageManagerScrollOffset
161647
- || i.scrollTop() + s.opts.imageManagerScrollOffset > d.outerHeight() - i.outerHeight())) {
161648
- f++;
161649
- for (let e = s.opts.imageManagerPageSize * (f - 1); e < Math.min(c.length, s.opts.imageManagerPageSize * f); e++) {
161650
- a(c[e]);
161651
- }
161652
- }
161653
- }
161654
- function a(n) {
161655
- let i = new Image(), o = v(document.createElement('div'))
161656
- .attr('class', 'fr-image-container fr-empty fr-image-' + p++)
161657
- .attr('data-loading', s.language.translate('Loading') + '..')
161658
- .attr('data-deleting', s.language.translate('Deleting') + '..');
161659
- R(!1),
161660
- (i.onload = function () {
161661
- o.height(Math.floor((o.width() / i.width) * i.height));
161662
- let t = v(document.createElement('img'));
161663
- if (n.thumb) {
161664
- t.attr('src', n.thumb);
161665
- }
161666
- else {
161667
- if ((O(L, n), !n.url)) {
161668
- return O(D, n), !1;
161669
- }
161670
- t.attr('src', n.url);
161671
- }
161672
- if ((n.url && t.attr('data-url', n.url), n.tag)) {
161673
- if ((l.find('.fr-modal-more.fr-not-available').removeClass('fr-not-available'), l.find('.fr-modal-tags').show(), 0 <= n.tag.indexOf(','))) {
161674
- for (let e = n.tag.split(','), a = 0; a < e.length; a++) {
161675
- (e[a] =
161676
- e[a].trim()), 0 === m.find('a[title="'.concat(e[a], '"]')).length && m.append('<a role="button" title="'.concat(e[a], '">').concat(e[a], '</a>'));
161677
- }
161678
- t.attr('data-tag', e.join());
161679
- }
161680
- else {
161681
- 0 === m.find('a[title="'.concat(n.tag.trim(), '"]')).length && m.append('<a role="button" title="'.concat(n.tag.trim(), '">').concat(n.tag.trim(), '</a>')), t.attr('data-tag', n.tag.trim());
161682
- }
161683
- }
161684
- for (let r in (n.name && t.attr('alt', n.name), n)) {
161685
- n.hasOwnProperty(r) && 'thumb' !== r && 'url' !== r && 'tag' !== r && t.attr('data-'.concat(r), n[r]);
161686
- }
161687
- o
161688
- .append(t)
161689
- .append(v(s.icon.create('imageManagerDelete')).addClass('fr-delete-img').attr('title', s.language.translate('Delete')))
161690
- .append(v(s.icon.create('imageManagerInsert')).addClass('fr-insert-img').attr('title', s.language.translate('Insert'))),
161691
- m.find('.fr-selected-tag').each(function (e, a) {
161692
- j(t, a.text) || o.hide();
161693
- }),
161694
- t.on('load', function () {
161695
- o.removeClass('fr-empty'),
161696
- o.height('auto'),
161697
- u++,
161698
- E(T(parseInt(t
161699
- .parent()
161700
- .attr('class')
161701
- .match(/fr-image-(\d+)/)[1], 10) + 1)),
161702
- R(!1),
161703
- u % s.opts.imageManagerPageSize === 0 && P();
161704
- }),
161705
- s.events.trigger('imageManager.imageLoaded', [t]);
161706
- }),
161707
- (i.onerror = () => {
161708
- u++,
161709
- o.remove(),
161710
- E(T(parseInt(o.attr('class').match(/fr-image-(\d+)/)[1], 10) + 1)),
161711
- O(e, n),
161712
- u % s.opts.imageManagerPageSize === 0 && P();
161713
- }),
161714
- (i.src = n.thumb || n.url),
161715
- S().append(o);
161716
- }
161717
- function S() {
161718
- let r, n;
161719
- return (d.find('.fr-list-column').each((e, a) => {
161720
- let t = v(a);
161721
- 0 === e ? ((n = t.outerHeight()), (r = t)) : t.outerHeight() < n && ((n = t.outerHeight()), (r = t));
161722
- }),
161723
- r);
161724
- }
161725
- function T(e) {
161726
- e === undefined && (e = 0);
161727
- for (let a = [], t = p - 1; e <= t; t--) {
161728
- let r = d.find('.fr-image-'.concat(t));
161729
- r.length && (a.push(r), v(document.createElement('div')).attr('id', 'fr-image-hidden-container').append(r), d.find('.fr-image-'.concat(t)).remove());
161730
- }
161731
- return a;
161732
- }
161733
- function E(e) {
161734
- for (let a = e.length - 1; 0 <= a; a--) {
161735
- S().append(e[a]);
161736
- }
161737
- }
161738
- function R(e) {
161739
- if ((e === undefined && (e = !0), !g.isVisible())) {
161740
- return !0;
161741
- }
161742
- let a = y();
161743
- if (a !== h) {
161744
- h = a;
161745
- let t = T();
161746
- I(), E(t);
161747
- }
161748
- s.modals.resize(M), e && P();
161749
- }
161750
- function U(e) {
161751
- for (let a, t = e[0].attributes, r = t.length, n = {}; r--;) {
161752
- t[r] && 'src' !== (a = t[r].name) && (n[a] = t[r].value);
161753
- }
161754
- return n;
161755
- }
161756
- function x(e) {
161757
- let a = v(e.currentTarget).siblings('img'), t = g.data('instance') || s, r = g.data('current-image');
161758
- if ((s.modals.hide(M), t.image.showProgressBar(), r)) {
161759
- r.data('fr-old-src', r.attr('src')), r.trigger('click');
161760
- }
161761
- else {
161762
- t.events.focus(!0), t.selection.restore();
161763
- let n = t.position.getBoundingRect(), i = n.left + n.width / 2 + v(s.doc).scrollLeft(), o = n.top + n.height + v(s.doc).scrollTop();
161764
- t.popups.setContainer('image.insert', s.$sc), t.popups.show('image.insert', i, o);
161765
- }
161766
- t.image.insert(a.data('url'), !1, U(a), r);
161767
- }
161768
- function H(e) {
161769
- let i = v(e.currentTarget).siblings('img'), a = s.language.translate('Are you sure? Image will be deleted.');
161770
- confirm(a) &&
161771
- (s.opts.imageManagerDeleteURL
161772
- ? !1 !== s.events.trigger('imageManager.beforeDeleteImage', [i]) &&
161773
- (i.parent().addClass('fr-image-deleting'),
161774
- v(this).ajax({
161775
- method: s.opts.imageManagerDeleteMethod,
161776
- url: s.opts.imageManagerDeleteURL,
161777
- data: Object.assign(Object.assign({ src: i.attr('src') }, U(i)), s.opts.imageManagerDeleteParams),
161778
- crossDomain: s.opts.requestWithCORS,
161779
- withCredentials: s.opts.requestWithCredentials,
161780
- headers: s.opts.requestHeaders,
161781
- done(e, a, t) {
161782
- s.events.trigger('imageManager.imageDeleted', [e]);
161783
- let r = T(parseInt(i
161784
- .parent()
161785
- .attr('class')
161786
- .match(/fr-image-(\d+)/)[1], 10) + 1);
161787
- i.parent().remove(),
161788
- E(r),
161789
- (function n() {
161790
- g.find('#fr-modal-tags > a').each(function () {
161791
- 0 === g.find('#fr-image-list [data-tag*="'.concat(v(this).text(), '"]')).length && v(this).removeClass('fr-selected-tag').hide();
161792
- }),
161793
- _();
161794
- })(),
161795
- R(!0);
161796
- },
161797
- fail(e) {
161798
- O(t, e.response || e.responseText);
161799
- },
161800
- }))
161801
- : O(r));
161802
- }
161803
- function O(e, a) {
161804
- 10 <= e && e < 20
161805
- ? o.hide()
161806
- : 20 <= e && e < 30 && v('.fr-image-deleting').removeClass('fr-image-deleting'), s.events.trigger('imageManager.error', [
161807
- { code: e, message: n[e] },
161808
- a
161809
- ]);
161810
- }
161811
- function q() {
161812
- let e = l.find('.fr-modal-head-line').outerHeight(), a = m.outerHeight();
161813
- l.toggleClass('fr-show-tags'), l.hasClass('fr-show-tags')
161814
- ? (l.css('height', e + a), i.css('marginTop', e + a), m.find('a').css('opacity', 1))
161815
- : (l.css('height', e), i.css('marginTop', e), m.find('a').css('opacity', 0));
161816
- }
161817
- function _() {
161818
- let e = m.find('.fr-selected-tag');
161819
- 0 < e.length
161820
- ? (d.find('img').parents().show(),
161821
- e.each((e, r) => {
161822
- d.find('img').each(function (e, a) {
161823
- let t = v(a);
161824
- j(t, r.text) || t.parent().hide();
161825
- });
161826
- }))
161827
- : d.find('img').parents().show(),
161828
- E(T()),
161829
- P();
161830
- }
161831
- function k(e) {
161832
- e.preventDefault();
161833
- let a = v(e.currentTarget);
161834
- a.toggleClass('fr-selected-tag'), s.opts.imageManagerToggleTags && a.siblings('a').removeClass('fr-selected-tag'), _();
161835
- }
161836
- function j(e, a) {
161837
- for (let t = (e.attr('data-tag') || '').split(','), r = 0; r < t.length; r++) {
161838
- if (t[r] === a) {
161839
- return !0;
161840
- }
161841
- }
161842
- return !1;
161843
- }
161844
- return ((n[e] = 'Image cannot be loaded from the passed link.'),
161845
- (n[b] = 'Error during load images request.'),
161846
- (n[w] = 'Missing imageManagerLoadURL option.'),
161847
- (n[C] = 'Parsing load response failed.'),
161848
- (n[L] = 'Missing image thumb.'),
161849
- (n[D] = 'Missing image URL.'),
161850
- (n[t] = 'Error during delete image request.'),
161851
- (n[r] = 'Missing imageManagerDeleteURL option.'),
161852
- {
161853
- require: ['image'],
161854
- _init: function z() {
161855
- if (!s.$wp && 'IMG' !== s.el.tagName) {
161856
- return !1;
161857
- }
161858
- },
161859
- show: function G() {
161860
- if (!g) {
161861
- let e, a = '<button class="fr-command fr-btn fr-modal-more fr-not-available" id="fr-modal-more-'
161862
- .concat(s.sid, '"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24""><path d="')
161863
- .concat(froala_editor_1.default.SVG.tags, '"/></svg></button><h4 data-text="true">')
161864
- .concat(s.language.translate('Manage Images'), '</h4></div>\n <div class="fr-modal-tags" id="fr-modal-tags">');
161865
- (e = s.opts.imageManagerPreloader
161866
- ? '<img class="fr-preloader" id="fr-preloader" alt="'.concat(s.language.translate('Loading'), '.." src="').concat(s.opts.imageManagerPreloader, '" style="display: none;">')
161867
- : '<span class="fr-preloader" id="fr-preloader" style="display: none;">'.concat(s.language.translate('Loading'), '</span>')),
161868
- (e += '<div class="fr-image-list" id="fr-image-list"></div>');
161869
- let t = s.modals.create(M, a, e);
161870
- (g = t.$modal), (l = t.$head), (i = t.$body);
161871
- }
161872
- g.data('current-image', s.image.get()),
161873
- s.modals.show(M),
161874
- o ||
161875
- (function r() {
161876
- (o = g.find('#fr-preloader')),
161877
- (d = g.find('#fr-image-list')),
161878
- (m = g.find('#fr-modal-tags')),
161879
- (h = y()),
161880
- I(),
161881
- l.css('height', l.find('.fr-modal-head-line').outerHeight()),
161882
- s.events.$on(v(s.o_win), 'resize', () => {
161883
- R(!!c);
161884
- }),
161885
- s.events.bindClick(d, '.fr-insert-img', x),
161886
- s.events.bindClick(d, '.fr-delete-img', H),
161887
- s.helpers.isMobile() &&
161888
- (s.events.bindClick(d, 'div.fr-image-container', (e) => {
161889
- g.find('.fr-mobile-selected').removeClass('fr-mobile-selected'),
161890
- v(e.currentTarget).addClass('fr-mobile-selected');
161891
- }),
161892
- g.on(s._mousedown, () => {
161893
- g.find('.fr-mobile-selected').removeClass('fr-mobile-selected');
161894
- })),
161895
- g.on(s._mousedown + ' ' + s._mouseup, (e) => {
161896
- e.stopPropagation();
161897
- }),
161898
- g.on(s._mousedown, '*', () => {
161899
- s.events.disableBlur();
161900
- }),
161901
- i.on('scroll', P),
161902
- s.events.bindClick(g, 'button#fr-modal-more-'.concat(s.sid), q),
161903
- s.events.bindClick(m, 'a', k);
161904
- })(),
161905
- (function n() {
161906
- o.show(),
161907
- d.find('.fr-list-column').empty(),
161908
- s.opts.imageManagerLoadURL
161909
- ? v(this).ajax({
161910
- url: s.opts.imageManagerLoadURL,
161911
- method: s.opts.imageManagerLoadMethod,
161912
- data: s.opts.imageManagerLoadParams,
161913
- crossDomain: s.opts.requestWithCORS,
161914
- withCredentials: s.opts.requestWithCredentials,
161915
- headers: s.opts.requestHeaders,
161916
- done(e, a, t) {
161917
- s.events.trigger('imageManager.imagesLoaded', [e]),
161918
- (function r(e, a) {
161919
- try {
161920
- d.find('.fr-list-column').empty(), (p = u = f = 0), (c = JSON.parse(e)), P();
161921
- }
161922
- catch (t) {
161923
- O(C, a);
161924
- }
161925
- })(e, t.response),
161926
- o.hide();
161927
- },
161928
- fail(e) {
161929
- O(b, e.response || e.responseText);
161930
- },
161931
- })
161932
- : O(w);
161933
- })();
161934
- },
161935
- hide: function N() {
161936
- s.modals.hide(M);
161937
- },
161938
- });
161939
- }),
161940
- !froala_editor_1.default.PLUGINS.image)) {
161941
- throw new Error('Image manager plugin requires image plugin.');
161942
- }
161943
- froala_editor_1.default.DEFAULTS.imageInsertButtons.push('imageManagerCustom'),
161944
- froala_editor_1.default.RegisterCommand('imageManagerCustom', {
161945
- title: 'Browse',
161946
- undo: !1,
161947
- focus: !1,
161948
- modal: !0,
161949
- callback() {
161950
- this.imageManagerCustom.show();
161951
- },
161952
- plugin: 'imageManagerCustom',
161953
- }),
161954
- froala_editor_1.default.DefineIcon('imageManagerCustom', { NAME: 'folder', SVG_KEY: 'imageManager' }),
161955
- froala_editor_1.default.DefineIcon('imageManagerCustomInsert', { NAME: 'plus', SVG_KEY: 'add' }),
161956
- froala_editor_1.default.DefineIcon('imageManagerCustomDelete', { NAME: 'trash', SVG_KEY: 'remove' });
161957
- }
161958
- };
161959
- });
161960
-
161961
- System.register(["@angular/core"], function (exports_1, context_1) {
161962
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
161963
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
161964
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
161965
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
161966
- return c > 3 && r && Object.defineProperty(target, key, r), r;
161967
- };
161968
- var __metadata = (this && this.__metadata) || function (k, v) {
161969
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
161970
- };
161971
- var core_1, FroalaViewDirective;
161972
- context_1 && context_1.id;
161973
- return {
161974
- setters: [
161975
- function (core_1_1) {
161976
- core_1 = core_1_1;
161977
- }
161978
- ],
161979
- execute: function () {
161980
- FroalaViewDirective = class FroalaViewDirective {
161981
- constructor(renderer, element) {
161982
- this.renderer = renderer;
161983
- this._element = element.nativeElement;
161984
- }
161985
- set froalaView(content) {
161986
- this._element.innerHTML = content;
161987
- }
161988
- ngAfterViewInit() {
161989
- this.renderer.addClass(this._element, 'fr-view');
161990
- }
161991
- };
161992
- __decorate([
161993
- core_1.Input(),
161994
- __metadata("design:type", String),
161995
- __metadata("design:paramtypes", [String])
161996
- ], FroalaViewDirective.prototype, "froalaView", null);
161997
- FroalaViewDirective = __decorate([
161998
- core_1.Directive({
161999
- selector: '[froalaView]'
162000
- }),
162001
- __metadata("design:paramtypes", [core_1.Renderer2, core_1.ElementRef])
162002
- ], FroalaViewDirective);
162003
- exports_1("FroalaViewDirective", FroalaViewDirective);
162004
- }
162005
- };
162006
- });
162007
-
162008
161271
  FroalaEditor.DEFAULTS = Object.assign(FroalaEditor.DEFAULTS, {});
162009
161272
  FroalaEditor.PLUGINS.menuButton = function menuButton(editor) {
162010
161273
  let inputButton;
@@ -162069,61 +161332,6 @@ System.register(['@stratusjs/runtime/stratus', 'lodash', '@stratusjs/core/enviro
162069
161332
  undo: true
162070
161333
  });
162071
161334
 
162072
- System.register(["@angular/core", "@stratusjs/angular/froala/view/froala-view.directive"], function (exports_1, context_1) {
162073
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
162074
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
162075
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
162076
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
162077
- return c > 3 && r && Object.defineProperty(target, key, r), r;
162078
- };
162079
- var FroalaViewModule_1, core_1, froala_view_directive_1, FroalaViewModule;
162080
- context_1 && context_1.id;
162081
- return {
162082
- setters: [
162083
- function (core_1_1) {
162084
- core_1 = core_1_1;
162085
- },
162086
- function (froala_view_directive_1_1) {
162087
- froala_view_directive_1 = froala_view_directive_1_1;
162088
- }
162089
- ],
162090
- execute: function () {
162091
- FroalaViewModule = FroalaViewModule_1 = class FroalaViewModule {
162092
- static forRoot() {
162093
- return { ngModule: FroalaViewModule_1, providers: [] };
162094
- }
162095
- };
162096
- FroalaViewModule = FroalaViewModule_1 = __decorate([
162097
- core_1.NgModule({
162098
- declarations: [froala_view_directive_1.FroalaViewDirective],
162099
- exports: [froala_view_directive_1.FroalaViewDirective]
162100
- })
162101
- ], FroalaViewModule);
162102
- exports_1("FroalaViewModule", FroalaViewModule);
162103
- }
162104
- };
162105
- });
162106
-
162107
- System.register(["@stratusjs/angular/froala/view/froala-view.directive", "@stratusjs/angular/froala/view/froala-view.module"], function (exports_1, context_1) {
162108
- context_1 && context_1.id;
162109
- return {
162110
- setters: [
162111
- function (froala_view_directive_1_1) {
162112
- exports_1({
162113
- "FroalaViewDirective": froala_view_directive_1_1["FroalaViewDirective"]
162114
- });
162115
- },
162116
- function (froala_view_module_1_1) {
162117
- exports_1({
162118
- "FroalaViewModule": froala_view_module_1_1["FroalaViewModule"]
162119
- });
162120
- }
162121
- ],
162122
- execute: function () {
162123
- }
162124
- };
162125
- });
162126
-
162127
161335
  })
162128
161336
  };
162129
161337
  }));