@candy-kingdom/bonnie-cms 0.25.0 → 0.26.2

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.
@@ -6,7 +6,6 @@ import { Subject, debounceTime, map, last, catchError, Observable, of, combineLa
6
6
  import * as i1 from '@angular/forms';
7
7
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
8
8
  import { CdkTextareaAutosize } from '@angular/cdk/text-field';
9
- import { take } from 'rxjs/operators';
10
9
  import { DomSanitizer } from '@angular/platform-browser';
11
10
  import { HttpClient, HttpRequest, HttpEventType } from '@angular/common/http';
12
11
  import { LottieComponent } from 'ngx-lottie';
@@ -442,7 +441,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
442
441
  }] } });
443
442
 
444
443
  class TranslationTextareaComponent {
445
- ngZone;
446
444
  autosizeList;
447
445
  minRows;
448
446
  maxRows;
@@ -452,9 +450,6 @@ class TranslationTextareaComponent {
452
450
  startEditing = new EventEmitter();
453
451
  changed = new EventEmitter();
454
452
  blurred = new EventEmitter();
455
- constructor(ngZone) {
456
- this.ngZone = ngZone;
457
- }
458
453
  ngAfterViewInit() {
459
454
  setTimeout(this.triggerResize.bind(this));
460
455
  }
@@ -472,18 +467,19 @@ class TranslationTextareaComponent {
472
467
  }
473
468
  triggerResize() {
474
469
  // console.log('trigger resize!');
475
- this.ngZone.onStable.pipe(take(1))
476
- .subscribe(() => {
477
- this.autosizeList.forEach(x => x.resizeToFitContent(true));
478
- });
470
+ // todo: investigate is it working or not
471
+ // this.ngZone.onStable.pipe(take(1))
472
+ // .subscribe(() => {
473
+ // this.autosizeList.forEach(x => x.resizeToFitContent(true));
474
+ // });
479
475
  }
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 });
476
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
481
477
  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"] }] });
482
478
  }
483
479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TranslationTextareaComponent, decorators: [{
484
480
  type: Component,
485
481
  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"] }]
486
- }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { autosizeList: [{
482
+ }], propDecorators: { autosizeList: [{
487
483
  type: ViewChildren,
488
484
  args: [CdkTextareaAutosize]
489
485
  }], minRows: [{
@@ -1 +1 @@
1
- {"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\n NotSet = 0,\n Mobile = 1,\n Tablet = 2,\n Desktop = 3\n}\n","\n\n\nexport enum TextEditorField {\n NotSet = 0,\n Input = 1,\n Textarea = 2\n}\n","\n// tslint:disable-next-line: max-line-length\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\n\nexport function isLocalUrlString(url: string): boolean {\n if (url === undefined || url === null || url.trim().length === 0)\n return true;\n\n if (url.startsWith('//'))\n return false;\n\n if (url.startsWith('./') || url.startsWith('/'))\n return true;\n\n return false;\n}\n\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\n return (value & flag) === flag;\n}\n\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\n return (enabled ? value | flag : value & ~flag) as T;\n}\n","export enum DeviceVisibility {\n None = 0,\n Desktop = 1,\n Tablet = 2,\n Mobile = 4,\n All = Desktop | Tablet | Mobile\n}\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[boncEditable]',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\n})\nexport class EditableDirective<T = unknown> {\n @Output()\n public readonly saved = new EventEmitter<T>();\n\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly externalSaveCall = new EventEmitter<void>();\n\n @Output()\n public readonly canceled = new EventEmitter<void>();\n\n @Output()\n public readonly valueChange = new EventEmitter<T>();\n\n private propagateChange: (newValue: T) => void = () => { };\n\n private _inEditMode = false;\n private _isDirty = false;\n\n private _value?: T;\n private _originalValue?: T;\n private _storedData?: string;\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public subscribe\n (\n params: {\n readonly onValueChange?: (x: T) => void,\n readonly onEditModeChange?: (x: boolean) => void,\n readonly onSaveRequest?: () => void\n }\n ): Subscription[] {\n\n const subscriptions: Subscription[] = [];\n\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\n subscriptions.push\n (\n this.valueChange.subscribe((x: T) => {\n if (params.onValueChange)\n params.onValueChange(x);\n })\n );\n }\n\n if (params.onEditModeChange !== undefined) {\n subscriptions.push\n (\n this.editModeChange.subscribe((x: boolean) => {\n if (params.onEditModeChange)\n params.onEditModeChange(x);\n })\n );\n }\n\n if (params.onSaveRequest !== undefined) {\n subscriptions.push\n (\n this.externalSaveCall.subscribe(() => {\n if (params.onSaveRequest)\n params.onSaveRequest();\n })\n );\n }\n\n return subscriptions;\n }\n\n public requestSave() {\n this.externalSaveCall.emit();\n }\n\n public startEditing = (): void => {\n if (this._inEditMode) {\n this.updateDirty();\n return;\n }\n\n this._inEditMode = true;\n this.updateDirty();\n this.editModeChange.emit(true);\n }\n\n public save(newData?: T): void {\n if (!this._inEditMode) {\n console.warn('save before edit mode'); //todo: fix that\n }\n\n this.finishEditing();\n\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\n ? JSON.parse(JSON.stringify(this.value))\n : newData;\n\n this.setOriginal(newUnqieNotEmptyData);\n this.updateDirty();\n\n this.saved.emit(newUnqieNotEmptyData);\n\n this.propagateChange(newUnqieNotEmptyData);\n }\n\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\n if (this._originalValue === undefined || this._originalValue === null)\n return;\n\n if (typeof this._originalValue !== \"object\") {\n console.warn('patch save called on not object type');\n return;\n }\n\n (this._originalValue as any)[propName] = newDataParts;\n\n this.setOriginal(this._originalValue);\n\n this.updateDirty();\n\n if (!this.isDirty)\n this.close();\n }\n\n // change model without opening or closing the editor\n\n public silentPatch(dict: Partial<T>): void {\n for (const key in dict) {\n // eslint-disable-next-line no-prototype-builtins\n if (!dict.hasOwnProperty(key))\n continue;\n\n const propVal = dict[key];\n\n\n if (this._value !== undefined && this._value !== null) {\n this._value[key] = propVal as any;\n }\n\n if (this._originalValue !== undefined && this._originalValue !== null) {\n this._originalValue[key] = propVal as any;\n }\n }\n this._storedData = JSON.stringify(this._originalValue);\n }\n\n public cancel(): void {\n if (!this._inEditMode)\n return;\n\n this.finishEditing();\n\n // reset value\n this.setValue(this._originalValue);\n\n this.canceled.emit();\n }\n\n public close(): void {\n this.finishEditing();\n }\n\n private finishEditing(): void {\n if (!this._inEditMode)\n return;\n\n this._inEditMode = false;\n this.editModeChange.emit(false);\n }\n\n private setValue(newValue?: T): void {\n this._value = (newValue === null || newValue === undefined)\n ? undefined\n : JSON.parse(JSON.stringify(newValue));\n\n this.valueChange.emit(this._value);\n }\n\n public set value(newValue: T | undefined) {\n this.setValue(newValue);\n }\n\n public get value(): T | undefined {\n return this._value;\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n private setOriginal(newOriginalValue: T) {\n this._originalValue = newOriginalValue;\n this._storedData = JSON.stringify(newOriginalValue);\n }\n\n // #region ngModel\n\n writeValue(newValue: T): void {\n this.finishEditing();\n\n this.setOriginal(newValue);\n this._isDirty = false;\n\n this.setValue(newValue);\n }\n\n setDisabledState?(): void {\n }\n\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\n this.propagateChange = (newValue: T): void => {\n tellAngularThatSomethingIsChanged(newValue);\n };\n }\n\n registerOnTouched(): void {\n }\n\n // #endregion\n}\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\nimport { Subscription, Subject, debounceTime } from 'rxjs';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n selector: 'bonc-editable-group',\n standalone: true,\n template: '<ng-content></ng-content>'\n})\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly saved = new EventEmitter<void>();\n\n @Output()\n public readonly requestEditorClose = new EventEmitter<boolean>();\n\n @ContentChildren(EditableDirective, { descendants: true })\n public editables!: QueryList<EditableDirective>;\n\n private readonly subscriptions: Subscription[] = [];\n private _inEditMode = false;\n\n private readonly saveSubject = new Subject<void>();\n\n public ngAfterContentInit(): void {\n this.saveSubject\n .asObservable()\n .pipe(debounceTime(100))\n .subscribe(() => this.saved.emit());\n\n this.updateSubscriptions();\n\n this.editables.changes.subscribe\n (\n () => {\n this.clearSubscribtions();\n this.updateSubscriptions();\n }\n );\n }\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public saveAll(): void {\n this.editables.forEach(x => x.requestSave());\n }\n\n public cancelAll(): void {\n this.editables.forEach(x => x.cancel());\n }\n\n public closeAll(): void {\n this.requestEditorClose.emit(true);\n this.editables.forEach(x => x.close());\n }\n\n private clearSubscribtions(): void {\n this.subscriptions.forEach(x => x.unsubscribe());\n this.subscriptions.splice(0, this.subscriptions.length);\n }\n\n private updateSubscriptions(): void {\n\n this.editables.forEach\n (\n editable => {\n\n this.subscriptions.push(\n editable.saved.subscribe(\n () => this.onSave()\n )\n );\n\n this.subscriptions.push(\n ...editable.subscribe({\n onEditModeChange: this.updateEditMode.bind(this)\n })\n );\n }\n );\n }\n\n private onSave(): void {\n this.saveSubject.next();\n }\n\n private updateEditMode(): void {\n const newEditMode = this.editables\n .filter(x => x.inEditMode)\n .length > 0;\n\n if (newEditMode === this._inEditMode)\n return;\n\n this._inEditMode = newEditMode;\n\n this.editModeChange.next(newEditMode);\n }\n\n public ngOnDestroy(): void {\n this.clearSubscribtions();\n }\n}\n","import { Component, Input, inject } from '@angular/core';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n template: ''\n})\nexport abstract class FormBaseComponent<TData = unknown> {\n public static readonly inputs = ['locale'];\n\n protected name = '';\n private _locale = '';\n\n public readonly editable = inject(EditableDirective<TData>, { host: true });\n\n @Input()\n public set locale(value: string) {\n this._locale = value;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DeviceType } from '../core';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'bonc-translation-input',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './translation-input.component.html',\n styleUrls: ['./translation-input.component.scss']\n})\nexport class TranslationInputComponent {\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n}\n","<input [(ngModel)]=\"text[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { take } from 'rxjs/operators';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { DeviceType } from '../core';\n\n@Component({\n selector: 'bonc-translation-textarea',\n standalone: true,\n imports: [FormsModule, CdkTextareaAutosize],\n templateUrl: './translation-textarea.component.html',\n styleUrls: ['./translation-textarea.component.scss']\n})\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\n @ViewChildren(CdkTextareaAutosize)\n public autosizeList!: QueryList<CdkTextareaAutosize>;\n\n @Input()\n public minRows?: number;\n\n @Input()\n public maxRows?: number;\n\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n constructor(\n private ngZone: NgZone\n ) {\n }\n\n ngAfterViewInit(): void {\n setTimeout(this.triggerResize.bind(this));\n }\n\n ngOnChanges(): void {\n setTimeout(this.triggerResize.bind(this), 500);\n }\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n private triggerResize() {\n // console.log('trigger resize!');\n\n this.ngZone.onStable.pipe(take(1))\n .subscribe(() => {\n this.autosizeList.forEach(x => x.resizeToFitContent(true));\n });\n }\n}\n","<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","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { TextEditorField } from '../../core';\n\n@Component({\n selector: 'bonc-link-popup',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './link-popup.component.html',\n styleUrl: './link-popup.component.scss'\n})\nexport class LinkPopupComponent {\n public readonly TextEditorField = TextEditorField;\n @Output()\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public open: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public closed: EventEmitter<void> = new EventEmitter();\n\n @Input({ required: true })\n public field!: TextEditorField;\n public LinkPopupField = TextEditorField;\n\n @Input()\n public maxRows?: number;\n\n @Input()\n public minRows?: number;\n\n @Input({ required: true })\n public linkTitle!: LocalizedString; // todo: allready in weblink\n\n @Input({ required: true })\n public locale!: string;\n\n @Input({ required: true })\n public link!: LocalizedString;\n\n public popupIsShown = false;\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onChange() {\n console.log('change link pop up')\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n public showPopup(): void {\n this.popupIsShown = true;\n this.open.emit();\n }\n\n public hidePopup(): void {\n this.popupIsShown = false;\n this.closed.emit();\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EditableDirective } from '../core-components';\n\n@Component({\n selector: 'bonc-form-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './form-controls.component.html',\n styleUrls: ['./form-controls.component.scss']\n})\nexport class FormControlsComponent {\n @Input({ required: true })\n public editable!: EditableDirective<any>;\n}\n","<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","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\n\n@Component({\n selector: 'bonc-file-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe],\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss']\n})\nexport class FileUploaderComponent {\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<string, string>;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n\n public fileTypeMask?: string = undefined;\n\n private _uploadTypes: string[] = [];\n private _src?: FileSrc<FileMeta>;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): FileSrc<FileMeta> | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadTypes(newUploadType: string[]) {\n this._uploadTypes.splice(0, this._uploadTypes.length);\n\n this._uploadTypes.push(...newUploadType);\n\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\n\n this.cd.detectChanges();\n }\n\n public get uploadTypes(): string[] {\n return this._uploadTypes;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type '${file.type}'`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<FileSrc<FileMeta>>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === null || event.body === undefined) {\n console.warn(`empty body from uploader`);\n break;\n }\n\n this.srcChange.emit(event.body);\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges()\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<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","import { Component, OnInit, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst uploadMap = new Map<string, string>();\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\n\n@Component({\n selector: 'bonc-seo-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent, FileUploaderComponent],\n templateUrl: './seo-form.component.html',\n styleUrls: ['./seo-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\n public readonly uploadMap = uploadMap;\n\n private _pageId = '';\n public ogImageUploadUrl = '';\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set pageId(value: string) {\n this._pageId = value;\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\n }\n\n public get pageId(): string {\n return this._pageId;\n }\n\n public ResToSrc(res: { url: string }): string {\n return res.url;\n }\n\n public replaceImage($event: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n if (this.editable.value !== undefined) {\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\n }\n\n this.editable.updateDirty();\n }\n}\n","<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","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-svg-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './svg-form.component.html',\n styleUrls: ['./svg-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public readonly SvgMime = 'image/svg+xml';\n\n @Input()\n public label = '';\n\n public uploadMap = new Map<string, string>();\n\n private _uploadUrl = '/api/admin/upload/image/svg';\n\n constructor() {\n super()\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\n\n@Component({\n selector: 'bonc-one-image-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './one-image-form.component.html',\n styleUrls: ['./one-image-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public uploadMap = new Map<string, string>();\n\n private _mimeTypes = DefaultImageMimeTypes;\n\n private _uploadUrl = '/api/admin/upload/image';\n\n private _label = ''\n\n constructor() {\n super()\n\n this.uploadMap.set('', this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set label(newValue: string) {\n this._label = newValue;\n }\n\n public get label(): string {\n return this._label;\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set('', this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n @Input()\n public set mimeTypes(newValue: string[]) {\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\n this.cd.detectChanges();\n }\n\n public get mimeTypes(): string[] {\n return this._mimeTypes;\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-file-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './file-form.component.html',\n styleUrls: ['./file-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public uploadTypes: string[] = [];\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","\nexport enum TextInputStyle {\n NotSet = 0,\n SingleLine = 1,\n MultiLine = 2\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TextInputStyle } from './TextInputStyle';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\n\n@Component({\n selector: 'bonc-text-form',\n standalone: true,\n imports: [CommonModule, FormsModule, FormControlsComponent],\n templateUrl: './text-form.component.html',\n styleUrls: ['./text-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\n public readonly TextInputStyle = TextInputStyle;\n\n @Input()\n public label = '';\n\n @Input()\n public type = TextInputStyle.SingleLine;\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AnimationOptions, LottieComponent } from 'ngx-lottie';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-lottie-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent, LottieComponent],\n templateUrl: './lottie-form.component.html',\n styleUrls: ['./lottie-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n public readonly LottieMimeType = 'application/json';\n\n public animOptions?: AnimationOptions;\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n\n this.editable.valueChange.subscribe(x => {\n const url = x?.url ?? '';\n this.animOptions = url.length === 0 ? undefined : { path: url };\n })\n }\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { TextEditorField } from '../../core';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\n@Component({\n selector: 'bonc-translation-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './translation-form.component.html',\n styleUrls: ['./translation-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\n public readonly TextEditorField = TextEditorField;\n\n @Input({ required: true })\n public field!: TextEditorField;\n\n @Input() label?: string;\n\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\n\n@Component({\n selector: 'bonc-unknown-form',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './unknown-form.component.html',\n styleUrls: ['./unknown-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\n @Input()\n public label = '';\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<label>Unknown form:<b>{{label}}</b></label>\n<pre><ng-content></ng-content></pre>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\n\nimport { PageBase, View } from '@candy-kingdom/bonnie';\n\nimport { SettingData } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\ntype DataDictionary = { [n: string]: Observable<unknown> };\n\nexport type SettingDataDict = { [id: string]: SettingData };\n\n@Injectable()\nexport class DataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\n return pageOb;\n }\n\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\n const pageUrl = `/${pageRoute}`\n\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\n return pageOb;\n }\n\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\n params: { ids: ids }\n });\n\n return pageOb;\n }\n\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\n const skeletonOb = this.http.get<T>(url);\n\n const routeDataObs = skeletonOb\n .pipe\n (\n map(\n x => {\n const notEmptyDataRoutes = x.bones\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\n .filter(x => x.length > 0);\n\n if (notEmptyDataRoutes.length === 0) {\n const emptyData: DataDictionary = {};\n return { page: of(x), data: of(emptyData) };\n }\n\n return {\n page: of(x),\n data: combineLatest\n (\n notEmptyDataRoutes\n .map(dataRoute => {\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\n\n return {\n route: dataRoute,\n json: this.http.get(url)\n }\n })\n .reduce(\n (prev, curr) => {\n prev[curr.route] = curr.json;\n return prev;\n }, {} as DataDictionary\n )\n )\n }\n }\n\n ),\n map(x => combineLatest(x)),\n mergeMap(res => merge(res)),\n map(x => {\n\n for (const bone of x.page.bones) {\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\n continue;\n\n const data = x.data[bone.dataRoute];\n\n if (data === undefined || data === null)\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\n\n (bone as any).data = data; // todo: fix\n }\n\n return x.page;\n })\n );\n\n return routeDataObs;\n }\n}\n\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from 'rxjs';\n\nimport { PageBase } from \"@candy-kingdom/bonnie\";\n\nimport { SettingBase, SettingGroup } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\n@Injectable()\nexport class AdminDataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n constructor() {\n console.log('baseHref: ' + this.baseHref);\n }\n\n public getSettingGroups(): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\n return pageOb;\n }\n\n public getPage(url: string): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\n return pageOb;\n }\n\n public storePage(page: PageBase): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\n return ob;\n }\n\n public updateSettings(settings: SettingBase[]): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\n return ob;\n }\n}\n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DeviceType } from '../core';\nimport { EditableGroupComponent } from '../core-components';\n\n@Component({\n selector: 'bonc-admin-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './admin-controls.component.html',\n styleUrls: ['./admin-controls.component.scss']\n})\nexport class AdminControlsComponent {\n public readonly DeviceType = DeviceType;\n\n @Input({ required: true })\n public editableGroup!: EditableGroupComponent;\n\n @Input()\n public deviceControls = false;\n\n public locale = 'en';\n public device = this.DeviceType.Desktop;\n\n public changeLocale(): void {\n this.locale = this.locale === 'en' ? 'ru' : 'en';\n }\n\n public changeDevice(): void {\n switch (this.device) {\n case DeviceType.Desktop:\n this.device = DeviceType.Tablet;\n return;\n\n case DeviceType.Tablet:\n this.device = DeviceType.Mobile;\n return;\n\n case DeviceType.Mobile:\n this.device = DeviceType.Desktop;\n return;\n\n default:\n this.device = DeviceType.Desktop;\n return;\n }\n }\n}\n","<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","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { MediaObjectFit, PixMediaUnion, MarcyMediaComponent } from '@candy-kingdom/bonnie';\nimport { MediaType } from '../core';\n\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\nconst videoMimeTypes = ['video/mp4'];\n\nconst imageFileTypes = imageMimeTypes.join(',');\nconst videoFileTypes = videoMimeTypes.join(',');\n\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\n\n@Component({\n selector: 'bonc-media-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe, MarcyMediaComponent],\n templateUrl: './media-uploader.component.html',\n styleUrls: ['./media-uploader.component.scss']\n})\nexport class MediaUploaderComponent {\n public readonly MediaObjectFit = MediaObjectFit;\n\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<PixMediaUnion>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\n\n @Input()\n public forceRatio?: number;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n public fileTypeMask = allMediaFileTypes;\n\n private _uploadType?: MediaType;\n private _src?: PixMediaUnion;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: PixMediaUnion | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): PixMediaUnion | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadType(newUploadType: MediaType | undefined) {\n switch (newUploadType) {\n case \"image\":\n this._uploadType = newUploadType;\n this.fileTypeMask = imageFileTypes;\n break;\n\n case \"video\":\n this._uploadType = newUploadType;\n this.fileTypeMask = videoFileTypes;\n break;\n\n case undefined:\n default:\n this._uploadType = newUploadType;\n this.fileTypeMask = allMediaFileTypes;\n break;\n }\n }\n\n public get uploadType(): MediaType | undefined {\n return this._uploadType;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n let uploadingMediaType: MediaType;\n\n if (this._uploadType !== undefined && this._uploadType !== null) {\n uploadingMediaType = this._uploadType;\n }\n else if (imageMimeTypes.includes(file.type)) {\n uploadingMediaType = 'image';\n }\n else if (videoMimeTypes.includes(file.type)) {\n uploadingMediaType = 'video';\n }\n else {\n console.error(`unknown media type ${file.type} (${file.name})`);\n return;\n }\n\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n formData.append('ratio', `${this.forceRatio ?? 0}`);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<PixMediaUnion>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === undefined || event.body === null) {\n console.error('media deserialization error. Response body in undefined');\n } else {\n // remove this\n // needed for C# deserialization\n const pixmedia = {\n $type: event.body.type,\n ...event.body as any,\n };\n\n this.srcChange.emit(pixmedia);\n }\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges();\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<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","import { Directive, ViewContainerRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[boncSkeletonEditorAnchor]',\n standalone: true\n})\nexport class SkeletonEditorAnchorDirective {\n public readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\nimport { DeviceType } from '../core';\n\n@Component({ template: '' })\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\n\n public readonly noPresets: boolean;\n\n @Input({ required: true })\n public locale!: string;\n public device = DeviceType.NotSet;\n\n private _bone!: TBone;\n private _storedData: string = '';\n\n private _currentPreset: ContentPreset<TBone> | undefined;\n\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\n private _isDirty = false;\n private _isEditing = false;\n\n public abstract onReset(): void;\n public abstract onFinishEditing(): void;\n\n protected abstract getPresets(): ContentPreset<TBone>[];\n\n constructor() {\n this.presets = this.getPresets();\n\n if (this.presets === undefined || this.presets === null)\n throw new Error('presets cannot be undefined in ContentPreset constructor');\n\n if (this.presets.length === 0) {\n this.presets = [\n\n {\n title: 'default',\n isActive: () => true,\n transformer: bone => bone,\n clean: bone => bone,\n }\n ];\n }\n\n this.noPresets = this.presets.length === 1;\n }\n\n @HostBinding('class.mobile') get isMobile(): boolean {\n return this.device !== undefined && this.device === DeviceType.Mobile;\n }\n\n @HostBinding('class.tablet') get isTablet(): boolean {\n return this.device !== undefined && this.device === DeviceType.Tablet;\n }\n\n @HostBinding('class.desktop') get isDesktop(): boolean {\n return this.device !== undefined && this.device === DeviceType.Desktop;\n }\n\n public get currentPreset(): ContentPreset<TBone> | undefined {\n return this._currentPreset;\n }\n\n public get bone(): TBone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newData: TBone) {\n this._isDirty = false;\n this._storedData = JSON.stringify(newData);\n this._bone = JSON.parse(this._storedData);\n this.updatePresetByData();\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n public get isEditing(): boolean {\n return this._isEditing;\n }\n\n public resetData(): void {\n this._isEditing = false;\n this.bone = JSON.parse(this._storedData);\n\n if (this.onReset !== undefined)\n this.onReset();\n\n this.editing.emit(false);\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public remove(): void {\n this.removed.next();\n }\n\n public save(): void {\n if (!this.isDirty)\n return;\n\n this._isDirty = false;\n\n this.finishEditing();\n\n this._storedData = JSON.stringify(this._bone);\n\n const clonedData: TBone = JSON.parse(this._storedData);\n this.saved.emit(clonedData);\n }\n\n public startEditing(): void {\n if (this._isEditing) {\n this.updateDirty();\n return;\n }\n\n this._isEditing = true;\n this.updateDirty();\n\n this.editing.emit(true);\n }\n\n public finishEditing(): void {\n if (this._isDirty)\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\n\n if (this.onFinishEditing !== undefined)\n this.onFinishEditing();\n\n this._isEditing = false;\n }\n\n public nextPreset(): void {\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\n this.applyPresetAtIndex(newIndex);\n }\n\n private applyPresetAtIndex = (newIndex: number): void => {\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\n\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\n if (currentIndex === newIndex)\n return;\n\n this._currentPreset = this.presets[newIndex];\n this._currentPreset.transformer(this._bone);\n\n this.updateDirty();\n }\n\n private updatePresetByData = (): void => {\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\n\n if (countOfActive !== 1)\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\n\n for (let i = 0; this.presets.length; i++) {\n const preset = this.presets[i];\n\n if (preset.isActive(this._bone)) {\n this.applyPresetAtIndex(i);\n break;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule, JsonPipe } from '@angular/common';\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\n\n@Component({\n selector: 'bonc-unknown-bone-editor',\n standalone: true,\n imports: [CommonModule, JsonPipe],\n templateUrl: './unknown-bone-editor.component.html',\n styleUrls: ['./unknown-bone-editor.component.scss']\n})\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\n public onFinishEditing(): void { }\n public onReset(): void { }\n\n protected getPresets(): ContentPreset<Bone>[] {\n return [];\n }\n}\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\n<pre>{{bone | json}}</pre>\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\nimport { DeviceType } from '../../core';\nimport { IBoneEditor } from '../IBoneEditor';\nimport { BoneEditorMap } from '../BoneEditorMap';\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\n\n// todo: rename class\n@Component({\n selector: 'bonc-bone-editor-container',\n standalone: true,\n imports: [CommonModule, SkeletonEditorAnchorDirective],\n templateUrl: './bone-editor-container.component.html',\n styleUrls: ['./bone-editor-container.component.scss']\n})\nexport class BoneEditorContainerComponent implements OnChanges {\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\n public anchor!: SkeletonEditorAnchorDirective;\n\n @Output()\n public removed: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n\n @Output()\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public DeviceType = DeviceType;\n\n public editor!: IBoneEditor;\n\n public themePopupIsShown = false;\n\n private _bone!: Bone;\n\n private removeSubscription?: Subscription;\n private saveSubscription?: Subscription;\n private changedSubscription?: Subscription;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n\n ngOnChanges(): void {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.locale = this.locale;\n this.editor.device = this.device;\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap\n\n public get bone(): Bone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newBone: Bone) {\n this._bone = newBone;\n\n if (this.removeSubscription) {\n this.removeSubscription.unsubscribe();\n this.removeSubscription = undefined;\n }\n\n if (this.saveSubscription) {\n this.saveSubscription.unsubscribe();\n this.saveSubscription = undefined;\n }\n\n if (this.changedSubscription) {\n this.changedSubscription.unsubscribe();\n this.changedSubscription = undefined;\n }\n\n const viewContainerRef = this.anchor.viewContainerRef;\n\n viewContainerRef.clear();\n\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\n\n this.editor = boneEditorRef.instance;\n this.editor.bone = newBone;\n\n this.removeSubscription = this.editor.removed.subscribe(() => {\n this.removed.next();\n });\n\n this.changedSubscription = this.editor.editing.subscribe\n (\n (isEditing: boolean) => {\n this.editing.next(isEditing);\n }\n );\n\n this.saveSubscription = this.editor.saved.subscribe(\n (newBoneValue: Bone) => {\n this.saved.next(newBoneValue);\n }\n );\n\n this.ngOnChanges();\n }\n\n public nextPreset = (): void => {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.nextPreset();\n }\n\n // todo: add or remove visibility feature\n\n // public setDisabled = (disabled: boolean): void => {\n // if (this.editor === undefined || this.editor === null)\n // return;\n\n // this.editor.startEditing();\n\n // if (this.device === DeviceType.Desktop)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\n // else if (this.device === DeviceType.Tablet)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\n // else if (this.device === DeviceType.Mobile)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\n\n // this.editor.updateDirty();\n // }\n\n public get disabled(): boolean {\n if (this.editor === undefined || this.editor === null)\n throw new Error('editor should have been set');\n\n return false;\n // todo: add or remove visibility feature\n // const visibility = this.editor.bone.visibility;\n\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\n // return false;\n\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\n // return false;\n\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\n // return false;\n\n // return true;\n }\n}\n","<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","import { Component, Input, OnChanges, OnInit, QueryList, ViewChildren, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Bone } from '@candy-kingdom/bonnie';\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\nimport { EditableDirective } from '../core-components/editable.directive';\nimport { DeviceType } from '../core';\nimport { IBoneTemplate } from './IBoneTemplate';\nimport { BoneEditorMap } from './BoneEditorMap';\n\n// todo: rename class\n@Component({\n selector: 'bonc-skeleton-editor',\n standalone: true,\n imports: [CommonModule, BoneEditorContainerComponent],\n templateUrl: './skeleton-editor.component.html',\n styleUrls: ['./skeleton-editor.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\n @ViewChildren('boneEditorContainer')\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n public readonly templatesAreShown: boolean[] = [];\n\n public readonly editable = inject(EditableDirective<Bone[]>, { host: true });\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.save()\n );\n\n this.editable.save();\n });\n\n this.editable.canceled.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.resetData()\n );\n\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap;\n\n public ngOnChanges(): void {\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\n if (this.bones === undefined)\n return;\n\n this.bones.forEach(() => this.templatesAreShown.push(false));\n this.templatesAreShown.push(false);\n }\n\n @Input({ required: true })\n public templates!: ReadonlyArray<IBoneTemplate>;\n\n\n public get bones(): Bone[] {\n return this.editable?.value ?? [];\n }\n\n public boneEditHandler(isEditing: boolean): void {\n if (isEditing)\n this.editable.startEditing();\n else {\n const allClosed = this.boneEditorContainerList\n .filter(x => x.editor !== undefined && x.editor.isEditing)\n .length === 0;\n\n this.editable.updateDirty();\n\n if (!this.editable.isDirty && allClosed)\n this.editable.close();\n }\n }\n\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\n if (Array.isArray(this.editable.value)) {\n this.editable.value[index] = newBoneValue;\n }\n\n this.editable.save();\n }\n\n public removeBone(boneIndex: number): void {\n if (this.bones === undefined || this.bones === null)\n return;\n\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\n return;\n\n this.bones.splice(boneIndex, 1);\n\n if (!this.editable.inEditMode)\n this.editable.startEditing();\n\n this.editable.save();\n }\n\n public moveDown(boneIndex: number): void {\n if (boneIndex >= this.bones.length - 1)\n return;\n\n this.swapBones(boneIndex, boneIndex + 1);\n }\n\n public moveUp(boneIndex: number): void {\n if (boneIndex <= 0)\n return;\n\n this.swapBones(boneIndex - 1, boneIndex);\n }\n\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\n const newBone = selectedTemplate.boneFactory();\n\n this.bones.splice(index, 0, newBone);\n }\n\n private swapBones(index1: number, index2: number): void {\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\n\n const tempBone = this.bones[index1];\n this.bones[index1] = this.bones[index2];\n this.bones[index2] = tempBone;\n }\n}\n\n\n","<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","import { Bone } from '@candy-kingdom/bonnie';\n\nexport interface ContentPreset<out TBone extends Bone> {\n title: string;\n isActive(data: TBone): boolean;\n clean(data: TBone): void;\n transformer(bone: TBone): void;\n}\n\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\n return {\n title: params.title,\n isActive: x => x.style === params.style,\n transformer: bone => bone.style = params.style,\n clean: bone => bone.style = params.style,\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.EditableDirective"],"mappings":"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"}
1
+ {"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/generated/file-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/i-equatable.ts","../../../../libs/bonnie-cms/src/lib/generated/i-setting.ts","../../../../libs/bonnie-cms/src/lib/generated/localized-text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/lottie-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/one-image-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-base.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/setting-group.ts","../../../../libs/bonnie-cms/src/lib/generated/setting.ts","../../../../libs/bonnie-cms/src/lib/generated/svg-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-data.ts","../../../../libs/bonnie-cms/src/lib/generated/text-setting-type.ts","../../../../libs/bonnie-cms/src/lib/generated/index.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable.directive.ts","../../../../libs/bonnie-cms/src/lib/core-components/editable-group.ts","../../../../libs/bonnie-cms/src/lib/core-components/form-base.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.ts","../../../../libs/bonnie-cms/src/lib/translation-input/translation-input.component.html","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.ts","../../../../libs/bonnie-cms/src/lib/translation-textarea/translation-textarea.component.html","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.ts","../../../../libs/bonnie-cms/src/lib/core-components/link-popup/link-popup.component.html","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.ts","../../../../libs/bonnie-cms/src/lib/form-controls/form-controls.component.html","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.component.html","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/seo-form/seo-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/svg-form/svg-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/one-image-form/one-image-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/file-form/file-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/text-form/TextInputStyle.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/text-form/text-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/translation-form/translation-form.component.html","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/unknown-form/unknown-form.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.ts","../../../../libs/bonnie-cms/src/lib/admin-controls/admin-controls.component.html","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/bone-editor-base.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.ts","../../../../libs/bonnie-cms/src/lib/bone-editors/unknown-bone-editor/unknown-bone-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/bone-editor-container/bone-editor-container.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor.component.html","../../../../libs/bonnie-cms/src/lib/skeleton-editor/ContentPreset.ts","../../../../libs/bonnie-cms/src/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface FileSettingData extends SettingData {\r\n allowedMimeTypes: string[];\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport interface IEquatable<T> {\r\n\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\n\r\nexport interface ISetting<T extends SettingData> {\r\n id: string;\r\n title: string;\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\nimport { LocalizedString } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LocalizedTextSettingData extends SettingData {\r\n text: LocalizedString;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface LottieSettingData extends SettingData {\r\n src: FileSrcFileMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileFormat } from \"@candy-kingdom/bonnie\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface OneImageSettingData extends SettingData {\r\n width: number;\r\n height: number;\r\n format: FileFormat;\r\n allowedMimeTypes: string[];\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingBase {\r\n id: string;\r\n order: number;\r\n title: string;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\n\r\nexport interface SettingData {\r\n type: string;\r\n empty: SettingData;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { Setting } from \"./setting\";\r\n\r\nexport interface SettingGroup {\r\n id: string;\r\n order: number;\r\n title: string;\r\n records: Setting<any>[];\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { SettingBase } from \"./setting-base\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { ISetting } from \"./i-setting\";\r\n\r\nexport interface Setting<T extends SettingData> extends SettingBase {\r\n data: T;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\r\n\r\nexport interface SvgSettingData extends SettingData {\r\n src: FileSrcImageMeta;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { SettingData } from \"./setting-data\";\r\nimport { IEquatable } from \"./i-equatable\";\r\nimport { TextSettingType } from \"./text-setting-type\";\r\n\r\nexport interface TextSettingData extends SettingData {\r\n text: string;\r\n textType: TextSettingType;\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum TextSettingType {\r\n SingleLine = 0,\r\n MultiLine = 1,\r\n}\r\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport * from './file-setting-data';\r\nexport * from './i-equatable';\r\nexport * from './i-setting';\r\nexport * from './localized-text-setting-data';\r\nexport * from './lottie-setting-data';\r\nexport * from './one-image-setting-data';\r\nexport * from './setting-base';\r\nexport * from './setting-data';\r\nexport * from './setting-group';\r\nexport * from './setting';\r\nexport * from './svg-setting-data';\r\nexport * from './text-setting-data';\r\nexport * from './text-setting-type';\r\n","export enum DeviceType {\n NotSet = 0,\n Mobile = 1,\n Tablet = 2,\n Desktop = 3\n}\n","\n\n\nexport enum TextEditorField {\n NotSet = 0,\n Input = 1,\n Textarea = 2\n}\n","\n// tslint:disable-next-line: max-line-length\nexport const regExpIsMobile = new RegExp(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/, 'i');\n\nexport function isLocalUrlString(url: string): boolean {\n if (url === undefined || url === null || url.trim().length === 0)\n return true;\n\n if (url.startsWith('//'))\n return false;\n\n if (url.startsWith('./') || url.startsWith('/'))\n return true;\n\n return false;\n}\n\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\n return (value & flag) === flag;\n}\n\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\n return (enabled ? value | flag : value & ~flag) as T;\n}\n","export enum DeviceVisibility {\n None = 0,\n Desktop = 1,\n Tablet = 2,\n Mobile = 4,\n All = Desktop | Tablet | Mobile\n}\n","import { Directive, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[boncEditable]',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true }]\n})\nexport class EditableDirective<T = unknown> {\n @Output()\n public readonly saved = new EventEmitter<T>();\n\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly externalSaveCall = new EventEmitter<void>();\n\n @Output()\n public readonly canceled = new EventEmitter<void>();\n\n @Output()\n public readonly valueChange = new EventEmitter<T>();\n\n private propagateChange: (newValue: T) => void = () => { };\n\n private _inEditMode = false;\n private _isDirty = false;\n\n private _value?: T;\n private _originalValue?: T;\n private _storedData?: string;\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public subscribe\n (\n params: {\n readonly onValueChange?: (x: T) => void,\n readonly onEditModeChange?: (x: boolean) => void,\n readonly onSaveRequest?: () => void\n }\n ): Subscription[] {\n\n const subscriptions: Subscription[] = [];\n\n if (params.onValueChange !== undefined && params.onValueChange !== null) {\n subscriptions.push\n (\n this.valueChange.subscribe((x: T) => {\n if (params.onValueChange)\n params.onValueChange(x);\n })\n );\n }\n\n if (params.onEditModeChange !== undefined) {\n subscriptions.push\n (\n this.editModeChange.subscribe((x: boolean) => {\n if (params.onEditModeChange)\n params.onEditModeChange(x);\n })\n );\n }\n\n if (params.onSaveRequest !== undefined) {\n subscriptions.push\n (\n this.externalSaveCall.subscribe(() => {\n if (params.onSaveRequest)\n params.onSaveRequest();\n })\n );\n }\n\n return subscriptions;\n }\n\n public requestSave() {\n this.externalSaveCall.emit();\n }\n\n public startEditing = (): void => {\n if (this._inEditMode) {\n this.updateDirty();\n return;\n }\n\n this._inEditMode = true;\n this.updateDirty();\n this.editModeChange.emit(true);\n }\n\n public save(newData?: T): void {\n if (!this._inEditMode) {\n console.warn('save before edit mode'); //todo: fix that\n }\n\n this.finishEditing();\n\n const newUnqieNotEmptyData = this.value === newData || newData === undefined\n ? JSON.parse(JSON.stringify(this.value))\n : newData;\n\n this.setOriginal(newUnqieNotEmptyData);\n this.updateDirty();\n\n this.saved.emit(newUnqieNotEmptyData);\n\n this.propagateChange(newUnqieNotEmptyData);\n }\n\n public patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\n if (this._originalValue === undefined || this._originalValue === null)\n return;\n\n if (typeof this._originalValue !== \"object\") {\n console.warn('patch save called on not object type');\n return;\n }\n\n (this._originalValue as any)[propName] = newDataParts;\n\n this.setOriginal(this._originalValue);\n\n this.updateDirty();\n\n if (!this.isDirty)\n this.close();\n }\n\n // change model without opening or closing the editor\n\n public silentPatch(dict: Partial<T>): void {\n for (const key in dict) {\n // eslint-disable-next-line no-prototype-builtins\n if (!dict.hasOwnProperty(key))\n continue;\n\n const propVal = dict[key];\n\n\n if (this._value !== undefined && this._value !== null) {\n this._value[key] = propVal as any;\n }\n\n if (this._originalValue !== undefined && this._originalValue !== null) {\n this._originalValue[key] = propVal as any;\n }\n }\n this._storedData = JSON.stringify(this._originalValue);\n }\n\n public cancel(): void {\n if (!this._inEditMode)\n return;\n\n this.finishEditing();\n\n // reset value\n this.setValue(this._originalValue);\n\n this.canceled.emit();\n }\n\n public close(): void {\n this.finishEditing();\n }\n\n private finishEditing(): void {\n if (!this._inEditMode)\n return;\n\n this._inEditMode = false;\n this.editModeChange.emit(false);\n }\n\n private setValue(newValue?: T): void {\n this._value = (newValue === null || newValue === undefined)\n ? undefined\n : JSON.parse(JSON.stringify(newValue));\n\n this.valueChange.emit(this._value);\n }\n\n public set value(newValue: T | undefined) {\n this.setValue(newValue);\n }\n\n public get value(): T | undefined {\n return this._value;\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._value) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n private setOriginal(newOriginalValue: T) {\n this._originalValue = newOriginalValue;\n this._storedData = JSON.stringify(newOriginalValue);\n }\n\n // #region ngModel\n\n writeValue(newValue: T): void {\n this.finishEditing();\n\n this.setOriginal(newValue);\n this._isDirty = false;\n\n this.setValue(newValue);\n }\n\n setDisabledState?(): void {\n }\n\n registerOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\n this.propagateChange = (newValue: T): void => {\n tellAngularThatSomethingIsChanged(newValue);\n };\n }\n\n registerOnTouched(): void {\n }\n\n // #endregion\n}\n","import { QueryList, ContentChildren, AfterContentInit, OnDestroy, Output, EventEmitter, Component } from '@angular/core';\nimport { Subscription, Subject, debounceTime } from 'rxjs';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n selector: 'bonc-editable-group',\n standalone: true,\n template: '<ng-content></ng-content>'\n})\nexport class EditableGroupComponent implements AfterContentInit, OnDestroy {\n @Output()\n public readonly editModeChange = new EventEmitter<boolean>();\n\n @Output()\n public readonly saved = new EventEmitter<void>();\n\n @Output()\n public readonly requestEditorClose = new EventEmitter<boolean>();\n\n @ContentChildren(EditableDirective, { descendants: true })\n public editables!: QueryList<EditableDirective>;\n\n private readonly subscriptions: Subscription[] = [];\n private _inEditMode = false;\n\n private readonly saveSubject = new Subject<void>();\n\n public ngAfterContentInit(): void {\n this.saveSubject\n .asObservable()\n .pipe(debounceTime(100))\n .subscribe(() => this.saved.emit());\n\n this.updateSubscriptions();\n\n this.editables.changes.subscribe\n (\n () => {\n this.clearSubscribtions();\n this.updateSubscriptions();\n }\n );\n }\n\n public get inEditMode(): boolean {\n return this._inEditMode;\n }\n\n public saveAll(): void {\n this.editables.forEach(x => x.requestSave());\n }\n\n public cancelAll(): void {\n this.editables.forEach(x => x.cancel());\n }\n\n public closeAll(): void {\n this.requestEditorClose.emit(true);\n this.editables.forEach(x => x.close());\n }\n\n private clearSubscribtions(): void {\n this.subscriptions.forEach(x => x.unsubscribe());\n this.subscriptions.splice(0, this.subscriptions.length);\n }\n\n private updateSubscriptions(): void {\n\n this.editables.forEach\n (\n editable => {\n\n this.subscriptions.push(\n editable.saved.subscribe(\n () => this.onSave()\n )\n );\n\n this.subscriptions.push(\n ...editable.subscribe({\n onEditModeChange: this.updateEditMode.bind(this)\n })\n );\n }\n );\n }\n\n private onSave(): void {\n this.saveSubject.next();\n }\n\n private updateEditMode(): void {\n const newEditMode = this.editables\n .filter(x => x.inEditMode)\n .length > 0;\n\n if (newEditMode === this._inEditMode)\n return;\n\n this._inEditMode = newEditMode;\n\n this.editModeChange.next(newEditMode);\n }\n\n public ngOnDestroy(): void {\n this.clearSubscribtions();\n }\n}\n","import { Component, Input, inject } from '@angular/core';\n\nimport { EditableDirective } from './editable.directive';\n\n@Component({\n template: ''\n})\nexport abstract class FormBaseComponent<TData = unknown> {\n public static readonly inputs = ['locale'];\n\n protected name = '';\n private _locale = '';\n\n public readonly editable = inject(EditableDirective<TData>, { host: true });\n\n @Input()\n public set locale(value: string) {\n this._locale = value;\n }\n\n public get locale(): string {\n return this._locale;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DeviceType } from '../core';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'bonc-translation-input',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './translation-input.component.html',\n styleUrls: ['./translation-input.component.scss']\n})\nexport class TranslationInputComponent {\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n}\n","<input [(ngModel)]=\"text[locale]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, QueryList, ViewChildren, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { take } from 'rxjs/operators';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { DeviceType } from '../core';\n\n@Component({\n selector: 'bonc-translation-textarea',\n standalone: true,\n imports: [FormsModule, CdkTextareaAutosize],\n templateUrl: './translation-textarea.component.html',\n styleUrls: ['./translation-textarea.component.scss']\n})\nexport class TranslationTextareaComponent implements OnChanges, AfterViewInit {\n @ViewChildren(CdkTextareaAutosize)\n public autosizeList!: QueryList<CdkTextareaAutosize>;\n\n @Input()\n public minRows?: number;\n\n @Input()\n public maxRows?: number;\n\n @Input({ required: true })\n public text!: LocalizedString;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device: DeviceType = DeviceType.NotSet;\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n ngAfterViewInit(): void {\n setTimeout(this.triggerResize.bind(this));\n }\n\n ngOnChanges(): void {\n setTimeout(this.triggerResize.bind(this), 500);\n }\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onKeyPress() {\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n private triggerResize() {\n // console.log('trigger resize!');\n\n // todo: investigate is it working or not\n // this.ngZone.onStable.pipe(take(1))\n // .subscribe(() => {\n // this.autosizeList.forEach(x => x.resizeToFitContent(true));\n // });\n }\n}\n","<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","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\nimport { LocalizedString } from '@candy-kingdom/bonnie';\nimport { TextEditorField } from '../../core';\n\n@Component({\n selector: 'bonc-link-popup',\n standalone: true,\n imports: [CommonModule, FormsModule, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './link-popup.component.html',\n styleUrl: './link-popup.component.scss'\n})\nexport class LinkPopupComponent {\n public readonly TextEditorField = TextEditorField;\n @Output()\n public linkChange: EventEmitter<LocalizedString> = new EventEmitter();\n\n @Output()\n public startEditing: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public changed: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public blurred: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public open: EventEmitter<void> = new EventEmitter();\n\n @Output()\n public closed: EventEmitter<void> = new EventEmitter();\n\n @Input({ required: true })\n public field!: TextEditorField;\n public LinkPopupField = TextEditorField;\n\n @Input()\n public maxRows?: number;\n\n @Input()\n public minRows?: number;\n\n @Input({ required: true })\n public linkTitle!: LocalizedString; // todo: allready in weblink\n\n @Input({ required: true })\n public locale!: string;\n\n @Input({ required: true })\n public link!: LocalizedString;\n\n public popupIsShown = false;\n\n public onClick() {\n this.startEditing.emit();\n }\n\n public onChange() {\n console.log('change link pop up')\n this.changed.emit();\n }\n\n public onBlur() {\n this.blurred.emit();\n }\n\n public showPopup(): void {\n this.popupIsShown = true;\n this.open.emit();\n }\n\n public hidePopup(): void {\n this.popupIsShown = false;\n this.closed.emit();\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EditableDirective } from '../core-components';\n\n@Component({\n selector: 'bonc-form-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './form-controls.component.html',\n styleUrls: ['./form-controls.component.scss']\n})\nexport class FormControlsComponent {\n @Input({ required: true })\n public editable!: EditableDirective<any>;\n}\n","<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","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { FileMeta, FileSrc } from '@candy-kingdom/bonnie';\n\n@Component({\n selector: 'bonc-file-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe],\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss']\n})\nexport class FileUploaderComponent {\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<FileSrc<FileMeta>>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<string, string>;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n\n public fileTypeMask?: string = undefined;\n\n private _uploadTypes: string[] = [];\n private _src?: FileSrc<FileMeta>;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: FileSrc<FileMeta> | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): FileSrc<FileMeta> | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadTypes(newUploadType: string[]) {\n this._uploadTypes.splice(0, this._uploadTypes.length);\n\n this._uploadTypes.push(...newUploadType);\n\n this.fileTypeMask = this._uploadTypes.length === 0 ? undefined : this._uploadTypes.join(',');\n\n this.cd.detectChanges();\n }\n\n public get uploadTypes(): string[] {\n return this._uploadTypes;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n const uploadUrl = this.uploadUrlMap.get(file.type) ?? this.uploadUrlMap.get(\"\");\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type '${file.type}'`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<FileSrc<FileMeta>>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === null || event.body === undefined) {\n console.warn(`empty body from uploader`);\n break;\n }\n\n this.srcChange.emit(event.body);\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges()\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<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","import { Component, OnInit, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileMeta, FileSrc, ImageMeta, OpenGraphData } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst uploadMap = new Map<string, string>();\nuploadMap.set('', `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\n\n@Component({\n selector: 'bonc-seo-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent, FileUploaderComponent],\n templateUrl: './seo-form.component.html',\n styleUrls: ['./seo-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> implements OnInit {\n public readonly uploadMap = uploadMap;\n\n private _pageId = '';\n public ogImageUploadUrl = '';\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set pageId(value: string) {\n this._pageId = value;\n this.ogImageUploadUrl = `/api/admin/page/Og-Image?pageId=${this.pageId}`; // todo: replace with link to single image api\n }\n\n public get pageId(): string {\n return this._pageId;\n }\n\n public ResToSrc(res: { url: string }): string {\n return res.url;\n }\n\n public replaceImage($event: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n if (this.editable.value !== undefined) {\n this.editable.value.image[this.locale] = $event as FileSrc<ImageMeta>;\n }\n\n this.editable.updateDirty();\n }\n}\n","<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","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-svg-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './svg-form.component.html',\n styleUrls: ['./svg-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public readonly SvgMime = 'image/svg+xml';\n\n @Input()\n public label = '';\n\n public uploadMap = new Map<string, string>();\n\n private _uploadUrl = '/api/admin/upload/image/svg';\n\n constructor() {\n super()\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set(this.SvgMime, this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FileMeta, FileSrc, ImageMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\nconst DefaultImageMimeTypes = ['image/png', 'image/jpeg'];\n\n@Component({\n selector: 'bonc-one-image-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './one-image-form.component.html',\n styleUrls: ['./one-image-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> implements OnInit {\n private readonly cd = inject(ChangeDetectorRef);\n\n public uploadMap = new Map<string, string>();\n\n private _mimeTypes = DefaultImageMimeTypes;\n\n private _uploadUrl = '/api/admin/upload/image';\n\n private _label = ''\n\n constructor() {\n super()\n\n this.uploadMap.set('', this._uploadUrl);\n }\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input()\n public set label(newValue: string) {\n this._label = newValue;\n }\n\n public get label(): string {\n return this._label;\n }\n\n @Input()\n public set uploadUrl(newValue: string) {\n this._uploadUrl = newValue;\n\n this.uploadMap.set('', this._uploadUrl);\n\n this.cd.detectChanges();\n }\n\n @Input()\n public set mimeTypes(newValue: string[]) {\n this._mimeTypes = newValue.length === 0 ? DefaultImageMimeTypes : newValue;\n this.cd.detectChanges();\n }\n\n public get mimeTypes(): string[] {\n return this._mimeTypes;\n }\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<ImageMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-file-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent],\n templateUrl: './file-form.component.html',\n styleUrls: ['./file-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public uploadTypes: string[] = [];\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","\nexport enum TextInputStyle {\n NotSet = 0,\n SingleLine = 1,\n MultiLine = 2\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TextInputStyle } from './TextInputStyle';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\n\n@Component({\n selector: 'bonc-text-form',\n standalone: true,\n imports: [CommonModule, FormsModule, FormControlsComponent],\n templateUrl: './text-form.component.html',\n styleUrls: ['./text-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TextFormComponent extends FormBaseComponent<string> implements OnInit {\n public readonly TextInputStyle = TextInputStyle;\n\n @Input()\n public label = '';\n\n @Input()\n public type = TextInputStyle.SingleLine;\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AnimationOptions, LottieComponent } from 'ngx-lottie';\n\nimport { FileMeta, FileSrc, SvgMeta } from '@candy-kingdom/bonnie';\n\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { FileUploaderComponent } from '../../file-uploader/file-uploader.component';\n\n@Component({\n selector: 'bonc-lottie-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, FileUploaderComponent, LottieComponent],\n templateUrl: './lottie-form.component.html',\n styleUrls: ['./lottie-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> implements OnInit {\n public readonly LottieMimeType = 'application/json';\n\n public animOptions?: AnimationOptions;\n\n @Input()\n public label = '';\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n\n this.editable.valueChange.subscribe(x => {\n const url = x?.url ?? '';\n this.animOptions = url.length === 0 ? undefined : { path: url };\n })\n }\n\n @Input({ required: true })\n public uploadMap = new Map<string, string>();;\n\n public onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n this.editable.startEditing();\n\n const svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n this.editable.value = svgSrc;\n\n this.editable.updateDirty();\n }\n\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LocalizedString } from '@candy-kingdom/bonnie';\n\nimport { EditableDirective, FormBaseComponent } from '../../core-components';\nimport { TextEditorField } from '../../core';\nimport { FormControlsComponent } from '../../form-controls/form-controls.component';\nimport { TranslationInputComponent } from '../../translation-input/translation-input.component';\nimport { TranslationTextareaComponent } from '../../translation-textarea/translation-textarea.component';\n\n@Component({\n selector: 'bonc-translation-form',\n standalone: true,\n imports: [CommonModule, FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent],\n templateUrl: './translation-form.component.html',\n styleUrls: ['./translation-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> implements OnInit {\n public readonly TextEditorField = TextEditorField;\n\n @Input({ required: true })\n public field!: TextEditorField;\n\n @Input() label?: string;\n\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<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","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBaseComponent } from '../../core-components/form-base.component';\nimport { EditableDirective } from '../../core-components/editable.directive';\n\n@Component({\n selector: 'bonc-unknown-form',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './unknown-form.component.html',\n styleUrls: ['./unknown-form.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class UnknownFormComponent extends FormBaseComponent<string> implements OnInit {\n @Input()\n public label = '';\n\n ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.editable.save();\n });\n }\n}\n","<label>Unknown form:<b>{{label}}</b></label>\n<pre><ng-content></ng-content></pre>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable, combineLatest, map, merge, mergeMap, of } from 'rxjs';\n\nimport { PageBase, View } from '@candy-kingdom/bonnie';\n\nimport { SettingData } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\ntype DataDictionary = { [n: string]: Observable<unknown> };\n\nexport type SettingDataDict = { [id: string]: SettingData };\n\n@Injectable()\nexport class DataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n public getView(viewCode: string): Observable<Readonly<PageBase>> {\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\n return pageOb;\n }\n\n public getPage(pageRoute: string): Observable<Readonly<PageBase>> {\n const pageUrl = `/${pageRoute}`\n\n const pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`);\n return pageOb;\n }\n\n public getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\n const pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\n params: { ids: ids }\n });\n\n return pageOb;\n }\n\n private getSkeleton<T extends (PageBase | View)>(url: string): Observable<Readonly<T>> {\n const skeletonOb = this.http.get<T>(url);\n\n const routeDataObs = skeletonOb\n .pipe\n (\n map(\n x => {\n const notEmptyDataRoutes = x.bones\n .map(b => ('dataRoute' in b) && typeof (b.dataRoute) === 'string' ? b.dataRoute : '')\n .filter(x => x.length > 0);\n\n if (notEmptyDataRoutes.length === 0) {\n const emptyData: DataDictionary = {};\n return { page: of(x), data: of(emptyData) };\n }\n\n return {\n page: of(x),\n data: combineLatest\n (\n notEmptyDataRoutes\n .map(dataRoute => {\n const url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\n\n return {\n route: dataRoute,\n json: this.http.get(url)\n }\n })\n .reduce(\n (prev, curr) => {\n prev[curr.route] = curr.json;\n return prev;\n }, {} as DataDictionary\n )\n )\n }\n }\n\n ),\n map(x => combineLatest(x)),\n mergeMap(res => merge(res)),\n map(x => {\n\n for (const bone of x.page.bones) {\n if (!('dataRoute' in bone) || typeof bone.dataRoute !== 'string' || bone.dataRoute.length === 0)\n continue;\n\n const data = x.data[bone.dataRoute];\n\n if (data === undefined || data === null)\n throw new Error(`Data ${bone.dataRoute} have not been preloaded`);\n\n (bone as any).data = data; // todo: fix\n }\n\n return x.page;\n })\n );\n\n return routeDataObs;\n }\n}\n\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from 'rxjs';\n\nimport { PageBase } from \"@candy-kingdom/bonnie\";\n\nimport { SettingBase, SettingGroup } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\n@Injectable()\nexport class AdminDataService {\n private readonly http = inject(HttpClient);\n private readonly baseHref = inject(API_BASE_URL);\n\n constructor() {\n console.log('baseHref: ' + this.baseHref);\n }\n\n public getSettingGroups(): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/settings`);\n return pageOb;\n }\n\n public getPage(url: string): Observable<SettingGroup[]> {\n const pageOb = this.http.get<SettingGroup[]>(`${this.baseHref}api/admin/pages/${url}`);\n return pageOb;\n }\n\n public storePage(page: PageBase): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/pages`, page);\n return ob;\n }\n\n public updateSettings(settings: SettingBase[]): Observable<void> {\n const ob = this.http.post<void>(`${this.baseHref}api/admin/settings`, settings);\n return ob;\n }\n}\n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DeviceType } from '../core';\nimport { EditableGroupComponent } from '../core-components';\n\n@Component({\n selector: 'bonc-admin-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './admin-controls.component.html',\n styleUrls: ['./admin-controls.component.scss']\n})\nexport class AdminControlsComponent {\n public readonly DeviceType = DeviceType;\n\n @Input({ required: true })\n public editableGroup!: EditableGroupComponent;\n\n @Input()\n public deviceControls = false;\n\n public locale = 'en';\n public device = this.DeviceType.Desktop;\n\n public changeLocale(): void {\n this.locale = this.locale === 'en' ? 'ru' : 'en';\n }\n\n public changeDevice(): void {\n switch (this.device) {\n case DeviceType.Desktop:\n this.device = DeviceType.Tablet;\n return;\n\n case DeviceType.Tablet:\n this.device = DeviceType.Mobile;\n return;\n\n case DeviceType.Mobile:\n this.device = DeviceType.Desktop;\n return;\n\n default:\n this.device = DeviceType.Desktop;\n return;\n }\n }\n}\n","<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","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule, DecimalPipe } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { catchError, last, map, Observable } from 'rxjs';\n\nimport { MediaObjectFit, PixMediaUnion, MarcyMediaComponent } from '@candy-kingdom/bonnie';\nimport { MediaType } from '../core';\n\nconst imageMimeTypes = ['image/png', 'image/jpeg'];\nconst videoMimeTypes = ['video/mp4'];\n\nconst imageFileTypes = imageMimeTypes.join(',');\nconst videoFileTypes = videoMimeTypes.join(',');\n\nconst allMediaFileTypes = `${imageFileTypes},${videoFileTypes}`;\n\n@Component({\n selector: 'bonc-media-uploader',\n standalone: true,\n imports: [CommonModule, DecimalPipe, MarcyMediaComponent],\n templateUrl: './media-uploader.component.html',\n styleUrls: ['./media-uploader.component.scss']\n})\nexport class MediaUploaderComponent {\n public readonly MediaObjectFit = MediaObjectFit;\n\n @ViewChild('fileInput', { static: true })\n public fileInput!: ElementRef<HTMLInputElement>;\n\n @Output()\n public srcChange = new EventEmitter<PixMediaUnion>();\n\n @Input({ required: true })\n public uploadUrlMap!: ReadonlyMap<MediaType, string>;\n\n @Input()\n public forceRatio?: number;\n\n public progress = 0;\n public isUploading = false;\n\n public autoplay = true;\n public clipStyle?: SafeStyle;\n public fileTypeMask = allMediaFileTypes;\n\n private _uploadType?: MediaType;\n private _src?: PixMediaUnion;\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n private readonly cd = inject(ChangeDetectorRef);\n\n @Input()\n public set src(newSrc: PixMediaUnion | undefined) {\n if (this._src === newSrc)\n return;\n\n this._src = newSrc;\n }\n\n public get src(): PixMediaUnion | undefined {\n return this._src;\n }\n\n @Input()\n public set uploadType(newUploadType: MediaType | undefined) {\n switch (newUploadType) {\n case \"image\":\n this._uploadType = newUploadType;\n this.fileTypeMask = imageFileTypes;\n break;\n\n case \"video\":\n this._uploadType = newUploadType;\n this.fileTypeMask = videoFileTypes;\n break;\n\n case undefined:\n default:\n this._uploadType = newUploadType;\n this.fileTypeMask = allMediaFileTypes;\n break;\n }\n }\n\n public get uploadType(): MediaType | undefined {\n return this._uploadType;\n }\n\n public onFileSelect(fileInput: HTMLInputElement) {\n if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n return;\n\n const file = fileInput.files[0];\n\n let uploadingMediaType: MediaType;\n\n if (this._uploadType !== undefined && this._uploadType !== null) {\n uploadingMediaType = this._uploadType;\n }\n else if (imageMimeTypes.includes(file.type)) {\n uploadingMediaType = 'image';\n }\n else if (videoMimeTypes.includes(file.type)) {\n uploadingMediaType = 'video';\n }\n else {\n console.error(`unknown media type ${file.type} (${file.name})`);\n return;\n }\n\n const uploadUrl = this.uploadUrlMap.get(uploadingMediaType);\n\n if (uploadUrl === undefined || uploadUrl === null) {\n console.error(`upload map doesn't have url for type ${uploadingMediaType}`);\n return;\n }\n\n const formData: FormData = new FormData();\n\n formData.append('file', file);\n formData.append('ratio', `${this.forceRatio ?? 0}`);\n\n this.progress = 0;\n this.isUploading = true;\n\n this.updateClip();\n\n const request = new HttpRequest('POST', uploadUrl, formData, {\n reportProgress: true\n });\n\n this.http\n .request<PixMediaUnion>(request)\n .pipe\n (\n map(event => this.getEventMessage(event)),\n // tap(message => this.showProgress(message)),\n last(), // return last (completed) message to caller\n catchError(this.handleError(file))\n ).subscribe\n (\n () => { this.isUploading = false; }\n );\n }\n\n public selectFile(event: Event): void {\n // ignore buble click on file picker\n if (event.target === this.fileInput.nativeElement)\n return;\n\n this.fileInput.nativeElement.click();\n }\n\n private getEventMessage(event: HttpEvent<PixMediaUnion>): void {\n switch (event.type) {\n case HttpEventType.Sent:\n break;\n\n case HttpEventType.UploadProgress:\n this.progress = event.total === undefined ? 0.5 : event.loaded / event.total;\n this.updateClip();\n break;\n\n case HttpEventType.Response:\n if (event.body === undefined || event.body === null) {\n console.error('media deserialization error. Response body in undefined');\n } else {\n // remove this\n // needed for C# deserialization\n const pixmedia = {\n $type: event.body.type,\n ...event.body as any,\n };\n\n this.srcChange.emit(pixmedia);\n }\n break;\n\n default:\n break;\n }\n\n this.cd.detectChanges();\n }\n\n private updateClip(): void {\n this.clipStyle = this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`);\n }\n\n private handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n const func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n const message = `error uploadingFile ${file.name}.`;\n console.error(message, error, p2);\n alert(message);\n return new Observable<unknown>();\n };\n\n return func;\n }\n}\n","<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","import { Directive, ViewContainerRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[boncSkeletonEditorAnchor]',\n standalone: true\n})\nexport class SkeletonEditorAnchorDirective {\n public readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import { EventEmitter, HostBinding, Component, Input } from '@angular/core';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../skeleton-editor/ContentPreset';\nimport { IBoneEditor } from '../skeleton-editor/IBoneEditor';\nimport { DeviceType } from '../core';\n\n@Component({ template: '' })\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\n public readonly editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n public readonly saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n public readonly removed: EventEmitter<void> = new EventEmitter<void>();\n\n public readonly noPresets: boolean;\n\n @Input({ required: true })\n public locale!: string;\n public device = DeviceType.NotSet;\n\n private _bone!: TBone;\n private _storedData: string = '';\n\n private _currentPreset: ContentPreset<TBone> | undefined;\n\n protected readonly presets: ReadonlyArray<ContentPreset<TBone>>;\n private _isDirty = false;\n private _isEditing = false;\n\n public abstract onReset(): void;\n public abstract onFinishEditing(): void;\n\n protected abstract getPresets(): ContentPreset<TBone>[];\n\n constructor() {\n this.presets = this.getPresets();\n\n if (this.presets === undefined || this.presets === null)\n throw new Error('presets cannot be undefined in ContentPreset constructor');\n\n if (this.presets.length === 0) {\n this.presets = [\n\n {\n title: 'default',\n isActive: () => true,\n transformer: bone => bone,\n clean: bone => bone,\n }\n ];\n }\n\n this.noPresets = this.presets.length === 1;\n }\n\n @HostBinding('class.mobile') get isMobile(): boolean {\n return this.device !== undefined && this.device === DeviceType.Mobile;\n }\n\n @HostBinding('class.tablet') get isTablet(): boolean {\n return this.device !== undefined && this.device === DeviceType.Tablet;\n }\n\n @HostBinding('class.desktop') get isDesktop(): boolean {\n return this.device !== undefined && this.device === DeviceType.Desktop;\n }\n\n public get currentPreset(): ContentPreset<TBone> | undefined {\n return this._currentPreset;\n }\n\n public get bone(): TBone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newData: TBone) {\n this._isDirty = false;\n this._storedData = JSON.stringify(newData);\n this._bone = JSON.parse(this._storedData);\n this.updatePresetByData();\n }\n\n public get isDirty(): boolean {\n return this._isDirty;\n }\n\n public get isEditing(): boolean {\n return this._isEditing;\n }\n\n public resetData(): void {\n this._isEditing = false;\n this.bone = JSON.parse(this._storedData);\n\n if (this.onReset !== undefined)\n this.onReset();\n\n this.editing.emit(false);\n }\n\n public updateDirty(): void {\n this._isDirty = JSON.stringify(this._bone) !== this._storedData;\n }\n\n public markAsDirty(): void {\n this._isDirty = true;\n }\n\n public remove(): void {\n this.removed.next();\n }\n\n public save(): void {\n if (!this.isDirty)\n return;\n\n this._isDirty = false;\n\n this.finishEditing();\n\n this._storedData = JSON.stringify(this._bone);\n\n const clonedData: TBone = JSON.parse(this._storedData);\n this.saved.emit(clonedData);\n }\n\n public startEditing(): void {\n if (this._isEditing) {\n this.updateDirty();\n return;\n }\n\n this._isEditing = true;\n this.updateDirty();\n\n this.editing.emit(true);\n }\n\n public finishEditing(): void {\n if (this._isDirty)\n throw new Error('Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.');\n\n if (this.onFinishEditing !== undefined)\n this.onFinishEditing();\n\n this._isEditing = false;\n }\n\n public nextPreset(): void {\n const newIndex = this._currentPreset === undefined ? 0 : this.presets.indexOf(this._currentPreset) + 1;\n this.applyPresetAtIndex(newIndex);\n }\n\n private applyPresetAtIndex = (newIndex: number): void => {\n newIndex = newIndex < 0 ? 0 : newIndex % this.presets.length;\n\n const currentIndex = this._currentPreset === undefined ? -1 : this.presets.indexOf(this._currentPreset);\n if (currentIndex === newIndex)\n return;\n\n this._currentPreset = this.presets[newIndex];\n this._currentPreset.transformer(this._bone);\n\n this.updateDirty();\n }\n\n private updatePresetByData = (): void => {\n const countOfActive = this.presets.map(p => p.isActive(this._bone)).filter(p => p).length;\n\n if (countOfActive !== 1)\n throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);\n\n for (let i = 0; this.presets.length; i++) {\n const preset = this.presets[i];\n\n if (preset.isActive(this._bone)) {\n this.applyPresetAtIndex(i);\n break;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule, JsonPipe } from '@angular/common';\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { ContentPreset } from '../../skeleton-editor/ContentPreset';\nimport { BoneEditorBaseComponent } from '../bone-editor-base.component';\n\n@Component({\n selector: 'bonc-unknown-bone-editor',\n standalone: true,\n imports: [CommonModule, JsonPipe],\n templateUrl: './unknown-bone-editor.component.html',\n styleUrls: ['./unknown-bone-editor.component.scss']\n})\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\n public onFinishEditing(): void { }\n public onReset(): void { }\n\n protected getPresets(): ContentPreset<Bone>[] {\n return [];\n }\n}\n","<p>Unknown Bone Editor | bone type: {{bone.type}}</p>\n<pre>{{bone | json}}</pre>\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { Bone } from '@candy-kingdom/bonnie';\n\nimport { SkeletonEditorAnchorDirective } from '../skeleton-editor-anchor.directive';\nimport { DeviceType } from '../../core';\nimport { IBoneEditor } from '../IBoneEditor';\nimport { BoneEditorMap } from '../BoneEditorMap';\nimport { UnknownBoneEditorComponent } from '../../bone-editors/unknown-bone-editor/unknown-bone-editor.component';\n\n// todo: rename class\n@Component({\n selector: 'bonc-bone-editor-container',\n standalone: true,\n imports: [CommonModule, SkeletonEditorAnchorDirective],\n templateUrl: './bone-editor-container.component.html',\n styleUrls: ['./bone-editor-container.component.scss']\n})\nexport class BoneEditorContainerComponent implements OnChanges {\n @ViewChild(SkeletonEditorAnchorDirective, { static: true })\n public anchor!: SkeletonEditorAnchorDirective;\n\n @Output()\n public removed: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n public saved: EventEmitter<Bone> = new EventEmitter<Bone>();\n\n @Output()\n public editing: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public DeviceType = DeviceType;\n\n public editor!: IBoneEditor;\n\n public themePopupIsShown = false;\n\n private _bone!: Bone;\n\n private removeSubscription?: Subscription;\n private saveSubscription?: Subscription;\n private changedSubscription?: Subscription;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n private readonly componentFactoryResolver = inject(ComponentFactoryResolver);\n\n ngOnChanges(): void {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.locale = this.locale;\n this.editor.device = this.device;\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap\n\n public get bone(): Bone {\n return this._bone;\n }\n\n @Input({ required: true })\n public set bone(newBone: Bone) {\n this._bone = newBone;\n\n if (this.removeSubscription) {\n this.removeSubscription.unsubscribe();\n this.removeSubscription = undefined;\n }\n\n if (this.saveSubscription) {\n this.saveSubscription.unsubscribe();\n this.saveSubscription = undefined;\n }\n\n if (this.changedSubscription) {\n this.changedSubscription.unsubscribe();\n this.changedSubscription = undefined;\n }\n\n const viewContainerRef = this.anchor.viewContainerRef;\n\n viewContainerRef.clear();\n\n const componentType = this.map.get(newBone.type) ?? UnknownBoneEditorComponent;\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n const boneEditorRef = viewContainerRef.createComponent(componentFactory);\n\n this.editor = boneEditorRef.instance;\n this.editor.bone = newBone;\n\n this.removeSubscription = this.editor.removed.subscribe(() => {\n this.removed.next();\n });\n\n this.changedSubscription = this.editor.editing.subscribe\n (\n (isEditing: boolean) => {\n this.editing.next(isEditing);\n }\n );\n\n this.saveSubscription = this.editor.saved.subscribe(\n (newBoneValue: Bone) => {\n this.saved.next(newBoneValue);\n }\n );\n\n this.ngOnChanges();\n }\n\n public nextPreset = (): void => {\n if (this.editor === undefined || this.editor === null)\n return;\n\n this.editor.nextPreset();\n }\n\n // todo: add or remove visibility feature\n\n // public setDisabled = (disabled: boolean): void => {\n // if (this.editor === undefined || this.editor === null)\n // return;\n\n // this.editor.startEditing();\n\n // if (this.device === DeviceType.Desktop)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\n // else if (this.device === DeviceType.Tablet)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\n // else if (this.device === DeviceType.Mobile)\n // this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\n\n // this.editor.updateDirty();\n // }\n\n public get disabled(): boolean {\n if (this.editor === undefined || this.editor === null)\n throw new Error('editor should have been set');\n\n return false;\n // todo: add or remove visibility feature\n // const visibility = this.editor.bone.visibility;\n\n // if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\n // return false;\n\n // if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\n // return false;\n\n // if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\n // return false;\n\n // return true;\n }\n}\n","<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","import { Component, Input, OnChanges, OnInit, QueryList, ViewChildren, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Bone } from '@candy-kingdom/bonnie';\nimport { BoneEditorContainerComponent } from './bone-editor-container/bone-editor-container.component';\nimport { EditableDirective } from '../core-components/editable.directive';\nimport { DeviceType } from '../core';\nimport { IBoneTemplate } from './IBoneTemplate';\nimport { BoneEditorMap } from './BoneEditorMap';\n\n// todo: rename class\n@Component({\n selector: 'bonc-skeleton-editor',\n standalone: true,\n imports: [CommonModule, BoneEditorContainerComponent],\n templateUrl: './skeleton-editor.component.html',\n styleUrls: ['./skeleton-editor.component.scss'],\n hostDirectives: [EditableDirective]\n})\nexport class SkeletonEditorComponent implements OnInit, OnChanges {\n @ViewChildren('boneEditorContainer')\n public boneEditorContainerList!: QueryList<BoneEditorContainerComponent>;\n\n @Input({ required: true })\n public locale!: string;\n\n @Input()\n public device = DeviceType.NotSet;\n\n public readonly templatesAreShown: boolean[] = [];\n\n public readonly editable = inject(EditableDirective<Bone[]>, { host: true });\n\n public ngOnInit(): void {\n this.editable.externalSaveCall.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.save()\n );\n\n this.editable.save();\n });\n\n this.editable.canceled.subscribe(() => {\n this.boneEditorContainerList.forEach\n (\n editorContainer => editorContainer.editor?.resetData()\n );\n\n this.editable.save();\n });\n }\n\n @Input({ required: true })\n public map!: BoneEditorMap;\n\n public ngOnChanges(): void {\n this.templatesAreShown.splice(0, this.templatesAreShown.length);\n if (this.bones === undefined)\n return;\n\n this.bones.forEach(() => this.templatesAreShown.push(false));\n this.templatesAreShown.push(false);\n }\n\n @Input({ required: true })\n public templates!: ReadonlyArray<IBoneTemplate>;\n\n\n public get bones(): Bone[] {\n return this.editable?.value ?? [];\n }\n\n public boneEditHandler(isEditing: boolean): void {\n if (isEditing)\n this.editable.startEditing();\n else {\n const allClosed = this.boneEditorContainerList\n .filter(x => x.editor !== undefined && x.editor.isEditing)\n .length === 0;\n\n this.editable.updateDirty();\n\n if (!this.editable.isDirty && allClosed)\n this.editable.close();\n }\n }\n\n public boneChangeHandler(index: number, newBoneValue: Bone): void {\n if (Array.isArray(this.editable.value)) {\n this.editable.value[index] = newBoneValue;\n }\n\n this.editable.save();\n }\n\n public removeBone(boneIndex: number): void {\n if (this.bones === undefined || this.bones === null)\n return;\n\n if (!confirm('Вы уверены, что хотите удалить компонент?'))\n return;\n\n this.bones.splice(boneIndex, 1);\n\n if (!this.editable.inEditMode)\n this.editable.startEditing();\n\n this.editable.save();\n }\n\n public moveDown(boneIndex: number): void {\n if (boneIndex >= this.bones.length - 1)\n return;\n\n this.swapBones(boneIndex, boneIndex + 1);\n }\n\n public moveUp(boneIndex: number): void {\n if (boneIndex <= 0)\n return;\n\n this.swapBones(boneIndex - 1, boneIndex);\n }\n\n public createBone(index: number, selectedTemplate: IBoneTemplate): void {\n const newBone = selectedTemplate.boneFactory();\n\n this.bones.splice(index, 0, newBone);\n }\n\n private swapBones(index1: number, index2: number): void {\n if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\n throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);\n\n const tempBone = this.bones[index1];\n this.bones[index1] = this.bones[index2];\n this.bones[index2] = tempBone;\n }\n}\n\n\n","<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","import { Bone } from '@candy-kingdom/bonnie';\n\nexport interface ContentPreset<out TBone extends Bone> {\n title: string;\n isActive(data: TBone): boolean;\n clean(data: TBone): void;\n transformer(bone: TBone): void;\n}\n\nexport function createPreset<TBone extends Bone>(params: { title: string, style: string }): ContentPreset<TBone> {\n return {\n title: params.title,\n isActive: x => x.style === params.style,\n transformer: bone => bone.style = params.style,\n clean: bone => bone.style = params.style,\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.EditableDirective"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@candy-kingdom/bonnie-cms",
3
- "version": "0.25.0",
3
+ "version": "0.26.2",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/ulmer-morozov/candy-kingdom.git",
7
+ "directory": "libs/bonnie-cms"
8
+ },
4
9
  "peerDependencies": {
5
10
  "@angular/common": "^21.0.0",
6
11
  "@angular/core": "^21.0.0"
@@ -1,6 +1,6 @@
1
1
  import { FileSrcFileMeta, LocalizedString, FileFormat, FileSrcImageMeta, PixMediaUnion, OpenGraphData, FileSrc, FileMeta, SvgMeta, ImageMeta, PageBase, MediaObjectFit, Bone } from '@candy-kingdom/bonnie';
2
2
  import * as i0 from '@angular/core';
3
- import { EventEmitter, AfterContentInit, OnDestroy, QueryList, OnInit, InjectionToken, ElementRef, OnChanges, AfterViewInit, NgZone, ViewContainerRef, Type } from '@angular/core';
3
+ import { EventEmitter, AfterContentInit, OnDestroy, QueryList, OnInit, InjectionToken, ElementRef, OnChanges, AfterViewInit, ViewContainerRef, Type } from '@angular/core';
4
4
  import { Subscription, Observable } from 'rxjs';
5
5
  import { AnimationOptions } from 'ngx-lottie';
6
6
  import { SafeStyle } from '@angular/platform-browser';
@@ -478,7 +478,6 @@ declare class TranslationInputComponent {
478
478
  }
479
479
 
480
480
  declare class TranslationTextareaComponent implements OnChanges, AfterViewInit {
481
- private ngZone;
482
481
  autosizeList: QueryList<CdkTextareaAutosize>;
483
482
  minRows?: number;
484
483
  maxRows?: number;
@@ -488,7 +487,6 @@ declare class TranslationTextareaComponent implements OnChanges, AfterViewInit {
488
487
  startEditing: EventEmitter<void>;
489
488
  changed: EventEmitter<void>;
490
489
  blurred: EventEmitter<void>;
491
- constructor(ngZone: NgZone);
492
490
  ngAfterViewInit(): void;
493
491
  ngOnChanges(): void;
494
492
  onClick(): void;