@candy-kingdom/bonnie-cms 0.23.0 → 0.25.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 (157) hide show
  1. package/README.md +3 -7
  2. package/fesm2022/candy-kingdom-bonnie-cms.mjs +309 -430
  3. package/fesm2022/candy-kingdom-bonnie-cms.mjs.map +1 -1
  4. package/package.json +8 -10
  5. package/styles/admin-styles.scss +139 -139
  6. package/styles/admin-variables.scss +453 -451
  7. package/styles/variables.scss +415 -415
  8. package/types/candy-kingdom-bonnie-cms.d.ts +644 -0
  9. package/esm2022/candy-kingdom-bonnie-cms.mjs +0 -5
  10. package/esm2022/index.mjs +0 -15
  11. package/esm2022/lib/admin-controls/admin-controls.component.mjs +0 -44
  12. package/esm2022/lib/admin-controls/index.mjs +0 -2
  13. package/esm2022/lib/bone-editors/bone-editor-base.component.mjs +0 -143
  14. package/esm2022/lib/bone-editors/index.mjs +0 -3
  15. package/esm2022/lib/bone-editors/unknown-bone-editor/index.mjs +0 -2
  16. package/esm2022/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.mjs +0 -18
  17. package/esm2022/lib/bonnie-cms.module.mjs +0 -140
  18. package/esm2022/lib/core/DeviceType.mjs +0 -8
  19. package/esm2022/lib/core/DeviceVisibility.mjs +0 -9
  20. package/esm2022/lib/core/MediaType.mjs +0 -2
  21. package/esm2022/lib/core/TextEditorField.mjs +0 -7
  22. package/esm2022/lib/core/Utils.mjs +0 -18
  23. package/esm2022/lib/core/index.mjs +0 -6
  24. package/esm2022/lib/core-components/editable-group.mjs +0 -84
  25. package/esm2022/lib/core-components/editable.directive.mjs +0 -173
  26. package/esm2022/lib/core-components/form-base.component.mjs +0 -31
  27. package/esm2022/lib/core-components/index.mjs +0 -5
  28. package/esm2022/lib/core-components/link-popup/index.mjs +0 -2
  29. package/esm2022/lib/core-components/link-popup/link-popup.component.mjs +0 -73
  30. package/esm2022/lib/file-uploader/file-uploader.component.mjs +0 -119
  31. package/esm2022/lib/file-uploader/index.mjs +0 -2
  32. package/esm2022/lib/form-controls/form-controls.component.mjs +0 -16
  33. package/esm2022/lib/form-controls/index.mjs +0 -2
  34. package/esm2022/lib/forms/file-form/file-form.component.mjs +0 -43
  35. package/esm2022/lib/forms/file-form/index.mjs +0 -2
  36. package/esm2022/lib/forms/index.mjs +0 -9
  37. package/esm2022/lib/forms/lottie-form/index.mjs +0 -2
  38. package/esm2022/lib/forms/lottie-form/lottie-form.component.mjs +0 -45
  39. package/esm2022/lib/forms/one-image-form/index.mjs +0 -2
  40. package/esm2022/lib/forms/one-image-form/one-image-form.component.mjs +0 -64
  41. package/esm2022/lib/forms/seo-form/index.mjs +0 -2
  42. package/esm2022/lib/forms/seo-form/seo-form.component.mjs +0 -53
  43. package/esm2022/lib/forms/svg-form/index.mjs +0 -2
  44. package/esm2022/lib/forms/svg-form/svg-form.component.mjs +0 -48
  45. package/esm2022/lib/forms/text-form/TextInputStyle.mjs +0 -7
  46. package/esm2022/lib/forms/text-form/index.mjs +0 -3
  47. package/esm2022/lib/forms/text-form/text-form.component.mjs +0 -33
  48. package/esm2022/lib/forms/translation-form/index.mjs +0 -2
  49. package/esm2022/lib/forms/translation-form/translation-form.component.mjs +0 -32
  50. package/esm2022/lib/forms/unknown-form/index.mjs +0 -2
  51. package/esm2022/lib/forms/unknown-form/unknown-form.component.mjs +0 -23
  52. package/esm2022/lib/generated/file-setting-data.mjs +0 -6
  53. package/esm2022/lib/generated/i-equatable.mjs +0 -6
  54. package/esm2022/lib/generated/i-setting.mjs +0 -6
  55. package/esm2022/lib/generated/index.mjs +0 -18
  56. package/esm2022/lib/generated/localized-text-setting-data.mjs +0 -6
  57. package/esm2022/lib/generated/lottie-setting-data.mjs +0 -6
  58. package/esm2022/lib/generated/one-image-setting-data.mjs +0 -6
  59. package/esm2022/lib/generated/setting-base.mjs +0 -6
  60. package/esm2022/lib/generated/setting-data.mjs +0 -6
  61. package/esm2022/lib/generated/setting-group.mjs +0 -6
  62. package/esm2022/lib/generated/setting.mjs +0 -6
  63. package/esm2022/lib/generated/svg-setting-data.mjs +0 -6
  64. package/esm2022/lib/generated/text-setting-data.mjs +0 -6
  65. package/esm2022/lib/generated/text-setting-type.mjs +0 -10
  66. package/esm2022/lib/media-uploader/index.mjs +0 -2
  67. package/esm2022/lib/media-uploader/media-uploader.component.mjs +0 -161
  68. package/esm2022/lib/services/API_BASE_URL.mjs +0 -3
  69. package/esm2022/lib/services/admin-data.service.mjs +0 -37
  70. package/esm2022/lib/services/data.service.mjs +0 -75
  71. package/esm2022/lib/services/index.mjs +0 -4
  72. package/esm2022/lib/skeleton-editor/BoneEditorMap.mjs +0 -2
  73. package/esm2022/lib/skeleton-editor/ContentPreset.mjs +0 -9
  74. package/esm2022/lib/skeleton-editor/IBoneEditor.mjs +0 -2
  75. package/esm2022/lib/skeleton-editor/IBoneTemplate.mjs +0 -2
  76. package/esm2022/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.mjs +0 -119
  77. package/esm2022/lib/skeleton-editor/index.mjs +0 -9
  78. package/esm2022/lib/skeleton-editor/skeleton-editor-anchor.directive.mjs +0 -16
  79. package/esm2022/lib/skeleton-editor/skeleton-editor.component.mjs +0 -107
  80. package/esm2022/lib/translation-input/index.mjs +0 -2
  81. package/esm2022/lib/translation-input/translation-input.component.mjs +0 -42
  82. package/esm2022/lib/translation-textarea/index.mjs +0 -2
  83. package/esm2022/lib/translation-textarea/translation-textarea.component.mjs +0 -66
  84. package/index.d.ts +0 -14
  85. package/lib/admin-controls/admin-controls.component.d.ts +0 -14
  86. package/lib/admin-controls/index.d.ts +0 -1
  87. package/lib/bone-editors/bone-editor-base.component.d.ts +0 -44
  88. package/lib/bone-editors/index.d.ts +0 -2
  89. package/lib/bone-editors/unknown-bone-editor/index.d.ts +0 -1
  90. package/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.d.ts +0 -11
  91. package/lib/bonnie-cms.module.d.ts +0 -32
  92. package/lib/core/DeviceType.d.ts +0 -6
  93. package/lib/core/DeviceVisibility.d.ts +0 -7
  94. package/lib/core/MediaType.d.ts +0 -2
  95. package/lib/core/TextEditorField.d.ts +0 -5
  96. package/lib/core/Utils.d.ts +0 -4
  97. package/lib/core/index.d.ts +0 -5
  98. package/lib/core-components/editable-group.d.ts +0 -24
  99. package/lib/core-components/editable.directive.d.ts +0 -43
  100. package/lib/core-components/form-base.component.d.ts +0 -13
  101. package/lib/core-components/index.d.ts +0 -4
  102. package/lib/core-components/link-popup/index.d.ts +0 -1
  103. package/lib/core-components/link-popup/link-popup.component.d.ts +0 -28
  104. package/lib/file-uploader/file-uploader.component.d.ts +0 -32
  105. package/lib/file-uploader/index.d.ts +0 -1
  106. package/lib/form-controls/form-controls.component.d.ts +0 -7
  107. package/lib/form-controls/index.d.ts +0 -1
  108. package/lib/forms/file-form/file-form.component.d.ts +0 -14
  109. package/lib/forms/file-form/index.d.ts +0 -1
  110. package/lib/forms/index.d.ts +0 -8
  111. package/lib/forms/lottie-form/index.d.ts +0 -1
  112. package/lib/forms/lottie-form/lottie-form.component.d.ts +0 -16
  113. package/lib/forms/one-image-form/index.d.ts +0 -1
  114. package/lib/forms/one-image-form/one-image-form.component.d.ts +0 -23
  115. package/lib/forms/seo-form/index.d.ts +0 -1
  116. package/lib/forms/seo-form/seo-form.component.d.ts +0 -20
  117. package/lib/forms/svg-form/index.d.ts +0 -1
  118. package/lib/forms/svg-form/svg-form.component.d.ts +0 -19
  119. package/lib/forms/text-form/TextInputStyle.d.ts +0 -5
  120. package/lib/forms/text-form/index.d.ts +0 -2
  121. package/lib/forms/text-form/text-form.component.d.ts +0 -13
  122. package/lib/forms/translation-form/index.d.ts +0 -1
  123. package/lib/forms/translation-form/translation-form.component.d.ts +0 -14
  124. package/lib/forms/unknown-form/index.d.ts +0 -1
  125. package/lib/forms/unknown-form/unknown-form.component.d.ts +0 -9
  126. package/lib/generated/file-setting-data.d.ts +0 -10
  127. package/lib/generated/i-equatable.d.ts +0 -6
  128. package/lib/generated/i-setting.d.ts +0 -10
  129. package/lib/generated/index.d.ts +0 -17
  130. package/lib/generated/localized-text-setting-data.d.ts +0 -11
  131. package/lib/generated/lottie-setting-data.d.ts +0 -9
  132. package/lib/generated/one-image-setting-data.d.ts +0 -14
  133. package/lib/generated/setting-base.d.ts +0 -9
  134. package/lib/generated/setting-data.d.ts +0 -8
  135. package/lib/generated/setting-group.d.ts +0 -11
  136. package/lib/generated/setting.d.ts +0 -9
  137. package/lib/generated/svg-setting-data.d.ts +0 -9
  138. package/lib/generated/text-setting-data.d.ts +0 -10
  139. package/lib/generated/text-setting-type.d.ts +0 -8
  140. package/lib/media-uploader/index.d.ts +0 -1
  141. package/lib/media-uploader/media-uploader.component.d.ts +0 -35
  142. package/lib/services/API_BASE_URL.d.ts +0 -2
  143. package/lib/services/admin-data.service.d.ts +0 -16
  144. package/lib/services/data.service.d.ts +0 -19
  145. package/lib/services/index.d.ts +0 -3
  146. package/lib/skeleton-editor/BoneEditorMap.d.ts +0 -3
  147. package/lib/skeleton-editor/ContentPreset.d.ts +0 -11
  148. package/lib/skeleton-editor/IBoneEditor.d.ts +0 -26
  149. package/lib/skeleton-editor/IBoneTemplate.d.ts +0 -5
  150. package/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.d.ts +0 -32
  151. package/lib/skeleton-editor/index.d.ts +0 -8
  152. package/lib/skeleton-editor/skeleton-editor-anchor.directive.d.ts +0 -8
  153. package/lib/skeleton-editor/skeleton-editor.component.d.ts +0 -31
  154. package/lib/translation-input/index.d.ts +0 -1
  155. package/lib/translation-input/translation-input.component.d.ts +0 -17
  156. package/lib/translation-textarea/index.d.ts +0 -1
  157. package/lib/translation-textarea/translation-textarea.component.d.ts +0 -26
@@ -1,20 +1,16 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, forwardRef, Directive, Output, Component, ContentChildren, Host, Input, ViewChildren, ViewChild, ChangeDetectorRef, inject, InjectionToken, Injectable, Inject, HostBinding, NgModule } from '@angular/core';
3
- import { Subject, debounceTime, map, last, catchError, Observable, of, combineLatest, merge, mergeMap } from 'rxjs';
2
+ import { EventEmitter, forwardRef, Output, Directive, ContentChildren, Component, inject, Input, ViewChildren, ChangeDetectorRef, ViewChild, InjectionToken, Injectable, ViewContainerRef, HostBinding, ComponentFactoryResolver } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule, DecimalPipe, JsonPipe } from '@angular/common';
5
+ import { Subject, debounceTime, map, last, catchError, Observable, of, combineLatest, mergeMap, merge } from 'rxjs';
4
6
  import * as i1 from '@angular/forms';
5
7
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
6
- import * as i2$1 from '@angular/common';
7
- import { CommonModule } from '@angular/common';
8
- import * as i2 from '@angular/cdk/text-field';
9
8
  import { CdkTextareaAutosize } from '@angular/cdk/text-field';
10
9
  import { take } from 'rxjs/operators';
11
- import * as i1$1 from '@angular/platform-browser';
12
- import * as i1$2 from '@angular/common/http';
13
- import { HttpRequest, HttpEventType } from '@angular/common/http';
14
- import * as i3 from 'ngx-lottie';
10
+ import { DomSanitizer } from '@angular/platform-browser';
11
+ import { HttpClient, HttpRequest, HttpEventType } from '@angular/common/http';
15
12
  import { LottieComponent } from 'ngx-lottie';
16
- import * as i4 from '@candy-kingdom/bonnie';
17
- import { MediaObjectFit, BonnieModule } from '@candy-kingdom/bonnie';
13
+ import { MediaObjectFit, MarcyMediaComponent } from '@candy-kingdom/bonnie';
18
14
 
19
15
  /**
20
16
  * This is a TypeGen auto-generated file.
@@ -134,25 +130,17 @@ var DeviceVisibility;
134
130
  })(DeviceVisibility || (DeviceVisibility = {}));
135
131
 
136
132
  class EditableDirective {
137
- constructor() {
138
- this.saved = new EventEmitter();
139
- this.editModeChange = new EventEmitter();
140
- this.externalSaveCall = new EventEmitter();
141
- this.canceled = new EventEmitter();
142
- this.valueChange = new EventEmitter();
143
- this.propagateChange = () => { };
144
- this._inEditMode = false;
145
- this._isDirty = false;
146
- this.startEditing = () => {
147
- if (this._inEditMode) {
148
- this.updateDirty();
149
- return;
150
- }
151
- this._inEditMode = true;
152
- this.updateDirty();
153
- this.editModeChange.emit(true);
154
- };
155
- }
133
+ saved = new EventEmitter();
134
+ editModeChange = new EventEmitter();
135
+ externalSaveCall = new EventEmitter();
136
+ canceled = new EventEmitter();
137
+ valueChange = new EventEmitter();
138
+ propagateChange = () => { };
139
+ _inEditMode = false;
140
+ _isDirty = false;
141
+ _value;
142
+ _originalValue;
143
+ _storedData;
156
144
  get inEditMode() {
157
145
  return this._inEditMode;
158
146
  }
@@ -181,6 +169,15 @@ class EditableDirective {
181
169
  requestSave() {
182
170
  this.externalSaveCall.emit();
183
171
  }
172
+ startEditing = () => {
173
+ if (this._inEditMode) {
174
+ this.updateDirty();
175
+ return;
176
+ }
177
+ this._inEditMode = true;
178
+ this.updateDirty();
179
+ this.editModeChange.emit(true);
180
+ };
184
181
  save(newData) {
185
182
  if (!this._inEditMode) {
186
183
  console.warn('save before edit mode'); //todo: fix that
@@ -281,10 +278,10 @@ class EditableDirective {
281
278
  }
282
279
  registerOnTouched() {
283
280
  }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EditableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
285
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: EditableDirective, isStandalone: true, selector: "[boncEditable]", outputs: { saved: "saved", editModeChange: "editModeChange", externalSaveCall: "externalSaveCall", canceled: "canceled", valueChange: "valueChange" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }], ngImport: i0 }); }
281
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EditableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
282
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: EditableDirective, isStandalone: true, selector: "[boncEditable]", outputs: { saved: "saved", editModeChange: "editModeChange", externalSaveCall: "externalSaveCall", canceled: "canceled", valueChange: "valueChange" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }], ngImport: i0 });
286
283
  }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EditableDirective, decorators: [{
284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EditableDirective, decorators: [{
288
285
  type: Directive,
289
286
  args: [{
290
287
  standalone: true,
@@ -304,14 +301,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
304
301
  }] } });
305
302
 
306
303
  class EditableGroupComponent {
307
- constructor() {
308
- this.editModeChange = new EventEmitter();
309
- this.saved = new EventEmitter();
310
- this.requestEditorClose = new EventEmitter();
311
- this.subscriptions = [];
312
- this._inEditMode = false;
313
- this.saveSubject = new Subject();
314
- }
304
+ editModeChange = new EventEmitter();
305
+ saved = new EventEmitter();
306
+ requestEditorClose = new EventEmitter();
307
+ editables;
308
+ subscriptions = [];
309
+ _inEditMode = false;
310
+ saveSubject = new Subject();
315
311
  ngAfterContentInit() {
316
312
  this.saveSubject
317
313
  .asObservable()
@@ -363,13 +359,14 @@ class EditableGroupComponent {
363
359
  ngOnDestroy() {
364
360
  this.clearSubscribtions();
365
361
  }
366
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EditableGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
367
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EditableGroupComponent, selector: "bonc-editable-group", outputs: { editModeChange: "editModeChange", saved: "saved", requestEditorClose: "requestEditorClose" }, queries: [{ propertyName: "editables", predicate: EditableDirective, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
362
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EditableGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
363
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: EditableGroupComponent, isStandalone: true, selector: "bonc-editable-group", outputs: { editModeChange: "editModeChange", saved: "saved", requestEditorClose: "requestEditorClose" }, queries: [{ propertyName: "editables", predicate: EditableDirective, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
368
364
  }
369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EditableGroupComponent, decorators: [{
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EditableGroupComponent, decorators: [{
370
366
  type: Component,
371
367
  args: [{
372
368
  selector: 'bonc-editable-group',
369
+ standalone: true,
373
370
  template: '<ng-content></ng-content>'
374
371
  }]
375
372
  }], propDecorators: { editModeChange: [{
@@ -384,39 +381,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
384
381
  }] } });
385
382
 
386
383
  class FormBaseComponent {
387
- static { this.inputs = ['locale']; }
388
- constructor(editable) {
389
- this.editable = editable;
390
- this.name = '';
391
- this._locale = '';
392
- }
384
+ static inputs = ['locale'];
385
+ name = '';
386
+ _locale = '';
387
+ editable = inject((EditableDirective), { host: true });
393
388
  set locale(value) {
394
389
  this._locale = value;
395
390
  }
396
391
  get locale() {
397
392
  return this._locale;
398
393
  }
399
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FormBaseComponent, deps: [{ token: EditableDirective, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
400
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: FormBaseComponent, selector: "ng-component", inputs: { locale: "locale" }, ngImport: i0, template: '', isInline: true }); }
394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: FormBaseComponent, isStandalone: true, selector: "ng-component", inputs: { locale: "locale" }, ngImport: i0, template: '', isInline: true });
401
396
  }
402
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FormBaseComponent, decorators: [{
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormBaseComponent, decorators: [{
403
398
  type: Component,
404
399
  args: [{
405
400
  template: ''
406
401
  }]
407
- }], ctorParameters: () => [{ type: EditableDirective, decorators: [{
408
- type: Host
409
- }] }], propDecorators: { locale: [{
402
+ }], propDecorators: { locale: [{
410
403
  type: Input
411
404
  }] } });
412
405
 
413
406
  class TranslationInputComponent {
414
- constructor() {
415
- this.device = DeviceType.NotSet;
416
- this.startEditing = new EventEmitter();
417
- this.changed = new EventEmitter();
418
- this.blurred = new EventEmitter();
419
- }
407
+ text;
408
+ locale;
409
+ device = DeviceType.NotSet;
410
+ startEditing = new EventEmitter();
411
+ changed = new EventEmitter();
412
+ blurred = new EventEmitter();
420
413
  onClick() {
421
414
  this.startEditing.emit();
422
415
  }
@@ -426,12 +419,12 @@ class TranslationInputComponent {
426
419
  onBlur() {
427
420
  this.blurred.emit();
428
421
  }
429
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
430
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: { text: "text", locale: "locale", device: "device" }, outputs: { startEditing: "startEditing", changed: "changed", blurred: "blurred" }, ngImport: i0, template: "<input [(ngModel)]=\"text[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\" />\r\n", styles: [":host{padding:6px 12px;border:1px solid silver;display:block}:host:hover{background-color:#333}:host:focus-within{background-color:#555}:host input{background-color:#8080801a;color:var(--text-color);padding:6px;color:silver;border:1px solid silver;background-color:transparent;display:block;box-sizing:border-box;font-family:inherit;width:100%;border:none}:host input:hover{background-color:#d3d3d3;cursor:pointer}:host input:focus{outline:none;color:#000;background-color:#cf0}:host input:hover{border-color:transparent;background-color:#333;cursor:pointer}:host input:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
422
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
423
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: TranslationInputComponent, isStandalone: true, selector: "bonc-translation-input", inputs: { text: "text", locale: "locale", device: "device" }, outputs: { startEditing: "startEditing", changed: "changed", blurred: "blurred" }, ngImport: i0, template: "<input [(ngModel)]=\"text[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n", styles: [":host{padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}:host{display:block}:host input{display:block;border:none;background-color:#8080801a;color:var(--text-color)}:host input:hover{background-color:#d3d3d3;cursor:pointer}:host input:focus{outline:none;color:#000;background-color:#cf0}:host input{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box}:host input:hover{border-color:transparent;background-color:#333;cursor:pointer}:host input:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}:host input{display:block;box-sizing:border-box;font-family:inherit;width:100%;border:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
431
424
  }
432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationInputComponent, decorators: [{
425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationInputComponent, decorators: [{
433
426
  type: Component,
434
- args: [{ selector: 'bonc-translation-input', template: "<input [(ngModel)]=\"text[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\" />\r\n", styles: [":host{padding:6px 12px;border:1px solid silver;display:block}:host:hover{background-color:#333}:host:focus-within{background-color:#555}:host input{background-color:#8080801a;color:var(--text-color);padding:6px;color:silver;border:1px solid silver;background-color:transparent;display:block;box-sizing:border-box;font-family:inherit;width:100%;border:none}:host input:hover{background-color:#d3d3d3;cursor:pointer}:host input:focus{outline:none;color:#000;background-color:#cf0}:host input:hover{border-color:transparent;background-color:#333;cursor:pointer}:host input:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}\n"] }]
427
+ args: [{ selector: 'bonc-translation-input', standalone: true, imports: [FormsModule], template: "<input [(ngModel)]=\"text[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n", styles: [":host{padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}:host{display:block}:host input{display:block;border:none;background-color:#8080801a;color:var(--text-color)}:host input:hover{background-color:#d3d3d3;cursor:pointer}:host input:focus{outline:none;color:#000;background-color:#cf0}:host input{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box}:host input:hover{border-color:transparent;background-color:#333;cursor:pointer}:host input:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}:host input{display:block;box-sizing:border-box;font-family:inherit;width:100%;border:none}\n"] }]
435
428
  }], propDecorators: { text: [{
436
429
  type: Input,
437
430
  args: [{ required: true }]
@@ -449,12 +442,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
449
442
  }] } });
450
443
 
451
444
  class TranslationTextareaComponent {
445
+ ngZone;
446
+ autosizeList;
447
+ minRows;
448
+ maxRows;
449
+ text;
450
+ locale;
451
+ device = DeviceType.NotSet;
452
+ startEditing = new EventEmitter();
453
+ changed = new EventEmitter();
454
+ blurred = new EventEmitter();
452
455
  constructor(ngZone) {
453
456
  this.ngZone = ngZone;
454
- this.device = DeviceType.NotSet;
455
- this.startEditing = new EventEmitter();
456
- this.changed = new EventEmitter();
457
- this.blurred = new EventEmitter();
458
457
  }
459
458
  ngAfterViewInit() {
460
459
  setTimeout(this.triggerResize.bind(this));
@@ -478,12 +477,12 @@ class TranslationTextareaComponent {
478
477
  this.autosizeList.forEach(x => x.resizeToFitContent(true));
479
478
  });
480
479
  }
481
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationTextareaComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
482
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: { minRows: "minRows", maxRows: "maxRows", text: "text", locale: "locale", device: "device" }, outputs: { startEditing: "startEditing", changed: "changed", blurred: "blurred" }, viewQueries: [{ propertyName: "autosizeList", predicate: CdkTextareaAutosize, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea [(ngModel)]=\"text[locale]\"\r\n [cdkAutosizeMinRows]=\"minRows\"\r\n [cdkAutosizeMaxRows]=\"maxRows\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\"\r\n matInput\r\n cdkTextareaAutosize>\r\n</textarea>\r\n", styles: [":host{display:block;padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}textarea{display:block;width:100%;line-height:140%;padding:2px 0;margin:0;box-sizing:content-box;border:none;resize:none;color:silver;background-color:transparent}textarea:focus{outline:none}textarea[readonly]{cursor:pointer}textarea[readonly]::selection{-webkit-user-select:none;user-select:none}textarea[readonly]:hover{background:repeating-linear-gradient(-45deg,#ccff00,#ccff00 10px,rgba(0,0,0,0) 10px,rgba(0,0,0,0) 20px) fixed bottom;color:#000}textarea:hover{cursor:pointer}textarea:focus{outline:none;color:#fff;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }] }); }
480
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationTextareaComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
481
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: TranslationTextareaComponent, isStandalone: true, selector: "bonc-translation-textarea", inputs: { minRows: "minRows", maxRows: "maxRows", text: "text", locale: "locale", device: "device" }, outputs: { startEditing: "startEditing", changed: "changed", blurred: "blurred" }, viewQueries: [{ propertyName: "autosizeList", predicate: CdkTextareaAutosize, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea [(ngModel)]=\"text[locale]\"\n [cdkAutosizeMinRows]=\"minRows\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\"\n matInput\n cdkTextareaAutosize>\n</textarea>\n", styles: [":host{display:block;padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}textarea{display:block;width:100%;line-height:140%;padding:2px 0;margin:0;box-sizing:content-box;border:none;resize:none}textarea:focus{outline:none}textarea[readonly]{cursor:pointer}textarea[readonly]::selection{-webkit-user-select:none;user-select:none}textarea[readonly]:hover{background:repeating-linear-gradient(-45deg,#cf00,#cf00 10px,#000 10px 20px) fixed bottom;color:#000}textarea{color:silver;background-color:transparent}textarea:hover{cursor:pointer}textarea:focus{outline:none;color:#fff;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }] });
483
482
  }
484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationTextareaComponent, decorators: [{
483
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationTextareaComponent, decorators: [{
485
484
  type: Component,
486
- args: [{ selector: 'bonc-translation-textarea', template: "<textarea [(ngModel)]=\"text[locale]\"\r\n [cdkAutosizeMinRows]=\"minRows\"\r\n [cdkAutosizeMaxRows]=\"maxRows\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onKeyPress()\"\r\n (blur)=\"onBlur()\"\r\n matInput\r\n cdkTextareaAutosize>\r\n</textarea>\r\n", styles: [":host{display:block;padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}textarea{display:block;width:100%;line-height:140%;padding:2px 0;margin:0;box-sizing:content-box;border:none;resize:none;color:silver;background-color:transparent}textarea:focus{outline:none}textarea[readonly]{cursor:pointer}textarea[readonly]::selection{-webkit-user-select:none;user-select:none}textarea[readonly]:hover{background:repeating-linear-gradient(-45deg,#ccff00,#ccff00 10px,rgba(0,0,0,0) 10px,rgba(0,0,0,0) 20px) fixed bottom;color:#000}textarea:hover{cursor:pointer}textarea:focus{outline:none;color:#fff;cursor:default}\n"] }]
485
+ args: [{ selector: 'bonc-translation-textarea', standalone: true, imports: [FormsModule, CdkTextareaAutosize], template: "<textarea [(ngModel)]=\"text[locale]\"\n [cdkAutosizeMinRows]=\"minRows\"\n [cdkAutosizeMaxRows]=\"maxRows\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\"\n matInput\n cdkTextareaAutosize>\n</textarea>\n", styles: [":host{display:block;padding:6px 12px;border:1px solid silver}:host:hover{background-color:#333}:host:focus-within{background-color:#555}textarea{display:block;width:100%;line-height:140%;padding:2px 0;margin:0;box-sizing:content-box;border:none;resize:none}textarea:focus{outline:none}textarea[readonly]{cursor:pointer}textarea[readonly]::selection{-webkit-user-select:none;user-select:none}textarea[readonly]:hover{background:repeating-linear-gradient(-45deg,#cf00,#cf00 10px,#000 10px 20px) fixed bottom;color:#000}textarea{color:silver;background-color:transparent}textarea:hover{cursor:pointer}textarea:focus{outline:none;color:#fff;cursor:default}\n"] }]
487
486
  }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { autosizeList: [{
488
487
  type: ViewChildren,
489
488
  args: [CdkTextareaAutosize]
@@ -508,17 +507,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
508
507
  }] } });
509
508
 
510
509
  class LinkPopupComponent {
511
- constructor() {
512
- this.TextEditorField = TextEditorField;
513
- this.linkChange = new EventEmitter();
514
- this.startEditing = new EventEmitter();
515
- this.changed = new EventEmitter();
516
- this.blurred = new EventEmitter();
517
- this.open = new EventEmitter();
518
- this.closed = new EventEmitter();
519
- this.LinkPopupField = TextEditorField;
520
- this.popupIsShown = false;
521
- }
510
+ TextEditorField = TextEditorField;
511
+ linkChange = new EventEmitter();
512
+ startEditing = new EventEmitter();
513
+ changed = new EventEmitter();
514
+ blurred = new EventEmitter();
515
+ open = new EventEmitter();
516
+ closed = new EventEmitter();
517
+ field;
518
+ LinkPopupField = TextEditorField;
519
+ maxRows;
520
+ minRows;
521
+ linkTitle; // todo: allready in weblink
522
+ locale;
523
+ link;
524
+ popupIsShown = false;
522
525
  onClick() {
523
526
  this.startEditing.emit();
524
527
  }
@@ -537,12 +540,12 @@ class LinkPopupComponent {
537
540
  this.popupIsShown = false;
538
541
  this.closed.emit();
539
542
  }
540
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LinkPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
541
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: LinkPopupComponent, selector: "bonc-link-popup", inputs: { field: "field", maxRows: "maxRows", minRows: "minRows", linkTitle: "linkTitle", locale: "locale", link: "link" }, outputs: { linkChange: "linkChange", startEditing: "startEditing", changed: "changed", blurred: "blurred", open: "open", closed: "closed" }, ngImport: i0, template: "<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-input>\r\n\r\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-textarea>\r\n\r\n<div *ngIf=\"popupIsShown\">\r\n <div class=\"popup\">\r\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\r\n\r\n <label>Link\r\n <input [(ngModel)]=\"link[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onChange()\"\r\n (blur)=\"onBlur()\">\r\n </label>\r\n\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;position:relative}:host translation-input{z-index:1}.popup{position:absolute;display:flex;flex-direction:column;justify-content:center;width:350px;padding:20px;box-sizing:border-box;color:#000;background-color:#fff;z-index:5;border:2px solid black}.popup a{cursor:pointer}.popup a:hover{background-color:#cf0}.popup a.close{position:absolute;top:10px;right:10px}.popup label+label{margin-top:20px}.popup input{width:100%;margin-top:5px;padding:6px;font-size:12px;box-sizing:border-box;border:1px solid #222}.popup input:hover,.popup input:focus{background-color:silver;color:#333;border-color:silver;outline:none}button{display:block;color:#fff;background-color:transparent;box-shadow:none;border:none;outline:none;text-decoration:none;padding:3pt 10pt;text-align:center;-webkit-user-select:none;user-select:none;color:#000;cursor:pointer}button:hover{border-color:#333;background-color:#333}button:disabled{color:gray}button:hover{background-color:#cf0}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }] }); }
543
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LinkPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
544
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: LinkPopupComponent, isStandalone: true, selector: "bonc-link-popup", inputs: { field: "field", maxRows: "maxRows", minRows: "minRows", linkTitle: "linkTitle", locale: "locale", link: "link" }, outputs: { linkChange: "linkChange", startEditing: "startEditing", changed: "changed", blurred: "blurred", open: "open", closed: "closed" }, ngImport: i0, template: "<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-input>\n\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n [minRows]=\"minRows\"\n [maxRows]=\"maxRows\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-textarea>\n\n<div *ngIf=\"popupIsShown\">\n <div class=\"popup\">\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\n\n <label>Link\n <input [(ngModel)]=\"link[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onChange()\"\n (blur)=\"onBlur()\">\n </label>\n\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;position:relative}:host translation-input{z-index:1}.popup{position:absolute;display:flex;flex-direction:column;justify-content:center;width:350px;padding:20px;box-sizing:border-box;color:#000;background-color:#fff;z-index:5;border:2px solid black}.popup a{cursor:pointer}.popup a:hover{background-color:#cf0}.popup a.close{position:absolute;top:10px;right:10px}.popup label+label{margin-top:20px}.popup input{width:100%;margin-top:5px;padding:6px;font-size:12px;box-sizing:border-box;border:1px solid #222}.popup input:hover,.popup input:focus{background-color:silver;color:#333;border-color:silver;outline:none}button{display:block;color:#fff;background-color:transparent;box-shadow:none;border:none;outline:none;text-decoration:none;cursor:pointer;padding:3pt 10pt;text-align:center;-webkit-user-select:none;user-select:none}button:hover{border-color:#333;background-color:#333}button:disabled{color:gray}button{color:#000;cursor:pointer}button:hover{background-color:#cf0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }] });
542
545
  }
543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LinkPopupComponent, decorators: [{
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LinkPopupComponent, decorators: [{
544
547
  type: Component,
545
- args: [{ selector: 'bonc-link-popup', template: "<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-input>\r\n\r\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n (click)=\"showPopup()\"\r\n [text]=\"linkTitle\"\r\n [locale]=\"locale\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n (startEditing)=\"onClick()\"\r\n (changed)=\"onChange()\"\r\n (blurred)=\"onBlur()\">\r\n</bonc-translation-textarea>\r\n\r\n<div *ngIf=\"popupIsShown\">\r\n <div class=\"popup\">\r\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\r\n\r\n <label>Link\r\n <input [(ngModel)]=\"link[locale]\"\r\n (click)=\"onClick()\"\r\n (keyup)=\"onChange()\"\r\n (blur)=\"onBlur()\">\r\n </label>\r\n\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;position:relative}:host translation-input{z-index:1}.popup{position:absolute;display:flex;flex-direction:column;justify-content:center;width:350px;padding:20px;box-sizing:border-box;color:#000;background-color:#fff;z-index:5;border:2px solid black}.popup a{cursor:pointer}.popup a:hover{background-color:#cf0}.popup a.close{position:absolute;top:10px;right:10px}.popup label+label{margin-top:20px}.popup input{width:100%;margin-top:5px;padding:6px;font-size:12px;box-sizing:border-box;border:1px solid #222}.popup input:hover,.popup input:focus{background-color:silver;color:#333;border-color:silver;outline:none}button{display:block;color:#fff;background-color:transparent;box-shadow:none;border:none;outline:none;text-decoration:none;padding:3pt 10pt;text-align:center;-webkit-user-select:none;user-select:none;color:#000;cursor:pointer}button:hover{border-color:#333;background-color:#333}button:disabled{color:gray}button:hover{background-color:#cf0}\n"] }]
548
+ args: [{ selector: 'bonc-link-popup', standalone: true, imports: [CommonModule, FormsModule, TranslationInputComponent, TranslationTextareaComponent], template: "<bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-input>\n\n<bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n (click)=\"showPopup()\"\n [text]=\"linkTitle\"\n [locale]=\"locale\"\n [minRows]=\"minRows\"\n [maxRows]=\"maxRows\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n</bonc-translation-textarea>\n\n<div *ngIf=\"popupIsShown\">\n <div class=\"popup\">\n <a (click)=\"hidePopup()\" class=\"close\">close</a>\n\n <label>Link\n <input [(ngModel)]=\"link[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onChange()\"\n (blur)=\"onBlur()\">\n </label>\n\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;position:relative}:host translation-input{z-index:1}.popup{position:absolute;display:flex;flex-direction:column;justify-content:center;width:350px;padding:20px;box-sizing:border-box;color:#000;background-color:#fff;z-index:5;border:2px solid black}.popup a{cursor:pointer}.popup a:hover{background-color:#cf0}.popup a.close{position:absolute;top:10px;right:10px}.popup label+label{margin-top:20px}.popup input{width:100%;margin-top:5px;padding:6px;font-size:12px;box-sizing:border-box;border:1px solid #222}.popup input:hover,.popup input:focus{background-color:silver;color:#333;border-color:silver;outline:none}button{display:block;color:#fff;background-color:transparent;box-shadow:none;border:none;outline:none;text-decoration:none;cursor:pointer;padding:3pt 10pt;text-align:center;-webkit-user-select:none;user-select:none}button:hover{border-color:#333;background-color:#333}button:disabled{color:gray}button{color:#000;cursor:pointer}button:hover{background-color:#cf0}\n"] }]
546
549
  }], propDecorators: { linkChange: [{
547
550
  type: Output
548
551
  }], startEditing: [{
@@ -574,29 +577,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
574
577
  }] } });
575
578
 
576
579
  class FormControlsComponent {
577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FormControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
578
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: FormControlsComponent, selector: "bonc-form-controls", inputs: { editable: "editable" }, ngImport: i0, template: "<div [class.edit]=\"editable.inEditMode\" class=\"content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\r\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\r\n <ng-container *ngIf=\"editable.isDirty\">\r\n <a (click)=\"editable.cancel()\">reset</a>\r\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\r\n </ng-container>\r\n</div>\r\n", styles: [":host{display:flex;background-color:#222;color:silver}.content{flex:1;padding:10px}.content.edit{background-color:#111}.controls{display:flex;flex-direction:column;width:100px;background-color:#111}.controls.hidden{opacity:0;pointer-events:none}.controls a{display:block}.controls a.apply{flex:1}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
580
+ editable;
581
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
582
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: FormControlsComponent, isStandalone: true, selector: "bonc-form-controls", inputs: { editable: "editable" }, ngImport: i0, template: "<div [class.edit]=\"editable.inEditMode\" class=\"content\">\n <ng-content></ng-content>\n</div>\n\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\n <ng-container *ngIf=\"editable.isDirty\">\n <a (click)=\"editable.cancel()\">reset</a>\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\n </ng-container>\n</div>\n", styles: [":host{display:flex;background-color:#222;color:silver}.content{flex:1;padding:10px}.content.edit{background-color:#111}.controls{display:flex;flex-direction:column;width:100px;background-color:#111}.controls.hidden{opacity:0;pointer-events:none}.controls a{display:block}.controls a.apply{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
579
583
  }
580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FormControlsComponent, decorators: [{
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FormControlsComponent, decorators: [{
581
585
  type: Component,
582
- args: [{ selector: 'bonc-form-controls', template: "<div [class.edit]=\"editable.inEditMode\" class=\"content\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\r\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\r\n <ng-container *ngIf=\"editable.isDirty\">\r\n <a (click)=\"editable.cancel()\">reset</a>\r\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\r\n </ng-container>\r\n</div>\r\n", styles: [":host{display:flex;background-color:#222;color:silver}.content{flex:1;padding:10px}.content.edit{background-color:#111}.controls{display:flex;flex-direction:column;width:100px;background-color:#111}.controls.hidden{opacity:0;pointer-events:none}.controls a{display:block}.controls a.apply{flex:1}\n"] }]
586
+ args: [{ selector: 'bonc-form-controls', standalone: true, imports: [CommonModule], template: "<div [class.edit]=\"editable.inEditMode\" class=\"content\">\n <ng-content></ng-content>\n</div>\n\n<div [class.hidden]=\"!editable.inEditMode\" class=\"controls\">\n <a *ngIf=\"!editable.isDirty\" (click)=\"editable.cancel()\" class=\"close\">close</a>\n <ng-container *ngIf=\"editable.isDirty\">\n <a (click)=\"editable.cancel()\">reset</a>\n <a (click)=\"editable.requestSave()\" class=\"apply\">apply</a>\n </ng-container>\n</div>\n", styles: [":host{display:flex;background-color:#222;color:silver}.content{flex:1;padding:10px}.content.edit{background-color:#111}.controls{display:flex;flex-direction:column;width:100px;background-color:#111}.controls.hidden{opacity:0;pointer-events:none}.controls a{display:block}.controls a.apply{flex:1}\n"] }]
583
587
  }], propDecorators: { editable: [{
584
588
  type: Input,
585
589
  args: [{ required: true }]
586
590
  }] } });
587
591
 
588
592
  class FileUploaderComponent {
589
- constructor(sanitizer, http, cd) {
590
- this.sanitizer = sanitizer;
591
- this.http = http;
592
- this.cd = cd;
593
- this.srcChange = new EventEmitter();
594
- this.progress = 0;
595
- this.isUploading = false;
596
- this.autoplay = true;
597
- this.fileTypeMask = undefined;
598
- this._uploadTypes = [];
599
- }
593
+ fileInput;
594
+ srcChange = new EventEmitter();
595
+ uploadUrlMap;
596
+ progress = 0;
597
+ isUploading = false;
598
+ autoplay = true;
599
+ clipStyle;
600
+ fileTypeMask = undefined;
601
+ _uploadTypes = [];
602
+ _src;
603
+ sanitizer = inject(DomSanitizer);
604
+ http = inject(HttpClient);
605
+ cd = inject(ChangeDetectorRef);
600
606
  set src(newSrc) {
601
607
  if (this._src === newSrc)
602
608
  return;
@@ -676,13 +682,13 @@ class FileUploaderComponent {
676
682
  };
677
683
  return func;
678
684
  }
679
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FileUploaderComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i1$2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
680
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: { uploadUrlMap: "uploadUrlMap", src: "src", uploadTypes: "uploadTypes" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$1.DecimalPipe, name: "number" }] }); }
685
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
686
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: FileUploaderComponent, isStandalone: true, selector: "bonc-file-uploader", inputs: { uploadUrlMap: "uploadUrlMap", src: "src", uploadTypes: "uploadTypes" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\n\n<ng-content></ng-content>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] });
681
687
  }
682
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FileUploaderComponent, decorators: [{
688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileUploaderComponent, decorators: [{
683
689
  type: Component,
684
- args: [{ selector: 'bonc-file-uploader', template: "<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
685
- }], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { fileInput: [{
690
+ args: [{ selector: 'bonc-file-uploader', standalone: true, imports: [CommonModule, DecimalPipe], template: "<div *ngIf=\"src === undefined || src.url === undefined || src?.url?.length === 0\">Upload file</div>\n\n<ng-content></ng-content>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
691
+ }], propDecorators: { fileInput: [{
686
692
  type: ViewChild,
687
693
  args: ['fileInput', { static: true }]
688
694
  }], srcChange: [{
@@ -699,13 +705,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
699
705
  const uploadMap = new Map();
700
706
  uploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);
701
707
  class SeoFormComponent extends FormBaseComponent {
702
- constructor() {
703
- super(...arguments);
704
- this.uploadMap = uploadMap;
705
- this._pageId = '';
706
- this.ogImageUploadUrl = '';
707
- this.label = '';
708
- }
708
+ uploadMap = uploadMap;
709
+ _pageId = '';
710
+ ogImageUploadUrl = '';
711
+ label = '';
709
712
  ngOnInit() {
710
713
  this.editable.externalSaveCall.subscribe(() => {
711
714
  this.editable.save();
@@ -728,12 +731,12 @@ class SeoFormComponent extends FormBaseComponent {
728
731
  }
729
732
  this.editable.updateDirty();
730
733
  }
731
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SeoFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
732
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SeoFormComponent, selector: "bonc-seo-form", inputs: { label: "label", pageId: "pageId" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <h2 *ngIf=\"label\">{{label}}</h2>\r\n\r\n <div class=\"form-group\">\r\n <label>Title</label>\r\n <bonc-translation-input [text]=\"editable.value.title\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Description</label>\r\n <bonc-translation-textarea [text]=\"editable.value.description\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Share image | 1200x630</label>\r\n\r\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\r\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"replaceImage($event)\">\r\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\r\n </div>\r\n\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\r\n", styles: [":host{display:block}bonc-one-image-form{max-width:600px}img{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] }); }
734
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SeoFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
735
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SeoFormComponent, isStandalone: true, selector: "bonc-seo-form", inputs: { label: "label", pageId: "pageId" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <h2 *ngIf=\"label\">{{label}}</h2>\n\n <div class=\"form-group\">\n <label>Title</label>\n <bonc-translation-input [text]=\"editable.value.title\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n </div>\n\n <div class=\"form-group\">\n <label>Description</label>\n <bonc-translation-textarea [text]=\"editable.value.description\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n </div>\n\n <div class=\"form-group\">\n <label>Share image | 1200x630</label>\n\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"replaceImage($event)\">\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\n </div>\n\n</bonc-form-controls>\n\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\n", styles: [":host{display:block}bonc-one-image-form{max-width:600px}img{display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] });
733
736
  }
734
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SeoFormComponent, decorators: [{
737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SeoFormComponent, decorators: [{
735
738
  type: Component,
736
- args: [{ selector: 'bonc-seo-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <h2 *ngIf=\"label\">{{label}}</h2>\r\n\r\n <div class=\"form-group\">\r\n <label>Title</label>\r\n <bonc-translation-input [text]=\"editable.value.title\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Description</label>\r\n <bonc-translation-textarea [text]=\"editable.value.description\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Share image | 1200x630</label>\r\n\r\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\r\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"replaceImage($event)\">\r\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\r\n </div>\r\n\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\r\n", styles: [":host{display:block}bonc-one-image-form{max-width:600px}img{display:block;width:100%}\n"] }]
739
+ args: [{ selector: 'bonc-seo-form', standalone: true, imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent, FileUploaderComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <h2 *ngIf=\"label\">{{label}}</h2>\n\n <div class=\"form-group\">\n <label>Title</label>\n <bonc-translation-input [text]=\"editable.value.title\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n </div>\n\n <div class=\"form-group\">\n <label>Description</label>\n <bonc-translation-textarea [text]=\"editable.value.description\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n </div>\n\n <div class=\"form-group\">\n <label>Share image | 1200x630</label>\n\n <bonc-file-uploader [src]=\"editable.value.image[locale]\"\n [uploadTypes]=\"['image/png', 'image/jpeg']\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"replaceImage($event)\">\n <img *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [src]=\"editable.value.image[locale].url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value.image[locale]?.url?.length ?? 0 > 0\" [href]=\"editable.value.image[locale].url\" download target=\"_blank\">Download</a>\n </div>\n\n</bonc-form-controls>\n\n<div *ngIf=\"!editable.value\">Editable Value canot be null or undefined</div>\n", styles: [":host{display:block}bonc-one-image-form{max-width:600px}img{display:block;width:100%}\n"] }]
737
740
  }], propDecorators: { label: [{
738
741
  type: Input
739
742
  }], pageId: [{
@@ -741,13 +744,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
741
744
  }] } });
742
745
 
743
746
  class SvgFormComponent extends FormBaseComponent {
744
- constructor(editable) {
745
- super(editable);
746
- this.cd = inject(ChangeDetectorRef);
747
- this.SvgMime = 'image/svg+xml';
748
- this.label = '';
749
- this.uploadMap = new Map();
750
- this._uploadUrl = '/api/admin/upload/image/svg';
747
+ cd = inject(ChangeDetectorRef);
748
+ SvgMime = 'image/svg+xml';
749
+ label = '';
750
+ uploadMap = new Map();
751
+ _uploadUrl = '/api/admin/upload/image/svg';
752
+ constructor() {
753
+ super();
751
754
  this.uploadMap.set(this.SvgMime, this._uploadUrl);
752
755
  }
753
756
  ngOnInit() {
@@ -766,15 +769,13 @@ class SvgFormComponent extends FormBaseComponent {
766
769
  this.editable.value = svgSrc;
767
770
  this.editable.updateDirty();
768
771
  }
769
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SvgFormComponent, deps: [{ token: EditableDirective, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
770
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SvgFormComponent, selector: "bonc-svg-form", inputs: { label: "label", uploadUrl: "uploadUrl" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[SvgMime]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] }); }
772
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SvgFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
773
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SvgFormComponent, isStandalone: true, selector: "bonc-svg-form", inputs: { label: "label", uploadUrl: "uploadUrl" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[SvgMime]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] });
771
774
  }
772
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SvgFormComponent, decorators: [{
775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SvgFormComponent, decorators: [{
773
776
  type: Component,
774
- args: [{ selector: 'bonc-svg-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[SvgMime]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"] }]
775
- }], ctorParameters: () => [{ type: EditableDirective, decorators: [{
776
- type: Host
777
- }] }], propDecorators: { label: [{
777
+ args: [{ selector: 'bonc-svg-form', standalone: true, imports: [CommonModule, FormControlsComponent, FileUploaderComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[SvgMime]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"] }]
778
+ }], ctorParameters: () => [], propDecorators: { label: [{
778
779
  type: Input
779
780
  }], uploadUrl: [{
780
781
  type: Input
@@ -782,13 +783,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
782
783
 
783
784
  const DefaultImageMimeTypes = ['image/png', 'image/jpeg'];
784
785
  class OneImageFormComponent extends FormBaseComponent {
785
- constructor(editable) {
786
- super(editable);
787
- this.cd = inject(ChangeDetectorRef);
788
- this.uploadMap = new Map();
789
- this._mimeTypes = DefaultImageMimeTypes;
790
- this._uploadUrl = '/api/admin/upload/image';
791
- this._label = '';
786
+ cd = inject(ChangeDetectorRef);
787
+ uploadMap = new Map();
788
+ _mimeTypes = DefaultImageMimeTypes;
789
+ _uploadUrl = '/api/admin/upload/image';
790
+ _label = '';
791
+ constructor() {
792
+ super();
792
793
  this.uploadMap.set('', this._uploadUrl);
793
794
  }
794
795
  ngOnInit() {
@@ -820,15 +821,13 @@ class OneImageFormComponent extends FormBaseComponent {
820
821
  this.editable.value = svgSrc;
821
822
  this.editable.updateDirty();
822
823
  }
823
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: OneImageFormComponent, deps: [{ token: EditableDirective, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
824
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: OneImageFormComponent, selector: "bonc-one-image-form", inputs: { label: "label", uploadUrl: "uploadUrl", mimeTypes: "mimeTypes" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"mimeTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] }); }
824
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OneImageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
825
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: OneImageFormComponent, isStandalone: true, selector: "bonc-one-image-form", inputs: { label: "label", uploadUrl: "uploadUrl", mimeTypes: "mimeTypes" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"mimeTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] });
825
826
  }
826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: OneImageFormComponent, decorators: [{
827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OneImageFormComponent, decorators: [{
827
828
  type: Component,
828
- args: [{ selector: 'bonc-one-image-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"mimeTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"] }]
829
- }], ctorParameters: () => [{ type: EditableDirective, decorators: [{
830
- type: Host
831
- }] }], propDecorators: { label: [{
829
+ args: [{ selector: 'bonc-one-image-form', standalone: true, imports: [CommonModule, FormControlsComponent, FileUploaderComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"mimeTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <img *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [src]=\"editable.value?.url\" />\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n\n</bonc-form-controls>\n", styles: [":host{display:block}img{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block;width:100%}a{color:silver}\n"] }]
830
+ }], ctorParameters: () => [], propDecorators: { label: [{
832
831
  type: Input
833
832
  }], uploadUrl: [{
834
833
  type: Input
@@ -837,17 +836,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
837
836
  }] } });
838
837
 
839
838
  class FileFormComponent extends FormBaseComponent {
840
- constructor() {
841
- super(...arguments);
842
- this.label = '';
843
- this.uploadTypes = [];
844
- this.uploadMap = new Map();
845
- }
839
+ label = '';
846
840
  ngOnInit() {
847
841
  this.editable.externalSaveCall.subscribe(() => {
848
842
  this.editable.save();
849
843
  });
850
844
  }
845
+ uploadTypes = [];
846
+ uploadMap = new Map();
851
847
  ;
852
848
  onFileUploaded(fileSrc) {
853
849
  this.editable.startEditing();
@@ -855,12 +851,12 @@ class FileFormComponent extends FormBaseComponent {
855
851
  this.editable.value = svgSrc;
856
852
  this.editable.updateDirty();
857
853
  }
858
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FileFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
859
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: FileFormComponent, selector: "bonc-file-form", inputs: { label: "label", uploadTypes: "uploadTypes", uploadMap: "uploadMap" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"uploadTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}a{color:silver}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] }); }
854
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
855
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: FileFormComponent, isStandalone: true, selector: "bonc-file-form", inputs: { label: "label", uploadTypes: "uploadTypes", uploadMap: "uploadMap" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"uploadTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n", styles: [":host{display:block}a{color:silver}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] });
860
856
  }
861
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: FileFormComponent, decorators: [{
857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FileFormComponent, decorators: [{
862
858
  type: Component,
863
- args: [{ selector: 'bonc-file-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"uploadTypes\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}a{color:silver}\n"] }]
859
+ args: [{ selector: 'bonc-file-form', standalone: true, imports: [CommonModule, FormControlsComponent, FileUploaderComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"uploadTypes\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n <div *ngIf=\"editable.value?.url?.length ?? 0 > 0\">{{editable.value?.url}}</div>\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n", styles: [":host{display:block}a{color:silver}\n"] }]
864
860
  }], propDecorators: { label: [{
865
861
  type: Input
866
862
  }], uploadTypes: [{
@@ -879,23 +875,20 @@ var TextInputStyle;
879
875
  })(TextInputStyle || (TextInputStyle = {}));
880
876
 
881
877
  class TextFormComponent extends FormBaseComponent {
882
- constructor() {
883
- super(...arguments);
884
- this.TextInputStyle = TextInputStyle;
885
- this.label = '';
886
- this.type = TextInputStyle.SingleLine;
887
- }
878
+ TextInputStyle = TextInputStyle;
879
+ label = '';
880
+ type = TextInputStyle.SingleLine;
888
881
  ngOnInit() {
889
882
  this.editable.externalSaveCall.subscribe(() => {
890
883
  this.editable.save();
891
884
  });
892
885
  }
893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
894
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TextFormComponent, selector: "bonc-text-form", inputs: { label: "label", type: "type" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\" />\r\n\r\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\">\r\n </textarea>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}input,textarea{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box;font-size:inherit}input:hover,textarea:hover{border-color:transparent;background-color:#333;cursor:pointer}input:focus,textarea:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }] }); }
886
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TextFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
887
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: TextFormComponent, isStandalone: true, selector: "bonc-text-form", inputs: { label: "label", type: "type" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\" />\n\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\">\n </textarea>\n</bonc-form-controls>\n", styles: [":host{display:block}input,textarea{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box}input:hover,textarea:hover{border-color:transparent;background-color:#333;cursor:pointer}input:focus,textarea:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}input,textarea{font-size:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }] });
895
888
  }
896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextFormComponent, decorators: [{
889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TextFormComponent, decorators: [{
897
890
  type: Component,
898
- args: [{ selector: 'bonc-text-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\" />\r\n\r\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\r\n [(ngModel)]=\"editable.value\"\r\n (click)=\"editable.startEditing()\"\r\n (keyup)=\"editable.updateDirty()\"\r\n (blur)=\"editable.updateDirty()\">\r\n </textarea>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block}input,textarea{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box;font-size:inherit}input:hover,textarea:hover{border-color:transparent;background-color:#333;cursor:pointer}input:focus,textarea:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}\n"] }]
891
+ args: [{ selector: 'bonc-text-form', standalone: true, imports: [CommonModule, FormsModule, FormControlsComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <input *ngIf=\"editable && type === TextInputStyle.SingleLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\" />\n\n <textarea *ngIf=\"editable && type === TextInputStyle.MultiLine\"\n [(ngModel)]=\"editable.value\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\">\n </textarea>\n</bonc-form-controls>\n", styles: [":host{display:block}input,textarea{display:block;width:100%;padding:6px;color:silver;border:1px solid silver;background-color:transparent;box-sizing:border-box}input:hover,textarea:hover{border-color:transparent;background-color:#333;cursor:pointer}input:focus,textarea:focus{outline:none;color:#fff;border-color:transparent;background-color:#555}input,textarea{font-size:inherit}\n"] }]
899
892
  }], propDecorators: { label: [{
900
893
  type: Input
901
894
  }], type: [{
@@ -903,12 +896,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
903
896
  }] } });
904
897
 
905
898
  class LottieFormComponent extends FormBaseComponent {
906
- constructor() {
907
- super(...arguments);
908
- this.LottieMimeType = 'application/json';
909
- this.label = '';
910
- this.uploadMap = new Map();
911
- }
899
+ LottieMimeType = 'application/json';
900
+ animOptions;
901
+ label = '';
912
902
  ngOnInit() {
913
903
  this.editable.externalSaveCall.subscribe(() => {
914
904
  this.editable.save();
@@ -918,6 +908,7 @@ class LottieFormComponent extends FormBaseComponent {
918
908
  this.animOptions = url.length === 0 ? undefined : { path: url };
919
909
  });
920
910
  }
911
+ uploadMap = new Map();
921
912
  ;
922
913
  onFileUploaded(fileSrc) {
923
914
  this.editable.startEditing();
@@ -925,12 +916,12 @@ class LottieFormComponent extends FormBaseComponent {
925
916
  this.editable.value = svgSrc;
926
917
  this.editable.updateDirty();
927
918
  }
928
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LottieFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
929
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: LottieFormComponent, selector: "bonc-lottie-form", inputs: { label: "label", uploadMap: "uploadMap" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[LottieMimeType]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n\r\n <ng-lottie *ngIf=\"animOptions\"\r\n [options]=\"animOptions\"></ng-lottie>\r\n\r\n\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block;max-width:600px}a{color:silver}ng-lottie{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }] }); }
919
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LottieFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
920
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: LottieFormComponent, isStandalone: true, selector: "bonc-lottie-form", inputs: { label: "label", uploadMap: "uploadMap" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[LottieMimeType]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n\n <ng-lottie *ngIf=\"animOptions\"\n [options]=\"animOptions\"></ng-lottie>\n\n\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n", styles: [":host{display:block;max-width:600px}a{color:silver}ng-lottie{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: FileUploaderComponent, selector: "bonc-file-uploader", inputs: ["uploadUrlMap", "src", "uploadTypes"], outputs: ["srcChange"] }, { kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }] });
930
921
  }
931
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LottieFormComponent, decorators: [{
922
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LottieFormComponent, decorators: [{
932
923
  type: Component,
933
- args: [{ selector: 'bonc-lottie-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n <bonc-file-uploader [src]=\"editable.value\"\r\n [uploadTypes]=\"[LottieMimeType]\"\r\n [uploadUrlMap]=\"uploadMap\"\r\n (srcChange)=\"onFileUploaded($event)\">\r\n\r\n <ng-lottie *ngIf=\"animOptions\"\r\n [options]=\"animOptions\"></ng-lottie>\r\n\r\n\r\n </bonc-file-uploader>\r\n\r\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\r\n</bonc-form-controls>\r\n", styles: [":host{display:block;max-width:600px}a{color:silver}ng-lottie{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block}\n"] }]
924
+ args: [{ selector: 'bonc-lottie-form', standalone: true, imports: [CommonModule, FormControlsComponent, FileUploaderComponent, LottieComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[LottieMimeType]\"\n [uploadUrlMap]=\"uploadMap\"\n (srcChange)=\"onFileUploaded($event)\">\n\n <ng-lottie *ngIf=\"animOptions\"\n [options]=\"animOptions\"></ng-lottie>\n\n\n </bonc-file-uploader>\n\n <a *ngIf=\"editable.value?.url?.length ?? 0 > 0\" [href]=\"editable.value!.url\" download target=\"_blank\">Download</a>\n</bonc-form-controls>\n", styles: [":host{display:block;max-width:600px}a{color:silver}ng-lottie{background-image:linear-gradient(45deg,#808080 25%,transparent 25%),linear-gradient(-45deg,#808080 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#808080 75%),linear-gradient(-45deg,transparent 75%,#808080 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0px;display:block}\n"] }]
934
925
  }], propDecorators: { label: [{
935
926
  type: Input
936
927
  }], uploadMap: [{
@@ -939,21 +930,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
939
930
  }] } });
940
931
 
941
932
  class TranslationFormComponent extends FormBaseComponent {
942
- constructor() {
943
- super(...arguments);
944
- this.TextEditorField = TextEditorField;
945
- }
933
+ TextEditorField = TextEditorField;
934
+ field;
935
+ label;
946
936
  ngOnInit() {
947
937
  this.editable.externalSaveCall.subscribe(() => {
948
938
  this.editable.save();
949
939
  });
950
940
  }
951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TranslationFormComponent, selector: "bonc-translation-form", inputs: { field: "field", label: "label" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n [text]=\"editable.value\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n\r\n\r\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n [text]=\"editable.value\"\r\n [minRows]=\"2\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }] }); }
941
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
942
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: TranslationFormComponent, isStandalone: true, selector: "bonc-translation-form", inputs: { field: "field", label: "label" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n [text]=\"editable.value\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n\n\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n [text]=\"editable.value\"\n [minRows]=\"2\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n</bonc-form-controls>\n\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormControlsComponent, selector: "bonc-form-controls", inputs: ["editable"] }, { kind: "component", type: TranslationInputComponent, selector: "bonc-translation-input", inputs: ["text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }, { kind: "component", type: TranslationTextareaComponent, selector: "bonc-translation-textarea", inputs: ["minRows", "maxRows", "text", "locale", "device"], outputs: ["startEditing", "changed", "blurred"] }] });
953
943
  }
954
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TranslationFormComponent, decorators: [{
944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationFormComponent, decorators: [{
955
945
  type: Component,
956
- args: [{ selector: 'bonc-translation-form', hostDirectives: [EditableDirective], template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\r\n <label *ngIf=\"label\">{{label}}</label>\r\n\r\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\r\n [text]=\"editable.value\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-input>\r\n\r\n\r\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\r\n [text]=\"editable.value\"\r\n [minRows]=\"2\"\r\n [locale]=\"locale\"\r\n (startEditing)=\"editable.startEditing()\"\r\n (changed)=\"editable.updateDirty()\"\r\n (blurred)=\"editable.updateDirty()\">\r\n </bonc-translation-textarea>\r\n</bonc-form-controls>\r\n\r\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\r\n", styles: [":host{display:block}\n"] }]
946
+ args: [{ selector: 'bonc-translation-form', standalone: true, imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent], hostDirectives: [EditableDirective], template: "<bonc-form-controls *ngIf=\"editable.value\" [editable]=\"editable\">\n <label *ngIf=\"label\">{{label}}</label>\n\n <bonc-translation-input *ngIf=\"field === TextEditorField.Input\"\n [text]=\"editable.value\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n\n\n <bonc-translation-textarea *ngIf=\"field === TextEditorField.Textarea\"\n [text]=\"editable.value\"\n [minRows]=\"2\"\n [locale]=\"locale\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-textarea>\n</bonc-form-controls>\n\n<div *ngIf=\"editable.value===undefined\">Editable value canot be undefined</div>\n", styles: [":host{display:block}\n"] }]
957
947
  }], propDecorators: { field: [{
958
948
  type: Input,
959
949
  args: [{ required: true }]
@@ -962,21 +952,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
962
952
  }] } });
963
953
 
964
954
  class UnknownFormComponent extends FormBaseComponent {
965
- constructor() {
966
- super(...arguments);
967
- this.label = '';
968
- }
955
+ label = '';
969
956
  ngOnInit() {
970
957
  this.editable.externalSaveCall.subscribe(() => {
971
958
  this.editable.save();
972
959
  });
973
960
  }
974
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: UnknownFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: UnknownFormComponent, selector: "bonc-unknown-form", inputs: { label: "label" }, usesInheritance: true, ngImport: i0, template: "<label>Unknown form:<b>{{label}}</b></label>\r\n<pre><ng-content></ng-content></pre>\r\n", styles: [":host{display:block;color:#000;padding:20px;background-color:#dc143c;margin-bottom:10px}\n"] }); }
961
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UnknownFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
962
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: UnknownFormComponent, isStandalone: true, selector: "bonc-unknown-form", inputs: { label: "label" }, usesInheritance: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<label>Unknown form:<b>{{label}}</b></label>\n<pre><ng-content></ng-content></pre>\n", styles: [":host{display:block;color:#000;padding:20px;background-color:#dc143c;margin-bottom:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
976
963
  }
977
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: UnknownFormComponent, decorators: [{
964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UnknownFormComponent, decorators: [{
978
965
  type: Component,
979
- args: [{ selector: 'bonc-unknown-form', template: "<label>Unknown form:<b>{{label}}</b></label>\r\n<pre><ng-content></ng-content></pre>\r\n", styles: [":host{display:block;color:#000;padding:20px;background-color:#dc143c;margin-bottom:10px}\n"] }]
966
+ args: [{ selector: 'bonc-unknown-form', standalone: true, imports: [CommonModule], hostDirectives: [EditableDirective], template: "<label>Unknown form:<b>{{label}}</b></label>\n<pre><ng-content></ng-content></pre>\n", styles: [":host{display:block;color:#000;padding:20px;background-color:#dc143c;margin-bottom:10px}\n"] }]
980
967
  }], propDecorators: { label: [{
981
968
  type: Input
982
969
  }] } });
@@ -984,10 +971,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
984
971
  const API_BASE_URL = new InjectionToken('ApiBaseUrl');
985
972
 
986
973
  class DataService {
987
- constructor(http, baseHref) {
988
- this.http = http;
989
- this.baseHref = baseHref;
990
- }
974
+ http = inject(HttpClient);
975
+ baseHref = inject(API_BASE_URL);
991
976
  getView(viewCode) {
992
977
  const pageOb = this.getSkeleton(`${this.baseHref}api/views/${viewCode}`);
993
978
  return pageOb;
@@ -1042,21 +1027,18 @@ class DataService {
1042
1027
  }));
1043
1028
  return routeDataObs;
1044
1029
  }
1045
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DataService, deps: [{ token: i1$2.HttpClient }, { token: API_BASE_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
1046
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DataService }); }
1030
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1031
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DataService });
1047
1032
  }
1048
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DataService, decorators: [{
1033
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DataService, decorators: [{
1049
1034
  type: Injectable
1050
- }], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: undefined, decorators: [{
1051
- type: Inject,
1052
- args: [API_BASE_URL]
1053
- }] }] });
1035
+ }] });
1054
1036
 
1055
1037
  class AdminDataService {
1056
- constructor(http, baseHref) {
1057
- this.http = http;
1058
- this.baseHref = baseHref;
1059
- console.log('baseHref: ' + baseHref);
1038
+ http = inject(HttpClient);
1039
+ baseHref = inject(API_BASE_URL);
1040
+ constructor() {
1041
+ console.log('baseHref: ' + this.baseHref);
1060
1042
  }
1061
1043
  getSettingGroups() {
1062
1044
  const pageOb = this.http.get(`${this.baseHref}api/admin/settings`);
@@ -1074,23 +1056,19 @@ class AdminDataService {
1074
1056
  const ob = this.http.post(`${this.baseHref}api/admin/settings`, settings);
1075
1057
  return ob;
1076
1058
  }
1077
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AdminDataService, deps: [{ token: i1$2.HttpClient }, { token: API_BASE_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
1078
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AdminDataService }); }
1059
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdminDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1060
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdminDataService });
1079
1061
  }
1080
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AdminDataService, decorators: [{
1062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdminDataService, decorators: [{
1081
1063
  type: Injectable
1082
- }], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: undefined, decorators: [{
1083
- type: Inject,
1084
- args: [API_BASE_URL]
1085
- }] }] });
1064
+ }], ctorParameters: () => [] });
1086
1065
 
1087
1066
  class AdminControlsComponent {
1088
- constructor() {
1089
- this.DeviceType = DeviceType;
1090
- this.deviceControls = false;
1091
- this.locale = 'en';
1092
- this.device = this.DeviceType.Desktop;
1093
- }
1067
+ DeviceType = DeviceType;
1068
+ editableGroup;
1069
+ deviceControls = false;
1070
+ locale = 'en';
1071
+ device = this.DeviceType.Desktop;
1094
1072
  changeLocale() {
1095
1073
  this.locale = this.locale === 'en' ? 'ru' : 'en';
1096
1074
  }
@@ -1110,12 +1088,12 @@ class AdminControlsComponent {
1110
1088
  return;
1111
1089
  }
1112
1090
  }
1113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AdminControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AdminControlsComponent, selector: "bonc-admin-controls", inputs: { editableGroup: "editableGroup", deviceControls: "deviceControls" }, ngImport: i0, template: "<div class=\"page-controls\">\r\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\r\n\r\n <!-- todo: return this functionality -->\r\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\r\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\r\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\r\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\r\n </a> -->\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.saveAll()\"\r\n class=\"save\">Save all</a>\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.cancelAll()\"\r\n class=\"cancel\">Cancel all</a>\r\n</div>\r\n", styles: [":host{display:block;position:sticky;top:0;width:100%;z-index:1000}.page-controls{background-color:#111;height:60px;display:flex;align-items:center;justify-content:center}.page-controls a{color:silver;padding:4px;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center}.page-controls a:hover{color:#000;background-color:#cf0}.page-controls a.device{width:80px}.page-controls a+a{margin-left:6px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1091
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdminControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1092
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: AdminControlsComponent, isStandalone: true, selector: "bonc-admin-controls", inputs: { editableGroup: "editableGroup", deviceControls: "deviceControls" }, ngImport: i0, template: "<div class=\"page-controls\">\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\n\n <!-- todo: return this functionality -->\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\n </a> -->\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.saveAll()\"\n class=\"save\">Save all</a>\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.cancelAll()\"\n class=\"cancel\">Cancel all</a>\n</div>\n", styles: [":host{display:block;position:sticky;top:0;width:100%;z-index:1000}.page-controls{background-color:#111;height:60px;display:flex;align-items:center;justify-content:center}.page-controls a{color:silver;padding:4px;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center}.page-controls a:hover{color:#000;background-color:#cf0}.page-controls a.device{width:80px}.page-controls a+a{margin-left:6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1115
1093
  }
1116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AdminControlsComponent, decorators: [{
1094
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdminControlsComponent, decorators: [{
1117
1095
  type: Component,
1118
- args: [{ selector: 'bonc-admin-controls', template: "<div class=\"page-controls\">\r\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\r\n\r\n <!-- todo: return this functionality -->\r\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\r\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\r\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\r\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\r\n </a> -->\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.saveAll()\"\r\n class=\"save\">Save all</a>\r\n\r\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\r\n (click)=\"editableGroup.cancelAll()\"\r\n class=\"cancel\">Cancel all</a>\r\n</div>\r\n", styles: [":host{display:block;position:sticky;top:0;width:100%;z-index:1000}.page-controls{background-color:#111;height:60px;display:flex;align-items:center;justify-content:center}.page-controls a{color:silver;padding:4px;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center}.page-controls a:hover{color:#000;background-color:#cf0}.page-controls a.device{width:80px}.page-controls a+a{margin-left:6px}\n"] }]
1096
+ args: [{ selector: 'bonc-admin-controls', standalone: true, imports: [CommonModule], template: "<div class=\"page-controls\">\n <a (click)=\"changeLocale()\" class=\"locale\">Locale: {{locale}}</a>\n\n <!-- todo: return this functionality -->\n <!-- <a *ngIf=\"deviceControls\" (click)=\"changeDevice()\" class=\"device\">\n <span *ngIf=\"device === DeviceType.Desktop\">DESKTOP</span>\n <span *ngIf=\"device === DeviceType.Tablet\">TABLET</span>\n <span *ngIf=\"device === DeviceType.Mobile\">MOBILE</span>\n </a> -->\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.saveAll()\"\n class=\"save\">Save all</a>\n\n <a *ngIf=\"editableGroup && editableGroup.inEditMode\"\n (click)=\"editableGroup.cancelAll()\"\n class=\"cancel\">Cancel all</a>\n</div>\n", styles: [":host{display:block;position:sticky;top:0;width:100%;z-index:1000}.page-controls{background-color:#111;height:60px;display:flex;align-items:center;justify-content:center}.page-controls a{color:silver;padding:4px;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center}.page-controls a:hover{color:#000;background-color:#cf0}.page-controls a.device{width:80px}.page-controls a+a{margin-left:6px}\n"] }]
1119
1097
  }], propDecorators: { editableGroup: [{
1120
1098
  type: Input,
1121
1099
  args: [{ required: true }]
@@ -1129,17 +1107,21 @@ const imageFileTypes = imageMimeTypes.join(',');
1129
1107
  const videoFileTypes = videoMimeTypes.join(',');
1130
1108
  const allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;
1131
1109
  class MediaUploaderComponent {
1132
- constructor(sanitizer, http, cd) {
1133
- this.sanitizer = sanitizer;
1134
- this.http = http;
1135
- this.cd = cd;
1136
- this.MediaObjectFit = MediaObjectFit;
1137
- this.srcChange = new EventEmitter();
1138
- this.progress = 0;
1139
- this.isUploading = false;
1140
- this.autoplay = true;
1141
- this.fileTypeMask = allMediaFileTypes;
1142
- }
1110
+ MediaObjectFit = MediaObjectFit;
1111
+ fileInput;
1112
+ srcChange = new EventEmitter();
1113
+ uploadUrlMap;
1114
+ forceRatio;
1115
+ progress = 0;
1116
+ isUploading = false;
1117
+ autoplay = true;
1118
+ clipStyle;
1119
+ fileTypeMask = allMediaFileTypes;
1120
+ _uploadType;
1121
+ _src;
1122
+ sanitizer = inject(DomSanitizer);
1123
+ http = inject(HttpClient);
1124
+ cd = inject(ChangeDetectorRef);
1143
1125
  set src(newSrc) {
1144
1126
  if (this._src === newSrc)
1145
1127
  return;
@@ -1252,13 +1234,13 @@ class MediaUploaderComponent {
1252
1234
  };
1253
1235
  return func;
1254
1236
  }
1255
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i1$2.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MediaUploaderComponent, selector: "bonc-media-uploader", inputs: { uploadUrlMap: "uploadUrlMap", forceRatio: "forceRatio", src: "src", uploadType: "uploadType" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MarcyMediaComponent, selector: "bon-media", inputs: ["src", "objectFit"], outputs: ["isLoaded"] }, { kind: "pipe", type: i2$1.DecimalPipe, name: "number" }] }); }
1237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MediaUploaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: MediaUploaderComponent, isStandalone: true, selector: "bonc-media-uploader", inputs: { uploadUrlMap: "uploadUrlMap", forceRatio: "forceRatio", src: "src", uploadType: "uploadType" }, outputs: { srcChange: "srcChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\n\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MarcyMediaComponent, selector: "bon-media", inputs: ["src", "objectFit"], outputs: ["isLoaded"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] });
1257
1239
  }
1258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MediaUploaderComponent, decorators: [{
1240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MediaUploaderComponent, decorators: [{
1259
1241
  type: Component,
1260
- args: [{ selector: 'bonc-media-uploader', template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\r\n\r\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\r\n\r\n<div (click)=\"selectFile($event)\" class=\"media-container\">\r\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\r\n <span *ngIf=\"isUploading\"\r\n [style.clip-path]=\"clipStyle\"\r\n [style.-webkit-clip-path]=\"clipStyle\"\r\n class=\"loader\"></span>\r\n\r\n <span *ngIf=\"isUploading\" class=\"loader-text\">\r\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\r\n <span *ngIf=\"progress >= 1\">converting</span>\r\n </span>\r\n</div>\r\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
1261
- }], ctorParameters: () => [{ type: i1$1.DomSanitizer }, { type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { fileInput: [{
1242
+ args: [{ selector: 'bonc-media-uploader', standalone: true, imports: [CommonModule, DecimalPipe, MarcyMediaComponent], template: "<bon-media [src]=\"src\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\n\n<div *ngIf=\"src?.sources?.length===0\">Upload media</div>\n\n<div (click)=\"selectFile($event)\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n <span *ngIf=\"isUploading\"\n [style.clip-path]=\"clipStyle\"\n [style.-webkit-clip-path]=\"clipStyle\"\n class=\"loader\"></span>\n\n <span *ngIf=\"isUploading\" class=\"loader-text\">\n <span *ngIf=\"progress < 1\">{{100 * progress | number: '1.0-0'}}%</span>\n <span *ngIf=\"progress >= 1\">converting</span>\n </span>\n</div>\n", styles: [":host{display:block;background-color:#000;position:relative}.media-container{display:block;position:absolute;inset:0;cursor:pointer}.media-container:hover:hover:after{display:flex;justify-content:center;align-items:center;content:\"\";position:absolute;color:silver;inset:0;font-weight:700;font-size:50pt;pointer-events:none;background-color:#ccff00b3}.media-container img,.media-container video{display:block;position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}input[type=file]{display:none}.loader{position:absolute;inset:0;background-color:#cf0}.loader-text{background-color:#000;position:absolute;top:50%;left:0;right:0;text-align:center;font-size:20pt;margin-top:-10pt;color:#fff}\n"] }]
1243
+ }], propDecorators: { fileInput: [{
1262
1244
  type: ViewChild,
1263
1245
  args: ['fileInput', { static: true }]
1264
1246
  }], srcChange: [{
@@ -1275,49 +1257,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
1275
1257
  }] } });
1276
1258
 
1277
1259
  class SkeletonEditorAnchorDirective {
1278
- constructor(viewContainerRef) {
1279
- this.viewContainerRef = viewContainerRef;
1280
- }
1281
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonEditorAnchorDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1282
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: SkeletonEditorAnchorDirective, selector: "[boncSkeletonEditorAnchor]", ngImport: i0 }); }
1260
+ viewContainerRef = inject(ViewContainerRef);
1261
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonEditorAnchorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1262
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: SkeletonEditorAnchorDirective, isStandalone: true, selector: "[boncSkeletonEditorAnchor]", ngImport: i0 });
1283
1263
  }
1284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonEditorAnchorDirective, decorators: [{
1264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonEditorAnchorDirective, decorators: [{
1285
1265
  type: Directive,
1286
1266
  args: [{
1287
- selector: '[boncSkeletonEditorAnchor]'
1267
+ selector: '[boncSkeletonEditorAnchor]',
1268
+ standalone: true
1288
1269
  }]
1289
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
1270
+ }] });
1290
1271
 
1291
1272
  class BoneEditorBaseComponent {
1273
+ editing = new EventEmitter();
1274
+ saved = new EventEmitter();
1275
+ removed = new EventEmitter();
1276
+ noPresets;
1277
+ locale;
1278
+ device = DeviceType.NotSet;
1279
+ _bone;
1280
+ _storedData = '';
1281
+ _currentPreset;
1282
+ presets;
1283
+ _isDirty = false;
1284
+ _isEditing = false;
1292
1285
  constructor() {
1293
- this.editing = new EventEmitter();
1294
- this.saved = new EventEmitter();
1295
- this.removed = new EventEmitter();
1296
- this.device = DeviceType.NotSet;
1297
- this._storedData = '';
1298
- this._isDirty = false;
1299
- this._isEditing = false;
1300
- this.applyPresetAtIndex = (newIndex) => {
1301
- newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;
1302
- const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);
1303
- if (currentIndex === newIndex)
1304
- return;
1305
- this._currentPreset = this.presets[newIndex];
1306
- this._currentPreset.transformer(this._bone);
1307
- this.updateDirty();
1308
- };
1309
- this.updatePresetByData = () => {
1310
- const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;
1311
- if (countOfActive !== 1)
1312
- throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);
1313
- for (let i = 0; this.presets.length; i++) {
1314
- const preset = this.presets[i];
1315
- if (preset.isActive(this._bone)) {
1316
- this.applyPresetAtIndex(i);
1317
- break;
1318
- }
1319
- }
1320
- };
1321
1286
  this.presets = this.getPresets();
1322
1287
  if (this.presets === undefined || this.presets === null)
1323
1288
  throw new Error('presets cannot be undefined in ContentPreset constructor');
@@ -1405,10 +1370,31 @@ class BoneEditorBaseComponent {
1405
1370
  const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;
1406
1371
  this.applyPresetAtIndex(newIndex);
1407
1372
  }
1408
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneEditorBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1409
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: BoneEditorBaseComponent, selector: "ng-component", inputs: { locale: "locale", bone: "bone" }, host: { properties: { "class.mobile": "this.isMobile", "class.tablet": "this.isTablet", "class.desktop": "this.isDesktop" } }, ngImport: i0, template: '', isInline: true }); }
1373
+ applyPresetAtIndex = (newIndex) => {
1374
+ newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;
1375
+ const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);
1376
+ if (currentIndex === newIndex)
1377
+ return;
1378
+ this._currentPreset = this.presets[newIndex];
1379
+ this._currentPreset.transformer(this._bone);
1380
+ this.updateDirty();
1381
+ };
1382
+ updatePresetByData = () => {
1383
+ const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;
1384
+ if (countOfActive !== 1)
1385
+ throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);
1386
+ for (let i = 0; this.presets.length; i++) {
1387
+ const preset = this.presets[i];
1388
+ if (preset.isActive(this._bone)) {
1389
+ this.applyPresetAtIndex(i);
1390
+ break;
1391
+ }
1392
+ }
1393
+ };
1394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoneEditorBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: BoneEditorBaseComponent, isStandalone: true, selector: "ng-component", inputs: { locale: "locale", bone: "bone" }, host: { properties: { "class.mobile": "this.isMobile", "class.tablet": "this.isTablet", "class.desktop": "this.isDesktop" } }, ngImport: i0, template: '', isInline: true });
1410
1396
  }
1411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneEditorBaseComponent, decorators: [{
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoneEditorBaseComponent, decorators: [{
1412
1398
  type: Component,
1413
1399
  args: [{ template: '' }]
1414
1400
  }], ctorParameters: () => [], propDecorators: { locale: [{
@@ -1434,36 +1420,37 @@ class UnknownBoneEditorComponent extends BoneEditorBaseComponent {
1434
1420
  getPresets() {
1435
1421
  return [];
1436
1422
  }
1437
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: UnknownBoneEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1438
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: UnknownBoneEditorComponent, selector: "bonc-unknown-bone-editor", usesInheritance: true, ngImport: i0, template: "<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\r\n<pre>{{bone | json}}</pre>\r\n", styles: [":host{display:block;background-color:#dc143c}\n"], dependencies: [{ kind: "pipe", type: i2$1.JsonPipe, name: "json" }] }); }
1423
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UnknownBoneEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1424
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: UnknownBoneEditorComponent, isStandalone: true, selector: "bonc-unknown-bone-editor", usesInheritance: true, ngImport: i0, template: "<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\n<pre>{{bone | json}}</pre>\n", styles: [":host{display:block;background-color:#dc143c}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.JsonPipe, name: "json" }] });
1439
1425
  }
1440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: UnknownBoneEditorComponent, decorators: [{
1426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UnknownBoneEditorComponent, decorators: [{
1441
1427
  type: Component,
1442
- args: [{ selector: 'bonc-unknown-bone-editor', template: "<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\r\n<pre>{{bone | json}}</pre>\r\n", styles: [":host{display:block;background-color:#dc143c}\n"] }]
1428
+ args: [{ selector: 'bonc-unknown-bone-editor', standalone: true, imports: [CommonModule, JsonPipe], template: "<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\n<pre>{{bone | json}}</pre>\n", styles: [":host{display:block;background-color:#dc143c}\n"] }]
1443
1429
  }] });
1444
1430
 
1445
1431
  // todo: rename class
1446
1432
  class BoneEditorContainerComponent {
1447
- constructor(componentFactoryResolver) {
1448
- this.componentFactoryResolver = componentFactoryResolver;
1449
- this.removed = new EventEmitter();
1450
- this.saved = new EventEmitter();
1451
- this.editing = new EventEmitter();
1452
- this.DeviceType = DeviceType;
1453
- this.themePopupIsShown = false;
1454
- this.device = DeviceType.NotSet;
1455
- this.nextPreset = () => {
1456
- if (this.editor === undefined || this.editor === null)
1457
- return;
1458
- this.editor.nextPreset();
1459
- };
1460
- }
1433
+ anchor;
1434
+ removed = new EventEmitter();
1435
+ saved = new EventEmitter();
1436
+ editing = new EventEmitter();
1437
+ DeviceType = DeviceType;
1438
+ editor;
1439
+ themePopupIsShown = false;
1440
+ _bone;
1441
+ removeSubscription;
1442
+ saveSubscription;
1443
+ changedSubscription;
1444
+ locale;
1445
+ device = DeviceType.NotSet;
1446
+ componentFactoryResolver = inject(ComponentFactoryResolver);
1461
1447
  ngOnChanges() {
1462
1448
  if (this.editor === undefined || this.editor === null)
1463
1449
  return;
1464
1450
  this.editor.locale = this.locale;
1465
1451
  this.editor.device = this.device;
1466
1452
  }
1453
+ map;
1467
1454
  get bone() {
1468
1455
  return this._bone;
1469
1456
  }
@@ -1499,6 +1486,11 @@ class BoneEditorContainerComponent {
1499
1486
  });
1500
1487
  this.ngOnChanges();
1501
1488
  }
1489
+ nextPreset = () => {
1490
+ if (this.editor === undefined || this.editor === null)
1491
+ return;
1492
+ this.editor.nextPreset();
1493
+ };
1502
1494
  // todo: add or remove visibility feature
1503
1495
  // public setDisabled = (disabled: boolean): void => {
1504
1496
  // if (this.editor === undefined || this.editor === null)
@@ -1526,13 +1518,13 @@ class BoneEditorContainerComponent {
1526
1518
  // return false;
1527
1519
  // return true;
1528
1520
  }
1529
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneEditorContainerComponent, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
1530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: BoneEditorContainerComponent, selector: "bonc-bone-editor-container", inputs: { locale: "locale", device: "device", map: "map", bone: "bone" }, outputs: { removed: "removed", saved: "saved", editing: "editing" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: SkeletonEditorAnchorDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\r\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\r\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\r\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\r\n</div>\r\n\r\n<div class=\"editor-container\"\r\n [class.disabled]=\"disabled\"\r\n [style.width]=\"\r\n device === DeviceType.Desktop ? '75vw'\r\n : device === DeviceType.Tablet ? '55vw'\r\n : device === DeviceType.Mobile ? '35vw'\r\n : '75vw' \">\r\n <ng-template boncSkeletonEditorAnchor>\r\n </ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\r\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\r\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\r\n</div>\r\n", styles: [":host{display:flex}.editor-container{background-color:var(--bg-color)}.editor-container.disabled{opacity:.1;pointer-events:none}.editor-container.mobile{width:350px}.preset{white-space:pre-line}.bar{width:120px;display:flex;flex-direction:column;pointer-events:all}.bar.left:hover,.bar.active{background-color:#111}.bar.hidden{opacity:.2}.bar.left{position:relative;border-right:none}.bar.right{border-left:none;text-align:right}.bar.right .delete{display:none}.bar.right .delete:hover{color:#ff355e}.bar.right.active .delete,.bar.right:hover .delete{display:block}.left.bar.inactive a:hover{cursor:initial;color:#444}.popup{position:absolute;top:0;right:-350px;display:flex;flex-direction:column;width:350px;padding:20px;color:#222;background-color:#fff;border:2px solid black;box-sizing:border-box;z-index:3}.popup a{padding:0!important;cursor:pointer!important}.popup a.close{position:absolute;top:10px;right:10px;color:#666}.popup a.close:hover{background-color:#cf0!important}.popup a.reset{align-self:flex-start;margin-top:30px}.popup a.reset:hover{background-color:#cf0!important}.color-group{display:flex}.color-group:first-of-type{margin-top:20px}.color-group label{flex:1}.color-group input{border:1px solid #222;padding:6px;cursor:pointer}.color-group input:hover,.color-group input:focus{outline:none}.color-group+.color-group{margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: SkeletonEditorAnchorDirective, selector: "[boncSkeletonEditorAnchor]" }] }); }
1521
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoneEditorContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1522
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: BoneEditorContainerComponent, isStandalone: true, selector: "bonc-bone-editor-container", inputs: { locale: "locale", device: "device", map: "map", bone: "bone" }, outputs: { removed: "removed", saved: "saved", editing: "editing" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: SkeletonEditorAnchorDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\n</div>\n\n<div class=\"editor-container\"\n [class.disabled]=\"disabled\"\n [style.width]=\"\n device === DeviceType.Desktop ? '75vw'\n : device === DeviceType.Tablet ? '55vw'\n : device === DeviceType.Mobile ? '35vw'\n : '75vw' \">\n <ng-template boncSkeletonEditorAnchor>\n </ng-template>\n</div>\n\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\n</div>\n", styles: [":host{display:flex}.editor-container{background-color:var(--bg-color)}.editor-container.disabled{opacity:.1;pointer-events:none}.editor-container.mobile{width:350px}.preset{white-space:pre-line}.bar{width:120px;display:flex;flex-direction:column;pointer-events:all}.bar.left:hover,.bar.active{background-color:#111}.bar.hidden{opacity:.2}.bar.left{position:relative;border-right:none}.bar.right{border-left:none;text-align:right}.bar.right .delete{display:none}.bar.right .delete:hover{color:#ff355e}.bar.right.active .delete,.bar.right:hover .delete{display:block}.left.bar.inactive a:hover{cursor:initial;color:#444}.popup{position:absolute;top:0;right:-350px;display:flex;flex-direction:column;width:350px;padding:20px;color:#222;background-color:#fff;border:2px solid black;box-sizing:border-box;z-index:3}.popup a{padding:0!important;cursor:pointer!important}.popup a.close{position:absolute;top:10px;right:10px;color:#666}.popup a.close:hover{background-color:#cf0!important}.popup a.reset{align-self:flex-start;margin-top:30px}.popup a.reset:hover{background-color:#cf0!important}.color-group{display:flex}.color-group:first-of-type{margin-top:20px}.color-group label{flex:1}.color-group input{border:1px solid #222;padding:6px;cursor:pointer}.color-group input:hover,.color-group input:focus{outline:none}.color-group+.color-group{margin-top:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: SkeletonEditorAnchorDirective, selector: "[boncSkeletonEditorAnchor]" }] });
1531
1523
  }
1532
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BoneEditorContainerComponent, decorators: [{
1524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BoneEditorContainerComponent, decorators: [{
1533
1525
  type: Component,
1534
- args: [{ selector: 'bonc-bone-editor-container', template: "<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\r\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\r\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\r\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\r\n</div>\r\n\r\n<div class=\"editor-container\"\r\n [class.disabled]=\"disabled\"\r\n [style.width]=\"\r\n device === DeviceType.Desktop ? '75vw'\r\n : device === DeviceType.Tablet ? '55vw'\r\n : device === DeviceType.Mobile ? '35vw'\r\n : '75vw' \">\r\n <ng-template boncSkeletonEditorAnchor>\r\n </ng-template>\r\n</div>\r\n\r\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\r\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\r\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\r\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\r\n</div>\r\n", styles: [":host{display:flex}.editor-container{background-color:var(--bg-color)}.editor-container.disabled{opacity:.1;pointer-events:none}.editor-container.mobile{width:350px}.preset{white-space:pre-line}.bar{width:120px;display:flex;flex-direction:column;pointer-events:all}.bar.left:hover,.bar.active{background-color:#111}.bar.hidden{opacity:.2}.bar.left{position:relative;border-right:none}.bar.right{border-left:none;text-align:right}.bar.right .delete{display:none}.bar.right .delete:hover{color:#ff355e}.bar.right.active .delete,.bar.right:hover .delete{display:block}.left.bar.inactive a:hover{cursor:initial;color:#444}.popup{position:absolute;top:0;right:-350px;display:flex;flex-direction:column;width:350px;padding:20px;color:#222;background-color:#fff;border:2px solid black;box-sizing:border-box;z-index:3}.popup a{padding:0!important;cursor:pointer!important}.popup a.close{position:absolute;top:10px;right:10px;color:#666}.popup a.close:hover{background-color:#cf0!important}.popup a.reset{align-self:flex-start;margin-top:30px}.popup a.reset:hover{background-color:#cf0!important}.color-group{display:flex}.color-group:first-of-type{margin-top:20px}.color-group label{flex:1}.color-group input{border:1px solid #222;padding:6px;cursor:pointer}.color-group input:hover,.color-group input:focus{outline:none}.color-group+.color-group{margin-top:10px}\n"] }]
1535
- }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }], propDecorators: { anchor: [{
1526
+ args: [{ selector: 'bonc-bone-editor-container', standalone: true, imports: [CommonModule, SkeletonEditorAnchorDirective], template: "<div *ngIf=\"editor\" class=\"left bar\" [class.inactive]=\"editor.noPresets\">\n <!-- <a *ngFor=\"let control of editor.controls\" (click)=\"control.activate()\">{{control.label}}</a> -->\n <!-- <a (click)=\"setDisabled(!disabled)\" class=\"disabled\">block {{disabled ? 'disabled' : 'enabled'}} ({{editor.bone.visibility}})</a> -->\n <a *ngIf=\"editor.currentPreset && !editor.noPresets\" (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset.title}}</a>\n</div>\n\n<div class=\"editor-container\"\n [class.disabled]=\"disabled\"\n [style.width]=\"\n device === DeviceType.Desktop ? '75vw'\n : device === DeviceType.Tablet ? '55vw'\n : device === DeviceType.Mobile ? '35vw'\n : '75vw' \">\n <ng-template boncSkeletonEditorAnchor>\n </ng-template>\n</div>\n\n<div *ngIf=\"editor\" [class.active]=\"editor.isEditing || editor.isDirty\" class=\"right bar\">\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.resetData()\" class=\"reset\">reset</a>\n <a *ngIf=\"editor.isEditing && !editor.isDirty\" (click)=\"editor.finishEditing()\" class=\"close\">close</a>\n <a *ngIf=\"editor.isDirty\" (click)=\"editor.save()\" class=\"save\">apply</a>\n</div>\n", styles: [":host{display:flex}.editor-container{background-color:var(--bg-color)}.editor-container.disabled{opacity:.1;pointer-events:none}.editor-container.mobile{width:350px}.preset{white-space:pre-line}.bar{width:120px;display:flex;flex-direction:column;pointer-events:all}.bar.left:hover,.bar.active{background-color:#111}.bar.hidden{opacity:.2}.bar.left{position:relative;border-right:none}.bar.right{border-left:none;text-align:right}.bar.right .delete{display:none}.bar.right .delete:hover{color:#ff355e}.bar.right.active .delete,.bar.right:hover .delete{display:block}.left.bar.inactive a:hover{cursor:initial;color:#444}.popup{position:absolute;top:0;right:-350px;display:flex;flex-direction:column;width:350px;padding:20px;color:#222;background-color:#fff;border:2px solid black;box-sizing:border-box;z-index:3}.popup a{padding:0!important;cursor:pointer!important}.popup a.close{position:absolute;top:10px;right:10px;color:#666}.popup a.close:hover{background-color:#cf0!important}.popup a.reset{align-self:flex-start;margin-top:30px}.popup a.reset:hover{background-color:#cf0!important}.color-group{display:flex}.color-group:first-of-type{margin-top:20px}.color-group label{flex:1}.color-group input{border:1px solid #222;padding:6px;cursor:pointer}.color-group input:hover,.color-group input:focus{outline:none}.color-group+.color-group{margin-top:10px}\n"] }]
1527
+ }], propDecorators: { anchor: [{
1536
1528
  type: ViewChild,
1537
1529
  args: [SkeletonEditorAnchorDirective, { static: true }]
1538
1530
  }], removed: [{
@@ -1556,11 +1548,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
1556
1548
 
1557
1549
  // todo: rename class
1558
1550
  class SkeletonEditorComponent {
1559
- constructor(editable) {
1560
- this.editable = editable;
1561
- this.device = DeviceType.NotSet;
1562
- this.templatesAreShown = [];
1563
- }
1551
+ boneEditorContainerList;
1552
+ locale;
1553
+ device = DeviceType.NotSet;
1554
+ templatesAreShown = [];
1555
+ editable = inject((EditableDirective), { host: true });
1564
1556
  ngOnInit() {
1565
1557
  this.editable.externalSaveCall.subscribe(() => {
1566
1558
  this.boneEditorContainerList.forEach(editorContainer => editorContainer.editor?.save());
@@ -1571,6 +1563,7 @@ class SkeletonEditorComponent {
1571
1563
  this.editable.save();
1572
1564
  });
1573
1565
  }
1566
+ map;
1574
1567
  ngOnChanges() {
1575
1568
  this.templatesAreShown.splice(0, this.templatesAreShown.length);
1576
1569
  if (this.bones === undefined)
@@ -1578,6 +1571,7 @@ class SkeletonEditorComponent {
1578
1571
  this.bones.forEach(() => this.templatesAreShown.push(false));
1579
1572
  this.templatesAreShown.push(false);
1580
1573
  }
1574
+ templates;
1581
1575
  get bones() {
1582
1576
  return this.editable?.value ?? [];
1583
1577
  }
@@ -1630,15 +1624,13 @@ class SkeletonEditorComponent {
1630
1624
  this.bones[index1] = this.bones[index2];
1631
1625
  this.bones[index2] = tempBone;
1632
1626
  }
1633
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonEditorComponent, deps: [{ token: EditableDirective, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
1634
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SkeletonEditorComponent, selector: "bonc-skeleton-editor", inputs: { locale: "locale", device: "device", map: "map", templates: "templates" }, viewQueries: [{ propertyName: "boneEditorContainerList", predicate: ["boneEditorContainer"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<ng-template #controls let-index='index'>\r\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\r\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\r\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\r\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\r\n </div>\r\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\r\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\r\n </div>\r\n\r\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\r\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\r\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- todo: add trackby -->\r\n<ng-container *ngFor=\"let bone of bones; let i = index\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\r\n </ng-container>\r\n\r\n <bonc-bone-editor-container #boneEditorContainer\r\n [map]=\"map\"\r\n [bone]=\"bone\"\r\n [locale]=\"locale\"\r\n [device]=\"device\"\r\n (removed)=\"removeBone(i)\"\r\n (editing)=\"boneEditHandler($event)\"\r\n (saved)=\"boneChangeHandler(i, $event)\">\r\n </bonc-bone-editor-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\r\n", styles: [":host{display:block}.controls{height:62px;display:flex;align-items:center;justify-content:space-between;margin:0 120px}.controls.appearable{background-color:var(--bg-color)}.controls.appearable *{opacity:0}.controls.appearable:hover{background-color:#222}.controls.appearable:hover *{opacity:1}.controls .up-down{width:100px;align-self:stretch;display:flex;flex-direction:column;justify-content:space-between}.controls a{display:flex;align-items:center;justify-content:center;color:#000;background-color:#cf0;-webkit-user-select:none;user-select:none;cursor:pointer}.controls a.add{padding:10px 30px}.controls a.up,.controls a.down,.controls a.remove{padding:4px 8px}.controls a.remove{align-self:flex-end}.controls a:hover{color:#cf0;background-color:#333}.controls a.remove:hover{color:#fff;background-color:#ff355e}.templates{width:220px;height:380px;position:absolute;left:50%;display:flex;flex-direction:column;margin-left:-110px;margin-top:-190px;z-index:10;padding:6px;background-color:#cf0;box-shadow:0 0 78px #000000bf}.templates a{display:flex;flex:1;align-items:center;justify-content:center;background-color:#cf0;text-align:center;cursor:pointer;text-transform:lowercase}.templates a:hover{text-decoration:underline;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BoneEditorContainerComponent, selector: "bonc-bone-editor-container", inputs: ["locale", "device", "map", "bone"], outputs: ["removed", "saved", "editing"] }] }); }
1627
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1628
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SkeletonEditorComponent, isStandalone: true, selector: "bonc-skeleton-editor", inputs: { locale: "locale", device: "device", map: "map", templates: "templates" }, viewQueries: [{ propertyName: "boneEditorContainerList", predicate: ["boneEditorContainer"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: EditableDirective }], ngImport: i0, template: "<ng-template #controls let-index='index'>\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\n </div>\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\n </div>\n\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\n </div>\n</ng-template>\n\n<!-- todo: add trackby -->\n<ng-container *ngFor=\"let bone of bones; let i = index\">\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\n </ng-container>\n\n <bonc-bone-editor-container #boneEditorContainer\n [map]=\"map\"\n [bone]=\"bone\"\n [locale]=\"locale\"\n [device]=\"device\"\n (removed)=\"removeBone(i)\"\n (editing)=\"boneEditHandler($event)\"\n (saved)=\"boneChangeHandler(i, $event)\">\n </bonc-bone-editor-container>\n\n</ng-container>\n\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\n", styles: [":host{display:block}.controls{height:62px;display:flex;align-items:center;justify-content:space-between;margin:0 120px}.controls.appearable{background-color:var(--bg-color)}.controls.appearable *{opacity:0}.controls.appearable:hover *{opacity:1}.controls.appearable:hover{background-color:#222}.controls .up-down{width:100px;align-self:stretch;display:flex;flex-direction:column;justify-content:space-between}.controls a{display:flex;align-items:center;justify-content:center;color:#000;background-color:#cf0;-webkit-user-select:none;user-select:none;cursor:pointer}.controls a.add{padding:10px 30px}.controls a.up,.controls a.down,.controls a.remove{padding:4px 8px}.controls a.remove{align-self:flex-end}.controls a:hover{color:#cf0;background-color:#333}.controls a.remove:hover{color:#fff;background-color:#ff355e}.templates{width:220px;height:380px;position:absolute;left:50%;display:flex;flex-direction:column;margin-left:-110px;margin-top:-190px;z-index:10;padding:6px;background-color:#cf0;box-shadow:0 0 78px #000000bf}.templates a{display:flex;flex:1;align-items:center;justify-content:center;background-color:#cf0;text-align:center;cursor:pointer;text-transform:lowercase}.templates a:hover{text-decoration:underline;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BoneEditorContainerComponent, selector: "bonc-bone-editor-container", inputs: ["locale", "device", "map", "bone"], outputs: ["removed", "saved", "editing"] }] });
1635
1629
  }
1636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SkeletonEditorComponent, decorators: [{
1630
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonEditorComponent, decorators: [{
1637
1631
  type: Component,
1638
- args: [{ selector: 'bonc-skeleton-editor', hostDirectives: [EditableDirective], template: "<ng-template #controls let-index='index'>\r\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\r\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\r\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\r\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\r\n </div>\r\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\r\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\r\n </div>\r\n\r\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\r\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\r\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- todo: add trackby -->\r\n<ng-container *ngFor=\"let bone of bones; let i = index\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\r\n </ng-container>\r\n\r\n <bonc-bone-editor-container #boneEditorContainer\r\n [map]=\"map\"\r\n [bone]=\"bone\"\r\n [locale]=\"locale\"\r\n [device]=\"device\"\r\n (removed)=\"removeBone(i)\"\r\n (editing)=\"boneEditHandler($event)\"\r\n (saved)=\"boneChangeHandler(i, $event)\">\r\n </bonc-bone-editor-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\r\n", styles: [":host{display:block}.controls{height:62px;display:flex;align-items:center;justify-content:space-between;margin:0 120px}.controls.appearable{background-color:var(--bg-color)}.controls.appearable *{opacity:0}.controls.appearable:hover{background-color:#222}.controls.appearable:hover *{opacity:1}.controls .up-down{width:100px;align-self:stretch;display:flex;flex-direction:column;justify-content:space-between}.controls a{display:flex;align-items:center;justify-content:center;color:#000;background-color:#cf0;-webkit-user-select:none;user-select:none;cursor:pointer}.controls a.add{padding:10px 30px}.controls a.up,.controls a.down,.controls a.remove{padding:4px 8px}.controls a.remove{align-self:flex-end}.controls a:hover{color:#cf0;background-color:#333}.controls a.remove:hover{color:#fff;background-color:#ff355e}.templates{width:220px;height:380px;position:absolute;left:50%;display:flex;flex-direction:column;margin-left:-110px;margin-top:-190px;z-index:10;padding:6px;background-color:#cf0;box-shadow:0 0 78px #000000bf}.templates a{display:flex;flex:1;align-items:center;justify-content:center;background-color:#cf0;text-align:center;cursor:pointer;text-transform:lowercase}.templates a:hover{text-decoration:underline;font-weight:700}\n"] }]
1639
- }], ctorParameters: () => [{ type: EditableDirective, decorators: [{
1640
- type: Host
1641
- }] }], propDecorators: { boneEditorContainerList: [{
1632
+ args: [{ selector: 'bonc-skeleton-editor', standalone: true, imports: [CommonModule, BoneEditorContainerComponent], hostDirectives: [EditableDirective], template: "<ng-template #controls let-index='index'>\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\n <div *ngIf=\"index < bones.length\" class=\"up-down\">\n <a *ngIf=\"index > 0\" (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\n <a *ngIf=\"index > 0\" (click)=\"moveUp(index)\" class=\"up\">move up</a>\n </div>\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\n <a *ngIf=\"index < bones.length\" (click)=\"removeBone(index)\" class=\"remove\">remove</a>\n </div>\n\n <div *ngIf=\"templatesAreShown[index]\" class=\"templates\">\n <a *ngFor=\"let template of templates\" (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\n </div>\n</ng-template>\n\n<!-- todo: add trackby -->\n<ng-container *ngFor=\"let bone of bones; let i = index\">\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controls; context: {index: i}\"></ng-container>\n </ng-container>\n\n <bonc-bone-editor-container #boneEditorContainer\n [map]=\"map\"\n [bone]=\"bone\"\n [locale]=\"locale\"\n [device]=\"device\"\n (removed)=\"removeBone(i)\"\n (editing)=\"boneEditHandler($event)\"\n (saved)=\"boneChangeHandler(i, $event)\">\n </bonc-bone-editor-container>\n\n</ng-container>\n\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\n", styles: [":host{display:block}.controls{height:62px;display:flex;align-items:center;justify-content:space-between;margin:0 120px}.controls.appearable{background-color:var(--bg-color)}.controls.appearable *{opacity:0}.controls.appearable:hover *{opacity:1}.controls.appearable:hover{background-color:#222}.controls .up-down{width:100px;align-self:stretch;display:flex;flex-direction:column;justify-content:space-between}.controls a{display:flex;align-items:center;justify-content:center;color:#000;background-color:#cf0;-webkit-user-select:none;user-select:none;cursor:pointer}.controls a.add{padding:10px 30px}.controls a.up,.controls a.down,.controls a.remove{padding:4px 8px}.controls a.remove{align-self:flex-end}.controls a:hover{color:#cf0;background-color:#333}.controls a.remove:hover{color:#fff;background-color:#ff355e}.templates{width:220px;height:380px;position:absolute;left:50%;display:flex;flex-direction:column;margin-left:-110px;margin-top:-190px;z-index:10;padding:6px;background-color:#cf0;box-shadow:0 0 78px #000000bf}.templates a{display:flex;flex:1;align-items:center;justify-content:center;background-color:#cf0;text-align:center;cursor:pointer;text-transform:lowercase}.templates a:hover{text-decoration:underline;font-weight:700}\n"] }]
1633
+ }], propDecorators: { boneEditorContainerList: [{
1642
1634
  type: ViewChildren,
1643
1635
  args: ['boneEditorContainer']
1644
1636
  }], locale: [{
@@ -1663,122 +1655,9 @@ function createPreset(params) {
1663
1655
  };
1664
1656
  }
1665
1657
 
1666
- const formComponents = [
1667
- TranslationFormComponent,
1668
- TextFormComponent,
1669
- SeoFormComponent,
1670
- SvgFormComponent,
1671
- OneImageFormComponent,
1672
- FileFormComponent,
1673
- LottieFormComponent,
1674
- UnknownFormComponent
1675
- ];
1676
- const components = [
1677
- ...formComponents,
1678
- TranslationInputComponent,
1679
- TranslationTextareaComponent,
1680
- AdminControlsComponent,
1681
- EditableGroupComponent,
1682
- FormControlsComponent,
1683
- SkeletonEditorComponent,
1684
- SkeletonEditorAnchorDirective,
1685
- BoneEditorContainerComponent,
1686
- UnknownBoneEditorComponent,
1687
- MediaUploaderComponent,
1688
- FileUploaderComponent,
1689
- LinkPopupComponent
1690
- ];
1691
- const standaloneDirectives = [
1692
- EditableDirective
1693
- ];
1694
- class BonnieCmsModule {
1695
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BonnieCmsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1696
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: BonnieCmsModule, declarations: [TranslationFormComponent,
1697
- TextFormComponent,
1698
- SeoFormComponent,
1699
- SvgFormComponent,
1700
- OneImageFormComponent,
1701
- FileFormComponent,
1702
- LottieFormComponent,
1703
- UnknownFormComponent, TranslationInputComponent,
1704
- TranslationTextareaComponent,
1705
- AdminControlsComponent,
1706
- EditableGroupComponent,
1707
- FormControlsComponent,
1708
- SkeletonEditorComponent,
1709
- SkeletonEditorAnchorDirective,
1710
- BoneEditorContainerComponent,
1711
- UnknownBoneEditorComponent,
1712
- MediaUploaderComponent,
1713
- FileUploaderComponent,
1714
- LinkPopupComponent], imports: [CommonModule,
1715
- FormsModule,
1716
- CdkTextareaAutosize,
1717
- BonnieModule,
1718
- LottieComponent, EditableDirective], exports: [CommonModule,
1719
- FormsModule,
1720
- BonnieModule,
1721
- LottieFormComponent, TranslationFormComponent,
1722
- TextFormComponent,
1723
- SeoFormComponent,
1724
- SvgFormComponent,
1725
- OneImageFormComponent,
1726
- FileFormComponent,
1727
- LottieFormComponent,
1728
- UnknownFormComponent, TranslationInputComponent,
1729
- TranslationTextareaComponent,
1730
- AdminControlsComponent,
1731
- EditableGroupComponent,
1732
- FormControlsComponent,
1733
- SkeletonEditorComponent,
1734
- SkeletonEditorAnchorDirective,
1735
- BoneEditorContainerComponent,
1736
- UnknownBoneEditorComponent,
1737
- MediaUploaderComponent,
1738
- FileUploaderComponent,
1739
- LinkPopupComponent, EditableDirective] }); }
1740
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BonnieCmsModule, providers: [
1741
- DataService,
1742
- AdminDataService
1743
- ], imports: [CommonModule,
1744
- FormsModule,
1745
- BonnieModule,
1746
- LottieComponent, CommonModule,
1747
- FormsModule,
1748
- BonnieModule] }); }
1749
- } // todo: move to standalone
1750
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BonnieCmsModule, decorators: [{
1751
- type: NgModule,
1752
- args: [{
1753
- declarations: [
1754
- ...components,
1755
- ],
1756
- providers: [
1757
- DataService,
1758
- AdminDataService
1759
- ],
1760
- imports: [
1761
- CommonModule,
1762
- FormsModule,
1763
- CdkTextareaAutosize,
1764
- BonnieModule,
1765
- LottieComponent,
1766
- ...standaloneDirectives
1767
- ],
1768
- exports: [
1769
- CommonModule,
1770
- FormsModule,
1771
- BonnieModule,
1772
- LottieFormComponent,
1773
- ...components,
1774
- ...standaloneDirectives
1775
- ]
1776
- }]
1777
- }] });
1778
-
1779
1658
  /**
1780
1659
  * Generated bundle index. Do not edit.
1781
1660
  */
1782
1661
 
1783
- export { API_BASE_URL, AdminControlsComponent, AdminDataService, BoneEditorBaseComponent, BoneEditorContainerComponent, BonnieCmsModule, DataService, DeviceType, DeviceVisibility, EditableDirective, EditableGroupComponent, FileFormComponent, FileUploaderComponent, FormBaseComponent, FormControlsComponent, LinkPopupComponent, LottieFormComponent, MediaUploaderComponent, OneImageFormComponent, SeoFormComponent, SkeletonEditorAnchorDirective, SkeletonEditorComponent, SvgFormComponent, TextEditorField, TextFormComponent, TextInputStyle, TextSettingType, TranslationFormComponent, TranslationInputComponent, TranslationTextareaComponent, UnknownBoneEditorComponent, UnknownFormComponent, createPreset, hasFlag, isLocalUrlString, regExpIsMobile, setOrRemoveFlag };
1662
+ export { API_BASE_URL, AdminControlsComponent, AdminDataService, BoneEditorBaseComponent, BoneEditorContainerComponent, DataService, DeviceType, DeviceVisibility, EditableDirective, EditableGroupComponent, FileFormComponent, FileUploaderComponent, FormBaseComponent, FormControlsComponent, LinkPopupComponent, LottieFormComponent, MediaUploaderComponent, OneImageFormComponent, SeoFormComponent, SkeletonEditorAnchorDirective, SkeletonEditorComponent, SvgFormComponent, TextEditorField, TextFormComponent, TextInputStyle, TextSettingType, TranslationFormComponent, TranslationInputComponent, TranslationTextareaComponent, UnknownBoneEditorComponent, UnknownFormComponent, createPreset, hasFlag, isLocalUrlString, regExpIsMobile, setOrRemoveFlag };
1784
1663
  //# sourceMappingURL=candy-kingdom-bonnie-cms.mjs.map