@candy-kingdom/bonnie-cms 0.26.16 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 { 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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"}
1
+ {"version":3,"file":"candy-kingdom-bonnie-cms.mjs","sources":["../../../../libs/bonnie-cms/src/lib/core/DeviceType.ts","../../../../libs/bonnie-cms/src/lib/core/DeviceVisibility.ts","../../../../libs/bonnie-cms/src/lib/core/TextEditorField.ts","../../../../libs/bonnie-cms/src/lib/core/Utils.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/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/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/file-uploader/file-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/file-uploader/file-uploader.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/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/lottie-form/lottie-form.component.ts","../../../../libs/bonnie-cms/src/lib/forms/lottie-form/lottie-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/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/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/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/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.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/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/media-uploader/media-uploader.component.ts","../../../../libs/bonnie-cms/src/lib/media-uploader/media-uploader.component.html","../../../../libs/bonnie-cms/src/lib/services/API_BASE_URL.ts","../../../../libs/bonnie-cms/src/lib/services/admin-data.service.ts","../../../../libs/bonnie-cms/src/lib/services/data.service.ts","../../../../libs/bonnie-cms/src/lib/skeleton-editor/skeleton-editor-anchor.directive.ts","../../../../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/ContentPreset.ts","../../../../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/candy-kingdom-bonnie-cms.ts"],"sourcesContent":["export enum DeviceType {\n\tNotSet = 0,\n\tMobile = 1,\n\tTablet = 2,\n\tDesktop = 3,\n}\n","export enum DeviceVisibility {\n\tNone = 0,\n\tDesktop = 1,\n\tTablet = 2,\n\tMobile = 4,\n\tAll = Desktop | Tablet | Mobile,\n}\n","export enum TextEditorField {\n\tNotSet = 0,\n\tInput = 1,\n\tTextarea = 2,\n}\n","// tslint:disable-next-line: max-line-length\nexport const regExpIsMobile = new RegExp(\n\t/(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/,\n\t\"i\",\n);\n\nexport function isLocalUrlString(url: string): boolean {\n\tif (url === undefined || url === null || url.trim().length === 0) return true;\n\n\tif (url.startsWith(\"//\")) return false;\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) return true;\n\n\treturn false;\n}\n\nexport function hasFlag<T extends number>(value: T, flag: T): boolean {\n\treturn (value & flag) === flag;\n}\n\nexport function setOrRemoveFlag<T extends number>(value: T, flag: T, enabled: boolean): T {\n\treturn (enabled ? value | flag : value & ~flag) as T;\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { DeviceType } from \"../core\";\nimport type { EditableGroupComponent } from \"../core-components\";\n\n@Component({\n\tselector: \"bonc-admin-controls\",\n\n\ttemplateUrl: \"./admin-controls.component.html\",\n\tstyleUrl: \"./admin-controls.component.scss\",\n})\nexport class AdminControlsComponent {\n\tpublic readonly DeviceType = DeviceType;\n\n\tpublic readonly editableGroup = input.required<EditableGroupComponent>();\n\n\tpublic readonly deviceControls = input(false);\n\n\tpublic locale = \"en\";\n\tpublic device = this.DeviceType.Desktop;\n\n\tpublic changeLocale(): void {\n\t\tthis.locale = this.locale === \"en\" ? \"ru\" : \"en\"; // move locales to CMS config\n\t}\n\n\tpublic changeDevice(): void {\n\t\tswitch (this.device) {\n\t\t\tcase DeviceType.Desktop:\n\t\t\t\tthis.device = DeviceType.Tablet;\n\t\t\t\treturn;\n\n\t\t\tcase DeviceType.Tablet:\n\t\t\t\tthis.device = DeviceType.Mobile;\n\t\t\t\treturn;\n\n\t\t\tcase DeviceType.Mobile:\n\t\t\t\tthis.device = DeviceType.Desktop;\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\tthis.device = DeviceType.Desktop;\n\t\t\t\treturn;\n\t\t}\n\t}\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 @if (editableGroup() && editableGroup().inEditMode()) {\n <a (click)=\"editableGroup().saveAll()\"\n class=\"save\">Save all</a>\n\n <a (click)=\"editableGroup().cancelAll()\"\n class=\"cancel\">Cancel all</a>\n }\n</div>\n","import {\n\tComponent,\n\tcomputed,\n\teffect,\n\tHostBinding,\n\tinput,\n\tmodel,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\n\nimport type { Bone } from \"@candy-kingdom/bonnie\";\n\nimport { DeviceType } from \"../core\";\nimport type { ContentPreset } from \"../skeleton-editor/ContentPreset\";\nimport type { IBoneEditor } from \"../skeleton-editor/IBoneEditor\";\n\n@Component({ template: \"\" })\nexport abstract class BoneEditorBaseComponent<TBone extends Bone> implements IBoneEditor<TBone> {\n\tpublic readonly editing = output<boolean>();\n\tpublic readonly saved = output<Bone>();\n\tpublic readonly removed = output<void>();\n\n\tpublic readonly boneEtalon = model.required<TBone>();\n\n\tpublic readonly locale = input.required<string>();\n\tpublic readonly device = input<DeviceType>(DeviceType.NotSet);\n\n\tprivate readonly _presets = signal<ContentPreset<TBone>[]>([]);\n\tpublic readonly presets = this._presets.asReadonly();\n\n\tprivate readonly _currentPreset = signal<ContentPreset<TBone> | undefined>(undefined);\n\tpublic readonly currentPreset = this._currentPreset.asReadonly();\n\n\tprivate readonly _isDirty = signal(false);\n\tpublic readonly isDirty = this._isDirty.asReadonly();\n\n\tprivate readonly _isEditing = signal(false);\n\tpublic readonly isEditing = this._isEditing.asReadonly();\n\n\tpublic readonly noPresets = computed(() => this.presets().length === 0);\n\n\t// effect gonna fix this undefined value\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tprotected readonly bone = signal<TBone>(undefined!);\n\n\tprivate _storedBoneJson = \"\";\n\n\tpublic abstract onReset(): void;\n\tpublic abstract onFinishEditing(): void;\n\n\tprotected abstract getPresets(): ContentPreset<TBone>[];\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst newData = this.boneEtalon();\n\t\t\tthis._isDirty.set(false);\n\t\t\tthis._storedBoneJson = JSON.stringify(newData);\n\t\t\tthis.bone.set(JSON.parse(this._storedBoneJson));\n\t\t\tthis.updatePresetByData();\n\t\t});\n\n\t\tconst presets = this.getPresets();\n\n\t\tif (presets.length === 0) {\n\t\t\tpresets.push({\n\t\t\t\ttitle: \"default\",\n\t\t\t\tisActive: () => true,\n\t\t\t\ttransformer: (bone) => bone,\n\t\t\t\tclean: (bone) => bone,\n\t\t\t});\n\t\t}\n\n\t\t// todo: remove this, use just regular presets\n\t\tthis._presets.set(presets);\n\t}\n\n\t@HostBinding(\"class.mobile\") get isMobile(): boolean {\n\t\treturn this.device() === DeviceType.Mobile;\n\t}\n\n\t@HostBinding(\"class.tablet\") get isTablet(): boolean {\n\t\treturn this.device() === DeviceType.Tablet;\n\t}\n\n\t@HostBinding(\"class.desktop\") get isDesktop(): boolean {\n\t\treturn this.device() === DeviceType.Desktop;\n\t}\n\n\tpublic resetData(): void {\n\t\tthis._isEditing.set(false);\n\n\t\tthis.boneEtalon.set(JSON.parse(this._storedBoneJson));\n\t\tthis.updatePresetByData();\n\n\t\tif (this.onReset !== undefined) this.onReset();\n\n\t\tthis.editing.emit(false);\n\t}\n\n\tpublic updateDirty(): void {\n\t\tthis._isDirty.set(JSON.stringify(this.bone()) !== this._storedBoneJson);\n\t}\n\n\tpublic markAsDirty(): void {\n\t\tthis._isDirty.set(true);\n\t}\n\n\tpublic remove(): void {\n\t\tthis.removed.emit();\n\t}\n\n\tpublic save(): void {\n\t\tif (!this.isDirty()) return;\n\n\t\tthis._isDirty.set(false);\n\n\t\tthis.finishEditing();\n\n\t\tthis._storedBoneJson = JSON.stringify(this.bone());\n\n\t\tconst clonedData: TBone = JSON.parse(this._storedBoneJson);\n\t\tthis.saved.emit(clonedData);\n\t}\n\n\tpublic startEditing(): void {\n\t\tif (this.isEditing()) {\n\t\t\tthis.updateDirty();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isEditing.set(true);\n\t\tthis.updateDirty();\n\n\t\tthis.editing.emit(true);\n\t}\n\n\tpublic finishEditing(): void {\n\t\tif (this._isDirty())\n\t\t\tthrow new Error(\n\t\t\t\t\"Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.\",\n\t\t\t);\n\n\t\tif (this.onFinishEditing !== undefined) this.onFinishEditing();\n\n\t\tthis._isEditing.set(false);\n\t}\n\n\tpublic nextPreset(): void {\n\t\tconst currentPreset = this.currentPreset();\n\t\tconst newIndex = currentPreset === undefined ? 0 : this.presets().indexOf(currentPreset) + 1;\n\n\t\tthis.applyPresetAtIndex(newIndex);\n\t}\n\n\tprivate applyPresetAtIndex = (newIndex: number): void => {\n\t\tnewIndex = newIndex < 0 ? 0 : newIndex % this.presets().length;\n\n\t\tconst currentPreset = this.currentPreset();\n\n\t\tconst currentIndex = currentPreset === undefined ? -1 : this.presets().indexOf(currentPreset);\n\t\tif (currentIndex === newIndex) return;\n\n\t\tconst newPreset = this.presets()[newIndex];\n\n\t\tthis._currentPreset.set(newPreset);\n\t\tnewPreset.transformer(this.bone());\n\n\t\tthis.updateDirty();\n\t};\n\n\tprivate updatePresetByData = (): void => {\n\t\tconst countOfActive = this.presets()\n\t\t\t.map((p) => p.isActive(this.bone()))\n\t\t\t.filter((p) => p).length;\n\n\t\tif (countOfActive !== 1)\n\t\t\tthrow new Error(\n\t\t\t\t`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`,\n\t\t\t);\n\n\t\tfor (let i = 0; i < this.presets().length; i++) {\n\t\t\tconst preset = this.presets()[i];\n\n\t\t\tif (preset.isActive(this.bone())) {\n\t\t\t\tthis.applyPresetAtIndex(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n}\n","import { JsonPipe } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\n\nimport type { Bone } from \"@candy-kingdom/bonnie\";\n\nimport type { ContentPreset } from \"../../skeleton-editor/ContentPreset\";\nimport { BoneEditorBaseComponent } from \"../bone-editor-base.component\";\n\n@Component({\n\tselector: \"bonc-unknown-bone-editor\",\n\n\timports: [JsonPipe],\n\ttemplateUrl: \"./unknown-bone-editor.component.html\",\n\tstyleUrl: \"./unknown-bone-editor.component.scss\",\n})\nexport class UnknownBoneEditorComponent extends BoneEditorBaseComponent<Bone> {\n\tpublic onFinishEditing(): void {\n\t\t// no-op for unknown bone type\n\t}\n\tpublic onReset(): void {\n\t\t// no-op for unknown bone type\n\t}\n\n\tprotected getPresets(): ContentPreset<Bone>[] {\n\t\treturn [];\n\t}\n}\n","<p>Unknown Bone Editor | bone type: {{bone().type}}</p>\n<pre>{{bone() | json}}</pre>\n","import { Directive, forwardRef, output, signal } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Directive({\n\tselector: \"[boncEditable]\",\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableDirective), multi: true },\n\t],\n})\nexport class EditableDirective<T = unknown> {\n\tpublic readonly saved = output<T>();\n\tpublic readonly editModeChange = output<boolean>();\n\tpublic readonly externalSaveCall = output<void>();\n\tpublic readonly canceled = output<void>();\n\tpublic readonly valueChange = output<T | undefined>();\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate propagateChange: (newValue: T) => void = () => {};\n\n\tprivate readonly _inEditMode = signal(false);\n\tpublic readonly inEditMode = this._inEditMode.asReadonly();\n\n\tprivate readonly _isDirty = signal(false);\n\tpublic readonly isDirty = this._isDirty.asReadonly();\n\n\tprivate _value?: T;\n\tprivate _originalValue?: T;\n\tprivate _storedData?: string;\n\n\tpublic requestSave() {\n\t\tthis.externalSaveCall.emit();\n\t}\n\n\tpublic startEditing = (): void => {\n\t\tif (this.inEditMode()) {\n\t\t\tthis.updateDirty();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._inEditMode.set(true);\n\t\tthis.updateDirty();\n\t\tthis.editModeChange.emit(true);\n\t};\n\n\tpublic save(newData?: T): void {\n\t\tif (!this.inEditMode()) {\n\t\t\tconsole.warn(\"save before edit mode\"); //todo: fix that\n\t\t}\n\n\t\tthis.finishEditing();\n\n\t\tconst newUnqieNotEmptyData =\n\t\t\tthis.value === newData || newData === undefined\n\t\t\t\t? JSON.parse(JSON.stringify(this.value))\n\t\t\t\t: newData;\n\n\t\tthis.setOriginal(newUnqieNotEmptyData);\n\t\tthis.updateDirty();\n\n\t\tthis.saved.emit(newUnqieNotEmptyData);\n\n\t\tthis.propagateChange(newUnqieNotEmptyData);\n\t}\n\n\tpublic patchSave(propName: keyof T, newDataParts: T[keyof T]): void {\n\t\tif (this._originalValue === undefined || this._originalValue === null) return;\n\n\t\tif (typeof this._originalValue !== \"object\") {\n\t\t\tconsole.warn(\"patch save called on not object type\");\n\t\t\treturn;\n\t\t}\n\n\t\t(this._originalValue as any)[propName] = newDataParts;\n\n\t\tthis.setOriginal(this._originalValue);\n\n\t\tthis.updateDirty();\n\n\t\tif (!this.isDirty()) this.close();\n\t}\n\n\t// change model without opening or closing the editor\n\n\tpublic silentPatch(dict: Partial<T>): void {\n\t\tfor (const key in dict) {\n\t\t\tif (!Object.hasOwn(dict, key)) continue;\n\n\t\t\tconst propVal = dict[key];\n\n\t\t\tif (this._value !== undefined && this._value !== null) {\n\t\t\t\tthis._value[key] = propVal as any;\n\t\t\t}\n\n\t\t\tif (this._originalValue !== undefined && this._originalValue !== null) {\n\t\t\t\tthis._originalValue[key] = propVal as any;\n\t\t\t}\n\t\t}\n\t\tthis._storedData = JSON.stringify(this._originalValue);\n\t}\n\n\tpublic cancel(): void {\n\t\tif (!this.inEditMode()) return;\n\n\t\tthis.finishEditing();\n\n\t\t// reset value\n\t\tthis.setValue(this._originalValue);\n\n\t\tthis.canceled.emit();\n\t}\n\n\tpublic close(): void {\n\t\tthis.finishEditing();\n\t}\n\n\tprivate finishEditing(): void {\n\t\tif (!this.inEditMode()) return;\n\n\t\tthis._inEditMode.set(false);\n\t\tthis.editModeChange.emit(false);\n\t}\n\n\tprivate setValue(newValue?: T): void {\n\t\tthis._value =\n\t\t\tnewValue === null || newValue === undefined\n\t\t\t\t? undefined\n\t\t\t\t: JSON.parse(JSON.stringify(newValue));\n\n\t\tthis.valueChange.emit(this._value);\n\t}\n\n\tpublic set value(newValue: T | undefined) {\n\t\tthis.setValue(newValue);\n\t}\n\n\tpublic get value(): T | undefined {\n\t\treturn this._value;\n\t}\n\n\tpublic updateDirty(): void {\n\t\tthis._isDirty.set(JSON.stringify(this._value) !== this._storedData);\n\t}\n\n\tpublic markAsDirty(): void {\n\t\tthis._isDirty.set(true);\n\t}\n\n\tprivate setOriginal(newOriginalValue: T) {\n\t\tthis._originalValue = newOriginalValue;\n\t\tthis._storedData = JSON.stringify(newOriginalValue);\n\t}\n\n\t// #region ngModel\n\n\twriteValue(newValue: T): void {\n\t\tthis.finishEditing();\n\n\t\tthis.setOriginal(newValue);\n\t\tthis._isDirty.set(false);\n\n\t\tthis.setValue(newValue);\n\t}\n\n\tsetDisabledState?(): void {\n\t\t// required by ControlValueAccessor\n\t}\n\n\tregisterOnChange(tellAngularThatSomethingIsChanged: (newValue: T) => void): void {\n\t\tthis.propagateChange = (newValue: T): void => {\n\t\t\ttellAngularThatSomethingIsChanged(newValue);\n\t\t};\n\t}\n\n\tregisterOnTouched(): void {\n\t\t// required by ControlValueAccessor\n\t}\n\n\t// #endregion\n}\n","import {\n\tComponent,\n\tcontentChildren,\n\tDestroyRef,\n\teffect,\n\tinject,\n\toutput,\n\tsignal,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\nimport { debounceTime, Subject, type Unsubscribable } from \"rxjs\";\n\nimport { EditableDirective } from \"./editable.directive\";\n\n@Component({\n\tselector: \"bonc-editable-group\",\n\ttemplate: \"<ng-content></ng-content>\",\n})\nexport class EditableGroupComponent {\n\tpublic readonly editModeChange = output<boolean>();\n\tpublic readonly saved = output<void>();\n\tpublic readonly requestEditorClose = output<boolean>();\n\n\tpublic readonly editables = contentChildren(EditableDirective, { descendants: true });\n\n\tprivate readonly _subscriptions: Unsubscribable[] = [];\n\tpublic readonly inEditMode = signal(false);\n\n\tprivate readonly _saveSubject = new Subject<void>(); // todo: use signal\n\n\tconstructor() {\n\t\tconst saveSubscription = this._saveSubject\n\t\t\t.asObservable()\n\t\t\t.pipe(debounceTime(100), takeUntilDestroyed())\n\t\t\t.subscribe(() => this.saved.emit(undefined));\n\n\t\teffect(() => {\n\t\t\tthis.clearSubscriptions();\n\t\t\tthis.updateSubscriptions();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tsaveSubscription.unsubscribe();\n\t\t\tthis.clearSubscriptions();\n\t\t});\n\t}\n\n\tpublic saveAll(): void {\n\t\tthis.editables().forEach((x) => x.requestSave());\n\t}\n\n\tpublic cancelAll(): void {\n\t\tthis.editables().forEach((x) => x.cancel());\n\t}\n\n\tpublic closeAll(): void {\n\t\tthis.requestEditorClose.emit(true);\n\t\tthis.editables().forEach((x) => x.close());\n\t}\n\n\tprivate clearSubscriptions(): void {\n\t\tthis._subscriptions.forEach((x) => x.unsubscribe());\n\t\tthis._subscriptions.splice(0, this._subscriptions.length);\n\t}\n\n\tprivate updateSubscriptions(): void {\n\t\tthis.editables().forEach((editable) => {\n\t\t\tthis._subscriptions.push(\n\t\t\t\teditable.saved.subscribe(this.onSave.bind(this)),\n\t\t\t\teditable.editModeChange.subscribe(this.updateEditMode.bind(this)),\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate onSave(): void {\n\t\tthis._saveSubject.next();\n\t}\n\n\tprivate updateEditMode(): void {\n\t\tconst newEditMode = this.editables().filter((x) => x.inEditMode()).length > 0;\n\n\t\tif (newEditMode === this.inEditMode()) return;\n\n\t\tthis.inEditMode.set(newEditMode);\n\n\t\tthis.editModeChange.emit(newEditMode);\n\t}\n}\n","import { Component, inject, input } from \"@angular/core\";\n\nimport { EditableDirective } from \"./editable.directive\";\n\n@Component({\n\ttemplate: \"\",\n})\nexport abstract class FormBaseComponent<TData = unknown> {\n\tprotected name = \"\";\n\n\tpublic readonly editable = inject(EditableDirective<TData>, { host: true });\n\n\tpublic readonly locale = input(\"\");\n}\n","import { Component, input, output } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport type { LocalizedString } from \"@candy-kingdom/bonnie\";\n\nimport { DeviceType } from \"../core\";\n\n@Component({\n\tselector: \"bonc-translation-input\",\n\n\timports: [FormsModule],\n\ttemplateUrl: \"./translation-input.component.html\",\n\tstyleUrl: \"./translation-input.component.scss\",\n})\nexport class TranslationInputComponent {\n\tpublic readonly text = input.required<LocalizedString>();\n\tpublic readonly locale = input.required<string>();\n\n\tpublic readonly device = input<DeviceType>(DeviceType.NotSet);\n\n\tpublic readonly startEditing = output<void>();\n\tpublic readonly changed = output<void>();\n\tpublic readonly blurred = output<void>();\n\n\tpublic onClick() {\n\t\tthis.startEditing.emit();\n\t}\n\n\tpublic onKeyPress() {\n\t\tthis.changed.emit();\n\t}\n\n\tpublic onBlur() {\n\t\tthis.blurred.emit();\n\t}\n}\n","<input [(ngModel)]=\"text()[locale()]\"\n (click)=\"onClick()\"\n (keyup)=\"onKeyPress()\"\n (blur)=\"onBlur()\" />\n","import { CdkTextareaAutosize } from \"@angular/cdk/text-field\";\nimport { Component, effect, input, output, viewChildren } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport type { LocalizedString } from \"@candy-kingdom/bonnie\";\n\nimport { DeviceType } from \"../core\";\n\n@Component({\n\tselector: \"bonc-translation-textarea\",\n\n\timports: [FormsModule, CdkTextareaAutosize],\n\ttemplateUrl: \"./translation-textarea.component.html\",\n\tstyleUrl: \"./translation-textarea.component.scss\",\n})\nexport class TranslationTextareaComponent {\n\tpublic readonly autosizeList = viewChildren(CdkTextareaAutosize);\n\n\tpublic readonly text = input.required<LocalizedString>();\n\tpublic readonly locale = input.required<string>();\n\n\tpublic readonly minRows = input<number>();\n\tpublic readonly maxRows = input<number>();\n\tpublic readonly device = input<DeviceType>(DeviceType.NotSet);\n\n\tpublic readonly startEditing = output<void>();\n\tpublic readonly changed = output<void>();\n\tpublic readonly blurred = output<void>();\n\n\tconstructor() {\n\t\t// todo: check if it still necessary\n\t\teffect((onCleanup) => {\n\t\t\tthis.text();\n\t\t\tthis.locale();\n\t\t\tthis.minRows();\n\t\t\tthis.maxRows();\n\t\t\tconst timer = setTimeout(() => this.triggerResize(), 500);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic onClick() {\n\t\tthis.startEditing.emit();\n\t}\n\n\tpublic onKeyPress() {\n\t\tthis.changed.emit();\n\t}\n\n\tpublic onBlur() {\n\t\tthis.blurred.emit();\n\t}\n\n\tprivate triggerResize() {\n\t\tthis.autosizeList().forEach((x) => x.resizeToFitContent(true));\n\t}\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, input, output } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport type { LocalizedString } from \"@candy-kingdom/bonnie\";\n\nimport { TextEditorField } from \"../../core\";\nimport { TranslationInputComponent } from \"../../translation-input/translation-input.component\";\nimport { TranslationTextareaComponent } from \"../../translation-textarea/translation-textarea.component\";\n\n@Component({\n\tselector: \"bonc-link-popup\",\n\n\timports: [FormsModule, TranslationInputComponent, TranslationTextareaComponent],\n\ttemplateUrl: \"./link-popup.component.html\",\n\tstyleUrl: \"./link-popup.component.scss\",\n})\nexport class LinkPopupComponent {\n\tpublic readonly TextEditorField = TextEditorField;\n\tpublic readonly LinkPopupField = TextEditorField;\n\n\tpublic readonly linkChange = output<LocalizedString>();\n\n\tpublic readonly startEditing = output<void>();\n\n\tpublic readonly changed = output<void>();\n\n\tpublic readonly blurred = output<void>();\n\n\tpublic readonly open = output<void>();\n\n\tpublic readonly closed = output<void>();\n\n\tpublic readonly field = input.required<TextEditorField>();\n\n\tpublic readonly maxRows = input<number>();\n\n\tpublic readonly minRows = input<number>();\n\n\tpublic readonly linkTitle = input.required<LocalizedString>();\n\n\tpublic readonly locale = input.required<string>();\n\n\tpublic readonly link = input.required<LocalizedString>();\n\n\tpublic popupIsShown = false;\n\n\tpublic onClick() {\n\t\tthis.startEditing.emit();\n\t}\n\n\tpublic onChange() {\n\t\tthis.changed.emit();\n\t}\n\n\tpublic onBlur() {\n\t\tthis.blurred.emit();\n\t}\n\n\tpublic showPopup(): void {\n\t\tthis.popupIsShown = true;\n\t\tthis.open.emit();\n\t}\n\n\tpublic hidePopup(): void {\n\t\tthis.popupIsShown = false;\n\t\tthis.closed.emit();\n\t}\n}\n","@switch (field()) {\n @case (TextEditorField.Input) {\n <bonc-translation-input (click)=\"showPopup()\"\n [text]=\"linkTitle()\"\n [locale]=\"locale()\"\n (startEditing)=\"onClick()\"\n (changed)=\"onChange()\"\n (blurred)=\"onBlur()\">\n </bonc-translation-input>\n }\n @case (TextEditorField.Textarea) {\n <bonc-translation-textarea (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}\n\n@if (popupIsShown) {\n <div>\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}\n","import { DecimalPipe } from \"@angular/common\";\nimport { HttpClient, type HttpEvent, HttpEventType, HttpRequest } from \"@angular/common/http\";\nimport {\n\tComponent,\n\tcomputed,\n\ttype ElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\nimport { DomSanitizer, type SafeStyle } from \"@angular/platform-browser\";\n\nimport { catchError, last, map, Observable } from \"rxjs\";\n\nimport type { FileMeta, FileSrc } from \"@candy-kingdom/bonnie\";\n\n@Component({\n\tselector: \"bonc-file-uploader\",\n\n\timports: [DecimalPipe],\n\ttemplateUrl: \"./file-uploader.component.html\",\n\tstyleUrl: \"./file-uploader.component.scss\",\n})\nexport class FileUploaderComponent {\n\tpublic readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n\tpublic readonly srcChange = output<FileSrc<FileMeta>>();\n\n\tpublic readonly uploadUrlMap = input.required<ReadonlyMap<string, string>>();\n\n\tpublic readonly src = input<FileSrc<FileMeta> | undefined>();\n\n\tpublic readonly uploadTypes = input<string[]>([]);\n\n\tpublic readonly fileTypeMask = computed(() => {\n\t\tconst types = this.uploadTypes();\n\t\treturn types.length === 0 ? undefined : types.join(\",\");\n\t});\n\n\tpublic readonly progress = signal(0);\n\tpublic readonly isUploading = signal(false);\n\tpublic readonly clipStyle = signal<SafeStyle | undefined>(undefined);\n\n\tprivate readonly sanitizer = inject(DomSanitizer);\n\tprivate readonly http = inject(HttpClient);\n\n\tpublic onFileSelect(fileInput: HTMLInputElement) {\n\t\tif (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n\t\t\treturn;\n\n\t\tconst file = fileInput.files[0];\n\n\t\tconst uploadUrl = this.uploadUrlMap().get(file.type) ?? this.uploadUrlMap().get(\"\");\n\n\t\tif (uploadUrl === undefined || uploadUrl === null) {\n\t\t\tconsole.error(`upload map doesn't have url for type '${file.type}'`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst formData: FormData = new FormData();\n\n\t\tformData.append(\"file\", file);\n\n\t\tthis.progress.set(0);\n\t\tthis.isUploading.set(true);\n\n\t\tthis.updateClip();\n\n\t\tconst request = new HttpRequest(\"POST\", uploadUrl, formData, {\n\t\t\treportProgress: true,\n\t\t});\n\n\t\tthis.http\n\t\t\t.request<FileSrc<FileMeta>>(request)\n\t\t\t.pipe(\n\t\t\t\tmap((event) => this.getEventMessage(event)),\n\t\t\t\t// tap(message => this.showProgress(message)),\n\t\t\t\tlast(), // return last (completed) message to caller\n\t\t\t\tcatchError(this.handleError(file)),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.isUploading.set(false);\n\t\t\t});\n\t}\n\n\tpublic selectFile(event: Event): void {\n\t\tif (event.target === this.fileInput().nativeElement) return;\n\n\t\tthis.fileInput().nativeElement.click();\n\t}\n\n\tprivate getEventMessage(event: HttpEvent<FileSrc<FileMeta>>): void {\n\t\tswitch (event.type) {\n\t\t\tcase HttpEventType.Sent:\n\t\t\t\tbreak;\n\n\t\t\tcase HttpEventType.UploadProgress:\n\t\t\t\tthis.progress.set(event.total === undefined ? 0.5 : event.loaded / event.total);\n\t\t\t\tthis.updateClip();\n\t\t\t\tbreak;\n\n\t\t\tcase HttpEventType.Response:\n\t\t\t\tif (event.body === null || event.body === undefined) {\n\t\t\t\t\tconsole.warn(`empty body from uploader`);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis.srcChange.emit(event.body);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate updateClip(): void {\n\t\tthis.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`));\n\t}\n\n\tprivate handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n\t\tconst func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n\t\t\tconst message = `error uploadingFile ${file.name}.`;\n\t\t\tconsole.error(message, error, p2);\n\t\t\talert(message);\n\t\t\treturn new Observable<unknown>();\n\t\t};\n\n\t\treturn func;\n\t}\n}\n","@if (src() === undefined || src()?.url === undefined || src()?.url?.length === 0) {\n <div>Upload file</div>\n}\n\n<ng-content></ng-content>\n\n<div (click)=\"selectFile($event)\" (keydown.enter)=\"selectFile($event)\" role=\"button\" tabindex=\"0\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask()\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n @if (isUploading()) {\n <span [style.clip-path]=\"clipStyle()\"\n [style.-webkit-clip-path]=\"clipStyle()\"\n class=\"loader\"></span>\n <span class=\"loader-text\">\n @if (progress() < 1) {\n <span>{{100 * progress() | number: '1.0-0'}}%</span>\n } @else {\n <span>converting</span>\n }\n </span>\n }\n</div>\n","import { Component, input } from \"@angular/core\";\n\nimport type { EditableDirective } from \"../core-components\";\n\n@Component({\n\tselector: \"bonc-form-controls\",\n\n\ttemplateUrl: \"./form-controls.component.html\",\n\tstyleUrl: \"./form-controls.component.scss\",\n})\nexport class FormControlsComponent {\n\tpublic readonly editable = input.required<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 @if (!editable().isDirty()) {\n <a (click)=\"editable().cancel()\" class=\"close\">close</a>\n } @else {\n <a (click)=\"editable().cancel()\">reset</a>\n <a (click)=\"editable().requestSave()\" class=\"apply\">apply</a>\n }\n</div>\n","import { Component, input } from \"@angular/core\";\n\nimport type { FileMeta, FileSrc, SvgMeta } from \"@candy-kingdom/bonnie\";\n\nimport { EditableDirective } from \"../../core-components\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\nimport { FileUploaderComponent } from \"../../file-uploader/file-uploader.component\";\nimport { FormControlsComponent } from \"../../form-controls/form-controls.component\";\n\n@Component({\n\tselector: \"bonc-file-form\",\n\n\timports: [FormControlsComponent, FileUploaderComponent],\n\ttemplateUrl: \"./file-form.component.html\",\n\tstyleUrl: \"./file-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class FileFormComponent extends FormBaseComponent<FileSrc<FileMeta>> {\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly uploadTypes = input.required<string[]>();\n\n\tpublic readonly uploadMap = input.required<Map<string, string>>();\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n\n\tpublic onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n\t\tthis.editable.startEditing();\n\n\t\tconst svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n\t\tthis.editable.value = svgSrc;\n\n\t\tthis.editable.updateDirty();\n\t}\n}\n","<bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{ label() }}</label>\n }\n <bonc-file-uploader\n [src]=\"editable.value\"\n [uploadTypes]=\"uploadTypes()\"\n [uploadUrlMap]=\"uploadMap()\"\n (srcChange)=\"onFileUploaded($event)\"\n >\n @let url = editable.value?.url;\n @if (url) {\n <div>{{ url }}</div>\n }\n </bonc-file-uploader>\n\n @let downloadUrl = editable.value?.url;\n @if (downloadUrl) {\n <a [href]=\"downloadUrl\" download target=\"_blank\">Download</a>\n }\n</bonc-form-controls>\n","import { Component, input } from \"@angular/core\";\n\nimport { type AnimationOptions, LottieComponent } from \"ngx-lottie\";\n\nimport type { FileMeta, FileSrc, SvgMeta } from \"@candy-kingdom/bonnie\";\n\nimport { EditableDirective } from \"../../core-components/editable.directive\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\nimport { FileUploaderComponent } from \"../../file-uploader/file-uploader.component\";\nimport { FormControlsComponent } from \"../../form-controls/form-controls.component\";\n\n@Component({\n\tselector: \"bonc-lottie-form\",\n\n\timports: [FormControlsComponent, FileUploaderComponent, LottieComponent],\n\ttemplateUrl: \"./lottie-form.component.html\",\n\tstyleUrl: \"./lottie-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class LottieFormComponent extends FormBaseComponent<FileSrc<FileMeta>> {\n\tpublic readonly LottieMimeType = \"application/json\";\n\n\t// todo: convert to signal\n\tpublic animOptions?: AnimationOptions;\n\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly uploadMap = input.required<Map<string, string>>();\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\n\t\tthis.editable.valueChange.subscribe((x) => {\n\t\t\tconst url = x?.url ?? \"\";\n\t\t\tthis.animOptions = url.length === 0 ? undefined : { path: url };\n\t\t});\n\t}\n\n\tpublic onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n\t\tthis.editable.startEditing();\n\n\t\tconst svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n\t\tthis.editable.value = svgSrc;\n\n\t\tthis.editable.updateDirty();\n\t}\n}\n","<bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{ label() }}</label>\n }\n <bonc-file-uploader\n [src]=\"editable.value\"\n [uploadTypes]=\"[LottieMimeType]\"\n [uploadUrlMap]=\"uploadMap()\"\n (srcChange)=\"onFileUploaded($event)\"\n >\n @if (animOptions) {\n <ng-lottie [options]=\"animOptions\"></ng-lottie>\n }\n </bonc-file-uploader>\n\n @let downloadUrl = editable.value?.url;\n @if (downloadUrl) {\n <a [href]=\"downloadUrl\" download target=\"_blank\">Download</a>\n }\n</bonc-form-controls>\n","import { Component, computed, DestroyRef, inject, input } from \"@angular/core\";\n\nimport type { FileMeta, FileSrc, ImageMeta } from \"@candy-kingdom/bonnie\";\n\nimport { EditableDirective } from \"../../core-components/editable.directive\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\nimport { FileUploaderComponent } from \"../../file-uploader/file-uploader.component\";\nimport { FormControlsComponent } from \"../../form-controls/form-controls.component\";\n\nconst DefaultImageMimeTypes = [\"image/png\", \"image/jpeg\"];\n\n@Component({\n\tselector: \"bonc-one-image-form\",\n\n\timports: [FormControlsComponent, FileUploaderComponent],\n\ttemplateUrl: \"./one-image-form.component.html\",\n\tstyleUrl: \"./one-image-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class OneImageFormComponent extends FormBaseComponent<FileSrc<ImageMeta>> {\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly uploadUrl = input(\"/api/admin/upload/image\");\n\n\tpublic readonly mimeTypes = input(DefaultImageMimeTypes);\n\n\tpublic readonly uploadMap = computed(() => {\n\t\tconst m = new Map<string, string>();\n\t\tm.set(\"\", this.uploadUrl());\n\t\treturn m;\n\t});\n\n\tprivate readonly destroyRef = inject(DestroyRef);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst sub = this.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t\tthis.destroyRef.onDestroy(() => sub.unsubscribe());\n\t}\n\n\tpublic onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n\t\tthis.editable.startEditing();\n\n\t\tconst svgSrc = fileSrc as FileSrc<ImageMeta>;\n\n\t\tthis.editable.value = svgSrc;\n\n\t\tthis.editable.updateDirty();\n\t}\n}\n","<bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{ label() }}</label>\n }\n <bonc-file-uploader\n [src]=\"editable.value\"\n [uploadTypes]=\"mimeTypes()\"\n [uploadUrlMap]=\"uploadMap()\"\n (srcChange)=\"onFileUploaded($event)\"\n >\n @let url = editable.value?.url;\n @if (url) {\n <img [src]=\"url\" />\n }\n </bonc-file-uploader>\n\n @let downloadUrl = editable.value?.url;\n @if (downloadUrl) {\n <a [href]=\"downloadUrl\" download target=\"_blank\">Download</a>\n }\n</bonc-form-controls>\n","import { Component, computed, input } from \"@angular/core\";\n\nimport type { FileMeta, FileSrc, ImageMeta, OpenGraphData } from \"@candy-kingdom/bonnie\";\n\nimport { EditableDirective, FormBaseComponent } from \"../../core-components\";\nimport { FileUploaderComponent } from \"../../file-uploader/file-uploader.component\";\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\nconst defaultUploadMap = new Map<string, string>();\ndefaultUploadMap.set(\"\", `/api/admin/upload/image?width=${1200}&height=${630}&format=image/jpeg`);\n\n@Component({\n\tselector: \"bonc-seo-form\",\n\n\timports: [\n\t\tFormControlsComponent,\n\t\tTranslationInputComponent,\n\t\tTranslationTextareaComponent,\n\t\tFileUploaderComponent,\n\t],\n\ttemplateUrl: \"./seo-form.component.html\",\n\tstyleUrl: \"./seo-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class SeoFormComponent extends FormBaseComponent<OpenGraphData> {\n\tpublic readonly uploadMap = defaultUploadMap;\n\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly pageId = input(\"\");\n\n\tpublic readonly ogImageUploadUrl = computed(\n\t\t() => `/api/admin/page/Og-Image?pageId=${this.pageId()}`,\n\t);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n\n\tpublic ResToSrc(res: { url: string }): string {\n\t\treturn res.url;\n\t}\n\n\tpublic replaceImage($event: FileSrc<FileMeta>): void {\n\t\tthis.editable.startEditing();\n\n\t\tif (this.editable.value !== undefined) {\n\t\t\tthis.editable.value.image[this.locale()] = $event as FileSrc<ImageMeta>;\n\t\t}\n\n\t\tthis.editable.updateDirty();\n\t}\n}\n","@if (editable.value !== undefined && editable.value !== null) {\n <bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <h2>{{label()}}</h2>\n }\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 @let imageUrl = editable.value.image[locale()]?.url;\n @if (imageUrl) {\n <img [src]=\"imageUrl\" />\n }\n </bonc-file-uploader>\n\n @let downloadUrl = editable.value.image[locale()]?.url;\n @if (downloadUrl) {\n <a [href]=\"downloadUrl\" download target=\"_blank\">Download</a>\n }\n </div>\n\n </bonc-form-controls>\n} @else {\n <div>Editable Value canot be null or undefined</div>\n}\n","import { Component, computed, input } from \"@angular/core\";\n\nimport type { FileMeta, FileSrc, SvgMeta } from \"@candy-kingdom/bonnie\";\n\nimport { EditableDirective } from \"../../core-components/editable.directive\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\nimport { FileUploaderComponent } from \"../../file-uploader/file-uploader.component\";\nimport { FormControlsComponent } from \"../../form-controls/form-controls.component\";\n\n@Component({\n\tselector: \"bonc-svg-form\",\n\n\timports: [FormControlsComponent, FileUploaderComponent],\n\ttemplateUrl: \"./svg-form.component.html\",\n\tstyleUrl: \"./svg-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class SvgFormComponent extends FormBaseComponent<FileSrc<SvgMeta>> {\n\tpublic readonly SvgMime = \"image/svg+xml\";\n\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly uploadUrl = input(\"/api/admin/upload/image/svg\");\n\n\tpublic readonly uploadMap = computed(() => {\n\t\tconst m = new Map<string, string>();\n\t\tm.set(this.SvgMime, this.uploadUrl());\n\t\treturn m;\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n\n\tpublic onFileUploaded(fileSrc: FileSrc<FileMeta>): void {\n\t\tthis.editable.startEditing();\n\n\t\tconst svgSrc = fileSrc as FileSrc<SvgMeta>;\n\n\t\tthis.editable.value = svgSrc;\n\n\t\tthis.editable.updateDirty();\n\t}\n}\n","<bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{label()}}</label>\n }\n <bonc-file-uploader [src]=\"editable.value\"\n [uploadTypes]=\"[SvgMime]\"\n [uploadUrlMap]=\"uploadMap()\"\n (srcChange)=\"onFileUploaded($event)\">\n @let url = editable.value?.url;\n @if (url) {\n <img [src]=\"url\" alt=\"\" />\n }\n </bonc-file-uploader>\n\n @let downloadUrl = editable.value?.url;\n @if (downloadUrl) {\n <a [href]=\"downloadUrl\" download target=\"_blank\">Download</a>\n }\n\n</bonc-form-controls>\n","export enum TextInputStyle {\n\tNotSet = 0,\n\tSingleLine = 1,\n\tMultiLine = 2,\n}\n","import { Component, input } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { EditableDirective } from \"../../core-components\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\nimport { FormControlsComponent } from \"../../form-controls/form-controls.component\";\nimport { TextInputStyle } from \"./TextInputStyle\";\n\n@Component({\n\tselector: \"bonc-text-form\",\n\n\timports: [FormsModule, FormControlsComponent],\n\ttemplateUrl: \"./text-form.component.html\",\n\tstyleUrl: \"./text-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class TextFormComponent extends FormBaseComponent<string> {\n\tpublic readonly TextInputStyle = TextInputStyle;\n\n\tpublic readonly label = input(\"\");\n\n\tpublic readonly type = input(TextInputStyle.SingleLine);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n}\n","<bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{label()}}</label>\n }\n @if (editable) {\n @switch (type()) {\n @case (TextInputStyle.SingleLine) {\n <input [(ngModel)]=\"editable.value\"\n [attr.aria-label]=\"label()\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\" />\n }\n @case (TextInputStyle.MultiLine) {\n <textarea [(ngModel)]=\"editable.value\"\n [attr.aria-label]=\"label()\"\n (click)=\"editable.startEditing()\"\n (keyup)=\"editable.updateDirty()\"\n (blur)=\"editable.updateDirty()\">\n </textarea>\n }\n }\n }\n</bonc-form-controls>\n","import { Component, input } from \"@angular/core\";\n\nimport type { LocalizedString } from \"@candy-kingdom/bonnie\";\n\nimport { TextEditorField } from \"../../core\";\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\";\n\n@Component({\n\tselector: \"bonc-translation-form\",\n\n\timports: [FormControlsComponent, TranslationInputComponent, TranslationTextareaComponent],\n\ttemplateUrl: \"./translation-form.component.html\",\n\tstyleUrl: \"./translation-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class TranslationFormComponent extends FormBaseComponent<LocalizedString> {\n\tpublic readonly TextEditorField = TextEditorField;\n\n\tpublic readonly field = input.required<TextEditorField>();\n\n\tpublic readonly label = input<string | undefined>();\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n}\n","@if (editable.value) {\n <bonc-form-controls [editable]=\"editable\">\n @if (label()) {\n <label>{{label()}}</label>\n }\n\n @switch (field()) {\n @case (TextEditorField.Input) {\n <bonc-translation-input [text]=\"editable.value\"\n [locale]=\"locale()\"\n (startEditing)=\"editable.startEditing()\"\n (changed)=\"editable.updateDirty()\"\n (blurred)=\"editable.updateDirty()\">\n </bonc-translation-input>\n }\n @case (TextEditorField.Textarea) {\n <bonc-translation-textarea [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 }\n }\n </bonc-form-controls>\n} @else {\n <div>Editable value canot be undefined</div>\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { EditableDirective } from \"../../core-components/editable.directive\";\nimport { FormBaseComponent } from \"../../core-components/form-base.component\";\n\n@Component({\n\tselector: \"bonc-unknown-form\",\n\n\ttemplateUrl: \"./unknown-form.component.html\",\n\tstyleUrl: \"./unknown-form.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class UnknownFormComponent extends FormBaseComponent<string> {\n\tpublic readonly label = input(\"\");\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n}\n","<label>Unknown form:<b>{{label()}}</b></label>\n<pre><ng-content></ng-content></pre>\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingData } from \"./setting-data\";\n\nexport interface FileSettingData extends SettingData {\n\tallowedMimeTypes: string[];\n\tsrc: FileSrcFileMeta;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport type IEquatable<_T> = {};\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SettingData } from \"./setting-data\";\n\nexport interface ISetting<T extends SettingData> {\n\tid: string;\n\ttitle: string;\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { LocalizedString } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingData } from \"./setting-data\";\nimport type { TextSettingType } from \"./text-setting-type\";\n\nexport interface LocalizedTextSettingData extends SettingData {\n\ttext: LocalizedString;\n\ttextType: TextSettingType;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcFileMeta } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingData } from \"./setting-data\";\n\nexport interface LottieSettingData extends SettingData {\n\tsrc: FileSrcFileMeta;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileFormat, FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingData } from \"./setting-data\";\n\nexport interface OneImageSettingData extends SettingData {\n\twidth: number;\n\theight: number;\n\tformat: FileFormat;\n\tallowedMimeTypes: string[];\n\tsrc: FileSrcImageMeta;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SettingBase } from \"./setting-base\";\nimport type { SettingData } from \"./setting-data\";\n\nexport interface Setting<T extends SettingData> extends SettingBase {\n\tdata: T;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface SettingBase {\n\tid: string;\n\torder: number;\n\ttitle: string;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport interface SettingData {\n\ttype: string;\n\tempty: SettingData;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { Setting } from \"./setting\";\n\nexport interface SettingGroup {\n\tid: string;\n\torder: number;\n\ttitle: string;\n\trecords: Setting<any>[];\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { FileSrcImageMeta } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingData } from \"./setting-data\";\n\nexport interface SvgSettingData extends SettingData {\n\tsrc: FileSrcImageMeta;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nimport type { SettingData } from \"./setting-data\";\nimport type { TextSettingType } from \"./text-setting-type\";\n\nexport interface TextSettingData extends SettingData {\n\ttext: string;\n\ttextType: TextSettingType;\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport enum TextSettingType {\n\tSingleLine = 0,\n\tMultiLine = 1,\n}\n","/**\n * This is a TypeGen auto-generated file.\n * Any changes made to this file can be lost when this file is regenerated.\n */\n\nexport * from \"./file-setting-data\";\nexport * from \"./i-equatable\";\nexport * from \"./i-setting\";\nexport * from \"./localized-text-setting-data\";\nexport * from \"./lottie-setting-data\";\nexport * from \"./one-image-setting-data\";\nexport * from \"./setting\";\nexport * from \"./setting-base\";\nexport * from \"./setting-data\";\nexport * from \"./setting-group\";\nexport * from \"./svg-setting-data\";\nexport * from \"./text-setting-data\";\nexport * from \"./text-setting-type\";\n","import { DecimalPipe } from \"@angular/common\";\nimport { HttpClient, type HttpEvent, HttpEventType, HttpRequest } from \"@angular/common/http\";\nimport {\n\tComponent,\n\tcomputed,\n\ttype ElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\nimport { DomSanitizer, type SafeStyle } from \"@angular/platform-browser\";\n\nimport { catchError, last, map, Observable } from \"rxjs\";\n\nimport { MarcyMediaComponent, MediaObjectFit, type PixMediaUnion } from \"@candy-kingdom/bonnie\";\n\nimport type { 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\tselector: \"bonc-media-uploader\",\n\n\timports: [DecimalPipe, MarcyMediaComponent],\n\ttemplateUrl: \"./media-uploader.component.html\",\n\tstyleUrl: \"./media-uploader.component.scss\",\n})\nexport class MediaUploaderComponent {\n\tpublic readonly MediaObjectFit = MediaObjectFit;\n\n\tpublic readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n\tpublic readonly srcChange = output<PixMediaUnion>();\n\n\tpublic readonly uploadUrlMap = input.required<ReadonlyMap<MediaType, string>>();\n\n\tpublic readonly forceRatio = input<number>();\n\n\tpublic readonly src = input<PixMediaUnion | undefined>();\n\n\tpublic readonly uploadType = input<MediaType | undefined>();\n\n\tpublic readonly fileTypeMask = computed(() => {\n\t\tswitch (this.uploadType()) {\n\t\t\tcase \"image\":\n\t\t\t\treturn imageFileTypes;\n\t\t\tcase \"video\":\n\t\t\t\treturn videoFileTypes;\n\t\t\tdefault:\n\t\t\t\treturn allMediaFileTypes;\n\t\t}\n\t});\n\n\tpublic readonly progress = signal(0);\n\tpublic readonly isUploading = signal(false);\n\tpublic readonly clipStyle = signal<SafeStyle | undefined>(undefined);\n\n\tprivate readonly sanitizer = inject(DomSanitizer);\n\tprivate readonly http = inject(HttpClient);\n\n\tpublic onFileSelect(fileInput: HTMLInputElement) {\n\t\tif (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)\n\t\t\treturn;\n\n\t\tconst file = fileInput.files[0];\n\n\t\tlet uploadingMediaType: MediaType;\n\n\t\tconst uploadType = this.uploadType();\n\n\t\tif (uploadType !== undefined && uploadType !== null) {\n\t\t\tuploadingMediaType = uploadType;\n\t\t} else if (imageMimeTypes.includes(file.type)) {\n\t\t\tuploadingMediaType = \"image\";\n\t\t} else if (videoMimeTypes.includes(file.type)) {\n\t\t\tuploadingMediaType = \"video\";\n\t\t} else {\n\t\t\tconsole.error(`unknown media type ${file.type} (${file.name})`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst uploadUrl = this.uploadUrlMap().get(uploadingMediaType);\n\n\t\tif (uploadUrl === undefined || uploadUrl === null) {\n\t\t\tconsole.error(`upload map doesn't have url for type ${uploadingMediaType}`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst formData: FormData = new FormData();\n\n\t\tformData.append(\"file\", file);\n\t\tformData.append(\"ratio\", `${this.forceRatio() ?? 0}`);\n\n\t\tthis.progress.set(0);\n\t\tthis.isUploading.set(true);\n\n\t\tthis.updateClip();\n\n\t\tconst request = new HttpRequest(\"POST\", uploadUrl, formData, {\n\t\t\treportProgress: true,\n\t\t});\n\n\t\tthis.http\n\t\t\t.request<PixMediaUnion>(request)\n\t\t\t.pipe(\n\t\t\t\tmap((event) => this.getEventMessage(event)),\n\t\t\t\t// tap(message => this.showProgress(message)),\n\t\t\t\tlast(), // return last (completed) message to caller\n\t\t\t\tcatchError(this.handleError(file)),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.isUploading.set(false);\n\t\t\t});\n\t}\n\n\tpublic selectFile(event: Event): void {\n\t\tif (event.target === this.fileInput().nativeElement) return;\n\n\t\tthis.fileInput().nativeElement.click();\n\t}\n\n\tprivate getEventMessage(event: HttpEvent<PixMediaUnion>): void {\n\t\tswitch (event.type) {\n\t\t\tcase HttpEventType.Sent:\n\t\t\t\tbreak;\n\n\t\t\tcase HttpEventType.UploadProgress:\n\t\t\t\tthis.progress.set(event.total === undefined ? 0.5 : event.loaded / event.total);\n\t\t\t\tthis.updateClip();\n\t\t\t\tbreak;\n\n\t\t\tcase HttpEventType.Response:\n\t\t\t\tif (event.body === undefined || event.body === null) {\n\t\t\t\t\tconsole.error(\"media deserialization error. Response body in undefined\");\n\t\t\t\t} else {\n\t\t\t\t\t// remove this\n\t\t\t\t\t// needed for C# deserialization\n\t\t\t\t\tconst pixmedia = {\n\t\t\t\t\t\t$type: event.body.type,\n\t\t\t\t\t\t...(event.body as any),\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.srcChange.emit(pixmedia);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate updateClip(): void {\n\t\tthis.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`));\n\t}\n\n\tprivate handleError(file: File): (p1: unknown, p2: Observable<unknown>) => Observable<unknown> {\n\t\tconst func = (error: unknown, p2: Observable<unknown>): Observable<unknown> => {\n\t\t\tconst message = `error uploadingFile ${file.name}.`;\n\t\t\tconsole.error(message, error, p2);\n\t\t\talert(message);\n\t\t\treturn new Observable<unknown>();\n\t\t};\n\n\t\treturn func;\n\t}\n}\n","<bon-media [src]=\"src()\" [objectFit]=\"MediaObjectFit.Cover\"></bon-media>\n\n@if (src()?.sources?.length===0) {\n <div>Upload media</div>\n}\n\n<div (click)=\"selectFile($event)\" (keydown.enter)=\"selectFile($event)\" role=\"button\" tabindex=\"0\" class=\"media-container\">\n <input #fileInput [accept]=\"fileTypeMask()\" (change)=\"onFileSelect(fileInput)\" name=\"media\" type=\"file\" />\n @if (isUploading()) {\n <span [style.clip-path]=\"clipStyle()\"\n [style.-webkit-clip-path]=\"clipStyle()\"\n class=\"loader\"></span>\n <span class=\"loader-text\">\n @if (progress() < 1) {\n <span>{{100 * progress() | number: '1.0-0'}}%</span>\n } @else {\n <span>converting</span>\n }\n </span>\n }\n</div>\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\";\n\nimport type { Observable } from \"rxjs\";\n\nimport type { PageBase } from \"@candy-kingdom/bonnie\";\n\nimport type { SettingBase, SettingGroup } from \"../generated\";\nimport { API_BASE_URL } from \"./API_BASE_URL\";\n\n@Injectable()\nexport class AdminDataService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _baseHref = inject(API_BASE_URL);\n\n\tconstructor() {\n\t\tconsole.log(`baseHref: ${this._baseHref}`);\n\t}\n\n\tpublic getSettingGroups(): Observable<SettingGroup[]> {\n\t\tconst pageOb = this._http.get<SettingGroup[]>(`${this._baseHref}api/admin/settings`);\n\t\treturn pageOb;\n\t}\n\n\tpublic getPage(url: string): Observable<SettingGroup[]> {\n\t\tconst pageOb = this._http.get<SettingGroup[]>(`${this._baseHref}api/admin/pages/${url}`);\n\t\treturn pageOb;\n\t}\n\n\tpublic storePage(page: PageBase): Observable<void> {\n\t\tconst ob = this._http.post<void>(`${this._baseHref}api/admin/pages`, page);\n\t\treturn ob;\n\t}\n\n\tpublic updateSettings(settings: SettingBase[]): Observable<void> {\n\t\tconst ob = this._http.post<void>(`${this._baseHref}api/admin/settings`, settings);\n\t\treturn ob;\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\n\nimport { combineLatest, map, merge, mergeMap, type Observable, of } from \"rxjs\";\n\nimport type { PageBase, View } from \"@candy-kingdom/bonnie\";\n\nimport type { 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\tprivate readonly http = inject(HttpClient);\n\tprivate readonly baseHref = inject(API_BASE_URL);\n\n\tpublic getView(viewCode: string): Observable<Readonly<PageBase>> {\n\t\tconst pageOb = this.getSkeleton<PageBase>(`${this.baseHref}api/views/${viewCode}`);\n\t\treturn pageOb;\n\t}\n\n\tpublic getPage(pageRoute: string): Observable<Readonly<PageBase>> {\n\t\tconst pageUrl = `/${pageRoute}`;\n\n\t\tconst pageOb = this.getSkeleton<PageBase>(\n\t\t\t`${this.baseHref}api/pages/?url=${encodeURIComponent(pageUrl)}`,\n\t\t);\n\t\treturn pageOb;\n\t}\n\n\tpublic getSettings(ids: string[]): Observable<Readonly<SettingDataDict>> {\n\t\tconst pageOb = this.http.get<SettingDataDict>(`${this.baseHref}api/settings`, {\n\t\t\tparams: { ids: ids },\n\t\t});\n\n\t\treturn pageOb;\n\t}\n\n\tprivate getSkeleton<T extends PageBase | View>(url: string): Observable<Readonly<T>> {\n\t\tconst skeletonOb = this.http.get<T>(url);\n\n\t\tconst routeDataObs = skeletonOb.pipe(\n\t\t\tmap((x) => {\n\t\t\t\tconst notEmptyDataRoutes = x.bones\n\t\t\t\t\t.map((b) => (\"dataRoute\" in b && typeof b.dataRoute === \"string\" ? b.dataRoute : \"\"))\n\t\t\t\t\t.filter((x) => x.length > 0);\n\n\t\t\t\tif (notEmptyDataRoutes.length === 0) {\n\t\t\t\t\tconst emptyData: DataDictionary = {};\n\t\t\t\t\treturn { page: of(x), data: of(emptyData) };\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tpage: of(x),\n\t\t\t\t\tdata: combineLatest(\n\t\t\t\t\t\tnotEmptyDataRoutes\n\t\t\t\t\t\t\t.map((dataRoute) => {\n\t\t\t\t\t\t\t\tconst url = `${this.baseHref}api/Pages/Children/?url=${dataRoute}`;\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\troute: dataRoute,\n\t\t\t\t\t\t\t\t\tjson: this.http.get(url),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\t\t\t\tprev[curr.route] = curr.json;\n\t\t\t\t\t\t\t\treturn prev;\n\t\t\t\t\t\t\t}, {} as DataDictionary),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t\tmap((x) => combineLatest(x)),\n\t\t\tmergeMap((res) => merge(res)),\n\t\t\tmap((x) => {\n\t\t\t\tfor (const bone of x.page.bones) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\"dataRoute\" in bone) ||\n\t\t\t\t\t\ttypeof bone.dataRoute !== \"string\" ||\n\t\t\t\t\t\tbone.dataRoute.length === 0\n\t\t\t\t\t)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tconst data = x.data[bone.dataRoute];\n\n\t\t\t\t\tif (data === undefined || data === null)\n\t\t\t\t\t\tthrow new Error(`Data ${bone.dataRoute} have not been preloaded`);\n\n\t\t\t\t\t(bone as any).data = data; // todo: fix\n\t\t\t\t}\n\n\t\t\t\treturn x.page;\n\t\t\t}),\n\t\t);\n\n\t\treturn routeDataObs;\n\t}\n}\n","import { Directive, inject, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n\tselector: \"[boncSkeletonEditorAnchor]\",\n})\nexport class SkeletonEditorAnchorDirective {\n\tpublic readonly viewContainerRef = inject(ViewContainerRef);\n}\n","import {\n\tafterNextRender,\n\tComponent,\n\ttype ComponentRef,\n\teffect,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from \"@angular/core\";\n\nimport type { Unsubscribable } from \"rxjs\";\n\nimport type { Bone } from \"@candy-kingdom/bonnie\";\n\nimport { UnknownBoneEditorComponent } from \"../../bone-editors/unknown-bone-editor/unknown-bone-editor.component\";\nimport { DeviceType } from \"../../core\";\nimport type { BoneEditorMap } from \"../BoneEditorMap\";\nimport type { IBoneEditor } from \"../IBoneEditor\";\nimport { SkeletonEditorAnchorDirective } from \"../skeleton-editor-anchor.directive\";\n\n@Component({\n\tselector: \"bonc-bone-editor-container\",\n\n\timports: [SkeletonEditorAnchorDirective],\n\ttemplateUrl: \"./bone-editor-container.component.html\",\n\tstyleUrl: \"./bone-editor-container.component.scss\",\n})\nexport class BoneEditorContainerComponent {\n\tpublic readonly anchor = viewChild.required(SkeletonEditorAnchorDirective);\n\n\tpublic readonly removed = output<void>();\n\tpublic readonly saved = output<Bone>();\n\tpublic readonly editing = output<boolean>();\n\n\tpublic DeviceType = DeviceType;\n\n\tpublic editor!: IBoneEditor;\n\n\tpublic themePopupIsShown = false;\n\n\tpublic readonly bone = input.required<Bone>();\n\tpublic readonly locale = input.required<string>();\n\tpublic readonly device = input(DeviceType.NotSet);\n\tpublic readonly map = input.required<BoneEditorMap>();\n\n\tprivate boneEditorRef?: ComponentRef<IBoneEditor<Bone>>;\n\tprivate removeSubscription?: Unsubscribable;\n\tprivate saveSubscription?: Unsubscribable;\n\tprivate changedSubscription?: Unsubscribable;\n\n\tprivate readonly viewReady = signal(false);\n\n\tconstructor() {\n\t\tafterNextRender(() => this.viewReady.set(true));\n\n\t\teffect(() => {\n\t\t\tif (!this.viewReady()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newBone = this.bone();\n\t\t\tconst editorMap = this.map();\n\n\t\t\tif (this.removeSubscription) {\n\t\t\t\tthis.removeSubscription.unsubscribe();\n\t\t\t\tthis.removeSubscription = undefined;\n\t\t\t}\n\t\t\tif (this.saveSubscription) {\n\t\t\t\tthis.saveSubscription.unsubscribe();\n\t\t\t\tthis.saveSubscription = undefined;\n\t\t\t}\n\t\t\tif (this.changedSubscription) {\n\t\t\t\tthis.changedSubscription.unsubscribe();\n\t\t\t\tthis.changedSubscription = undefined;\n\t\t\t}\n\n\t\t\tconst viewContainerRef = this.anchor().viewContainerRef;\n\t\t\tviewContainerRef.clear();\n\n\t\t\tconst componentType = editorMap.get(newBone.type) ?? UnknownBoneEditorComponent;\n\t\t\tthis.boneEditorRef = viewContainerRef.createComponent(componentType);\n\n\t\t\tthis.editor = this.boneEditorRef.instance;\n\n\t\t\tthis.boneEditorRef.setInput(\"boneEtalon\", newBone);\n\t\t\tthis.boneEditorRef.setInput(\"locale\", this.locale());\n\t\t\tthis.boneEditorRef.setInput(\"device\", this.device());\n\n\t\t\tthis.removeSubscription = this.editor.removed.subscribe(() => {\n\t\t\t\tthis.removed.emit();\n\t\t\t});\n\t\t\tthis.changedSubscription = this.editor.editing.subscribe((isEditing: boolean) =>\n\t\t\t\tthis.editing.emit(isEditing),\n\t\t\t);\n\t\t\tthis.saveSubscription = this.editor.saved.subscribe((newBoneValue: Bone) =>\n\t\t\t\tthis.saved.emit(newBoneValue),\n\t\t\t);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst locale = this.locale();\n\t\t\tconst device = this.device();\n\t\t\tif (this.boneEditorRef) {\n\t\t\t\tthis.boneEditorRef.setInput(\"locale\", locale);\n\t\t\t\tthis.boneEditorRef.setInput(\"device\", device);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic nextPreset = (): void => {\n\t\tif (this.editor === undefined || this.editor === null) return;\n\n\t\tthis.editor.nextPreset();\n\t};\n\n\t// todo: add or remove visibility feature\n\n\t// public setDisabled = (disabled: boolean): void => {\n\t// if (this.editor === undefined || this.editor === null)\n\t// return;\n\n\t// this.editor.startEditing();\n\n\t// if (this.device === DeviceType.Desktop)\n\t// this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Desktop, !disabled);\n\t// else if (this.device === DeviceType.Tablet)\n\t// this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Tablet, !disabled);\n\t// else if (this.device === DeviceType.Mobile)\n\t// this.editor.bone.visibility = setOrRemoveFlag(this.editor.bone.visibility, DeviceVisibility.Mobile, !disabled);\n\n\t// this.editor.updateDirty();\n\t// }\n\n // todo: use this feature\n // its not working now\n\tpublic get disabled(): boolean {\n\t\tif (this.editor === undefined || this.editor === null) {\n\t\t\tconsole.warn(\"editor should have been set before disabled is called\");\n\t\t\treturn false;\n\t\t}\n\n\t\treturn false;\n\t\t// todo: add or remove visibility feature\n\t\t// const visibility = this.editor.bone.visibility;\n\n\t\t// if (this.device === DeviceType.Desktop && hasFlag(visibility, DeviceVisibility.Desktop))\n\t\t// return false;\n\n\t\t// if (this.device === DeviceType.Tablet && hasFlag(visibility, DeviceVisibility.Tablet))\n\t\t// return false;\n\n\t\t// if (this.device === DeviceType.Mobile && hasFlag(visibility, DeviceVisibility.Mobile))\n\t\t// return false;\n\n\t\t// return true;\n\t}\n}\n","@if (editor) {\n <div 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 @if (editor.currentPreset() && !editor.noPresets()) {\n <a (click)=\"nextPreset()\" class=\"preset\">style:<br />{{editor.currentPreset()?.title}}</a>\n }\n </div>\n}@else {\n EDITOR COMPONENTS IS NOT DEFINED\n}\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@if (editor) {\n <div [class.active]=\"editor.isEditing() || editor.isDirty()\" class=\"right bar\">\n <!-- <a *ngIf=\"!editor.isEditing\" (click)=\"editor.remove()\" class=\"delete\">!!! remove</a> -->\n @if (editor.isDirty()) {\n <a (click)=\"editor.resetData()\" class=\"reset\">reset</a>\n <a (click)=\"editor.save()\" class=\"save\">apply</a>\n } @else if (editor.isEditing()) {\n <a (click)=\"editor.finishEditing()\" class=\"close\">close</a>\n }\n </div>\n}\n","import type { Bone } from \"@candy-kingdom/bonnie\";\n\nexport interface ContentPreset<out TBone extends Bone> {\n\ttitle: string;\n\tisActive(data: TBone): boolean;\n\tclean(data: TBone): void;\n\ttransformer(bone: TBone): void;\n}\n\nexport function createPreset<TBone extends Bone>(params: {\n\ttitle: string;\n\tstyle: string;\n}): ContentPreset<TBone> {\n\treturn {\n\t\ttitle: params.title,\n\t\tisActive: (x) => x.style === params.style,\n\t\ttransformer: (bone) => (bone.style = params.style),\n\t\tclean: (bone) => (bone.style = params.style),\n\t};\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, effect, inject, input, viewChildren } from \"@angular/core\";\n\nimport type { Bone } from \"@candy-kingdom/bonnie\";\n\nimport { DeviceType } from \"../core\";\nimport { EditableDirective } from \"../core-components/editable.directive\";\nimport type { BoneEditorMap } from \"./BoneEditorMap\";\nimport { BoneEditorContainerComponent } from \"./bone-editor-container/bone-editor-container.component\";\nimport type { IBoneTemplate } from \"./IBoneTemplate\";\n\n@Component({\n\tselector: \"bonc-skeleton-editor\",\n\n\timports: [NgTemplateOutlet, BoneEditorContainerComponent],\n\ttemplateUrl: \"./skeleton-editor.component.html\",\n\tstyleUrl: \"./skeleton-editor.component.scss\",\n\thostDirectives: [EditableDirective],\n})\nexport class SkeletonEditorComponent {\n\tpublic readonly boneEditorContainerList =\n\t\tviewChildren<BoneEditorContainerComponent>(\"boneEditorContainer\");\n\n\tpublic readonly locale = input.required<string>();\n\n\tpublic readonly device = input(DeviceType.NotSet);\n\n\tpublic readonly map = input.required<BoneEditorMap>();\n\n\tpublic readonly templates = input.required<ReadonlyArray<IBoneTemplate>>();\n\n\tpublic readonly templatesAreShown: boolean[] = [];\n\n\tpublic readonly editable = inject(EditableDirective<Bone[]>, { host: true });\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.map();\n\t\t\tthis.templates();\n\t\t\tthis.templatesAreShown.splice(0, this.templatesAreShown.length);\n\t\t\tconst bones = this.editable.value ?? [];\n\n\t\t\tif (bones === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tbones.forEach(() => this.templatesAreShown.push(false));\n\t\t\tthis.templatesAreShown.push(false);\n\t\t});\n\n\t\tthis.editable.externalSaveCall.subscribe(() => {\n\t\t\tthis.boneEditorContainerList().forEach((editorContainer) => editorContainer.editor?.save());\n\n\t\t\tthis.editable.save();\n\t\t});\n\n\t\tthis.editable.canceled.subscribe(() => {\n\t\t\tthis.boneEditorContainerList().forEach((editorContainer) =>\n\t\t\t\teditorContainer.editor?.resetData(),\n\t\t\t);\n\n\t\t\tthis.editable.save();\n\t\t});\n\t}\n\n\tpublic get bones(): Bone[] {\n\t\treturn this.editable?.value ?? [];\n\t}\n\n\tpublic boneEditHandler(isEditing: boolean): void {\n\t\tif (isEditing) this.editable.startEditing();\n\t\telse {\n\t\t\tconst allClosed =\n\t\t\t\tthis.boneEditorContainerList().filter((x) => x.editor?.isEditing).length === 0;\n\n\t\t\tthis.editable.updateDirty();\n\n\t\t\tif (!this.editable.isDirty() && allClosed) this.editable.close();\n\t\t}\n\t}\n\n\tpublic boneChangeHandler(index: number, newBoneValue: Bone): void {\n\t\tif (Array.isArray(this.editable.value)) {\n\t\t\tthis.editable.value[index] = newBoneValue;\n\t\t}\n\n\t\tthis.editable.save();\n\t}\n\n\tpublic removeBone(boneIndex: number): void {\n\t\tif (this.bones === undefined || this.bones === null) return;\n\n\t\tif (!confirm(\"Вы уверены, что хотите удалить компонент?\")) return;\n\n\t\tthis.bones.splice(boneIndex, 1);\n\n\t\tif (!this.editable.inEditMode()) this.editable.startEditing();\n\n\t\tthis.editable.save();\n\t}\n\n\tpublic moveDown(boneIndex: number): void {\n\t\tif (boneIndex >= this.bones.length - 1) return;\n\n\t\tthis.swapBones(boneIndex, boneIndex + 1);\n\t}\n\n\tpublic moveUp(boneIndex: number): void {\n\t\tif (boneIndex <= 0) return;\n\n\t\tthis.swapBones(boneIndex - 1, boneIndex);\n\t}\n\n\tpublic createBone(index: number, selectedTemplate: IBoneTemplate): void {\n\t\tconst newBone = selectedTemplate.boneFactory();\n\n\t\tthis.bones.splice(index, 0, newBone);\n\t}\n\n\tprivate swapBones(index1: number, index2: number): void {\n\t\tif (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)\n\t\t\tthrow new Error(\n\t\t\t\t`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`,\n\t\t\t);\n\n\t\tconst tempBone = this.bones[index1];\n\t\tthis.bones[index1] = this.bones[index2];\n\t\tthis.bones[index2] = tempBone;\n\t}\n}\n","<ng-template #controls let-index='index'>\n <div [class.appearable]=\"index > 0 && index < bones.length\" class=\"controls\">\n @if (index < bones.length) {\n <div class=\"up-down\">\n @if (index > 0) {\n <a (click)=\"moveDown(index - 1)\" class=\"down\">move down</a>\n <a (click)=\"moveUp(index)\" class=\"up\">move up</a>\n }\n </div>\n }\n <a (click)=\"templatesAreShown[index] = true\" class=\"add\">create</a>\n @if (index < bones.length) {\n <a (click)=\"removeBone(index)\" class=\"remove\">remove</a>\n }\n </div>\n\n @if (templatesAreShown[index]) {\n <div class=\"templates\">\n @for (template of templates(); track template.title) {\n <a (click)=\"templatesAreShown[index] = false; createBone(index,template);\">{{template.title}}</a>\n }\n <a (click)=\"templatesAreShown[index] = false\">Close</a>\n </div>\n }\n</ng-template>\n\n<!-- todo: add trackby -->\n@for (bone of bones; track $index) {\n <ng-container>\n <ng-container *ngTemplateOutlet=\"controls; context: {index: $index}\"></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($index)\"\n (editing)=\"boneEditHandler($event)\"\n (saved)=\"boneChangeHandler($index, $event)\">\n </bonc-bone-editor-container>\n}\n\n<ng-container *ngTemplateOutlet=\"controls; context: {index: bones.length}\"></ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EditableDirective"],"mappings":"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"}