@candy-kingdom/bonnie-cms 0.27.0 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,12 +38,15 @@ var TextEditorField;
38
38
  // tslint:disable-next-line: max-line-length
39
39
  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");
40
40
  function isLocalUrlString(url) {
41
- if (url === undefined || url === null || url.trim().length === 0)
41
+ if (url === undefined || url === null || url.trim().length === 0) {
42
42
  return true;
43
- if (url.startsWith("//"))
43
+ }
44
+ if (url.startsWith("//")) {
44
45
  return false;
45
- if (url.startsWith("./") || url.startsWith("/"))
46
+ }
47
+ if (url.startsWith("./") || url.startsWith("/")) {
46
48
  return true;
49
+ }
47
50
  return false;
48
51
  }
49
52
  function hasFlag(value, flag) {
@@ -139,8 +142,9 @@ class BoneEditorBaseComponent {
139
142
  this._isEditing.set(false);
140
143
  this.boneEtalon.set(JSON.parse(this._storedBoneJson));
141
144
  this.updatePresetByData();
142
- if (this.onReset !== undefined)
145
+ if (this.onReset !== undefined) {
143
146
  this.onReset();
147
+ }
144
148
  this.editing.emit(false);
145
149
  }
146
150
  updateDirty() {
@@ -153,8 +157,9 @@ class BoneEditorBaseComponent {
153
157
  this.removed.emit();
154
158
  }
155
159
  save() {
156
- if (!this.isDirty())
160
+ if (!this.isDirty()) {
157
161
  return;
162
+ }
158
163
  this._isDirty.set(false);
159
164
  this.finishEditing();
160
165
  this._storedBoneJson = JSON.stringify(this.bone());
@@ -171,10 +176,12 @@ class BoneEditorBaseComponent {
171
176
  this.editing.emit(true);
172
177
  }
173
178
  finishEditing() {
174
- if (this._isDirty())
179
+ if (this._isDirty()) {
175
180
  throw new Error("Нельзя закрывать редактирование когда есть изменения. Надо сохранить либо зарезетить.");
176
- if (this.onFinishEditing !== undefined)
181
+ }
182
+ if (this.onFinishEditing !== undefined) {
177
183
  this.onFinishEditing();
184
+ }
178
185
  this._isEditing.set(false);
179
186
  }
180
187
  nextPreset() {
@@ -186,8 +193,9 @@ class BoneEditorBaseComponent {
186
193
  newIndex = newIndex < 0 ? 0 : newIndex % this.presets().length;
187
194
  const currentPreset = this.currentPreset();
188
195
  const currentIndex = currentPreset === undefined ? -1 : this.presets().indexOf(currentPreset);
189
- if (currentIndex === newIndex)
196
+ if (currentIndex === newIndex) {
190
197
  return;
198
+ }
191
199
  const newPreset = this.presets()[newIndex];
192
200
  this._currentPreset.set(newPreset);
193
201
  newPreset.transformer(this.bone());
@@ -197,8 +205,9 @@ class BoneEditorBaseComponent {
197
205
  const countOfActive = this.presets()
198
206
  .map((p) => p.isActive(this.bone()))
199
207
  .filter((p) => p).length;
200
- if (countOfActive !== 1)
208
+ if (countOfActive !== 1) {
201
209
  throw new Error(`active preset count should be equal 1, but it was: ${countOfActive}. ${this.constructor.name}`);
210
+ }
202
211
  for (let i = 0; i < this.presets().length; i++) {
203
212
  const preset = this.presets()[i];
204
213
  if (preset.isActive(this.bone())) {
@@ -283,8 +292,9 @@ class EditableDirective {
283
292
  this.propagateChange(newUnqieNotEmptyData);
284
293
  }
285
294
  patchSave(propName, newDataParts) {
286
- if (this._originalValue === undefined || this._originalValue === null)
295
+ if (this._originalValue === undefined || this._originalValue === null) {
287
296
  return;
297
+ }
288
298
  if (typeof this._originalValue !== "object") {
289
299
  console.warn("patch save called on not object type");
290
300
  return;
@@ -292,14 +302,16 @@ class EditableDirective {
292
302
  this._originalValue[propName] = newDataParts;
293
303
  this.setOriginal(this._originalValue);
294
304
  this.updateDirty();
295
- if (!this.isDirty())
305
+ if (!this.isDirty()) {
296
306
  this.close();
307
+ }
297
308
  }
298
309
  // change model without opening or closing the editor
299
310
  silentPatch(dict) {
300
311
  for (const key in dict) {
301
- if (!Object.hasOwn(dict, key))
312
+ if (!Object.hasOwn(dict, key)) {
302
313
  continue;
314
+ }
303
315
  const propVal = dict[key];
304
316
  if (this._value !== undefined && this._value !== null) {
305
317
  this._value[key] = propVal;
@@ -311,8 +323,9 @@ class EditableDirective {
311
323
  this._storedData = JSON.stringify(this._originalValue);
312
324
  }
313
325
  cancel() {
314
- if (!this.inEditMode())
326
+ if (!this.inEditMode()) {
315
327
  return;
328
+ }
316
329
  this.finishEditing();
317
330
  // reset value
318
331
  this.setValue(this._originalValue);
@@ -322,8 +335,9 @@ class EditableDirective {
322
335
  this.finishEditing();
323
336
  }
324
337
  finishEditing() {
325
- if (!this.inEditMode())
338
+ if (!this.inEditMode()) {
326
339
  return;
340
+ }
327
341
  this._inEditMode.set(false);
328
342
  this.editModeChange.emit(false);
329
343
  }
@@ -429,8 +443,9 @@ class EditableGroupComponent {
429
443
  }
430
444
  updateEditMode() {
431
445
  const newEditMode = this.editables().filter((x) => x.inEditMode()).length > 0;
432
- if (newEditMode === this.inEditMode())
446
+ if (newEditMode === this.inEditMode()) {
433
447
  return;
448
+ }
434
449
  this.inEditMode.set(newEditMode);
435
450
  this.editModeChange.emit(newEditMode);
436
451
  }
@@ -583,8 +598,9 @@ class FileUploaderComponent {
583
598
  sanitizer = inject(DomSanitizer);
584
599
  http = inject(HttpClient);
585
600
  onFileSelect(fileInput) {
586
- if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)
601
+ if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1) {
587
602
  return;
603
+ }
588
604
  const file = fileInput.files[0];
589
605
  const uploadUrl = this.uploadUrlMap().get(file.type) ?? this.uploadUrlMap().get("");
590
606
  if (uploadUrl === undefined || uploadUrl === null) {
@@ -610,8 +626,9 @@ class FileUploaderComponent {
610
626
  });
611
627
  }
612
628
  selectFile(event) {
613
- if (event.target === this.fileInput().nativeElement)
629
+ if (event.target === this.fileInput().nativeElement) {
614
630
  return;
631
+ }
615
632
  this.fileInput().nativeElement.click();
616
633
  }
617
634
  getEventMessage(event) {
@@ -624,7 +641,7 @@ class FileUploaderComponent {
624
641
  break;
625
642
  case HttpEventType.Response:
626
643
  if (event.body === null || event.body === undefined) {
627
- console.warn(`empty body from uploader`);
644
+ console.warn("empty body from uploader");
628
645
  break;
629
646
  }
630
647
  this.srcChange.emit(event.body);
@@ -634,7 +651,7 @@ class FileUploaderComponent {
634
651
  }
635
652
  }
636
653
  updateClip() {
637
- this.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`));
654
+ this.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle("inset(0px 100% 0px 0%)"));
638
655
  }
639
656
  handleError(file) {
640
657
  const func = (error, p2) => {
@@ -977,8 +994,9 @@ class MediaUploaderComponent {
977
994
  sanitizer = inject(DomSanitizer);
978
995
  http = inject(HttpClient);
979
996
  onFileSelect(fileInput) {
980
- if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1)
997
+ if (fileInput.files === undefined || fileInput.files === null || fileInput.files.length !== 1) {
981
998
  return;
999
+ }
982
1000
  const file = fileInput.files[0];
983
1001
  let uploadingMediaType;
984
1002
  const uploadType = this.uploadType();
@@ -1020,8 +1038,9 @@ class MediaUploaderComponent {
1020
1038
  });
1021
1039
  }
1022
1040
  selectFile(event) {
1023
- if (event.target === this.fileInput().nativeElement)
1041
+ if (event.target === this.fileInput().nativeElement) {
1024
1042
  return;
1043
+ }
1025
1044
  this.fileInput().nativeElement.click();
1026
1045
  }
1027
1046
  getEventMessage(event) {
@@ -1051,7 +1070,7 @@ class MediaUploaderComponent {
1051
1070
  }
1052
1071
  }
1053
1072
  updateClip() {
1054
- this.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle(`inset(0px 100% 0px 0%)`));
1073
+ this.clipStyle.set(this.sanitizer.bypassSecurityTrustStyle("inset(0px 100% 0px 0%)"));
1055
1074
  }
1056
1075
  handleError(file) {
1057
1076
  const func = (error, p2) => {
@@ -1115,7 +1134,7 @@ class DataService {
1115
1134
  }
1116
1135
  getSettings(ids) {
1117
1136
  const pageOb = this.http.get(`${this.baseHref}api/settings`, {
1118
- params: { ids: ids },
1137
+ params: { ids },
1119
1138
  });
1120
1139
  return pageOb;
1121
1140
  }
@@ -1148,11 +1167,13 @@ class DataService {
1148
1167
  for (const bone of x.page.bones) {
1149
1168
  if (!("dataRoute" in bone) ||
1150
1169
  typeof bone.dataRoute !== "string" ||
1151
- bone.dataRoute.length === 0)
1170
+ bone.dataRoute.length === 0) {
1152
1171
  continue;
1172
+ }
1153
1173
  const data = x.data[bone.dataRoute];
1154
- if (data === undefined || data === null)
1174
+ if (data === undefined || data === null) {
1155
1175
  throw new Error(`Data ${bone.dataRoute} have not been preloaded`);
1176
+ }
1156
1177
  bone.data = data; // todo: fix
1157
1178
  }
1158
1179
  return x.page;
@@ -1239,8 +1260,9 @@ class BoneEditorContainerComponent {
1239
1260
  });
1240
1261
  }
1241
1262
  nextPreset = () => {
1242
- if (this.editor === undefined || this.editor === null)
1263
+ if (this.editor === undefined || this.editor === null) {
1243
1264
  return;
1265
+ }
1244
1266
  this.editor.nextPreset();
1245
1267
  };
1246
1268
  // todo: add or remove visibility feature
@@ -1324,13 +1346,15 @@ class SkeletonEditorComponent {
1324
1346
  return this.editable?.value ?? [];
1325
1347
  }
1326
1348
  boneEditHandler(isEditing) {
1327
- if (isEditing)
1349
+ if (isEditing) {
1328
1350
  this.editable.startEditing();
1351
+ }
1329
1352
  else {
1330
1353
  const allClosed = this.boneEditorContainerList().filter((x) => x.editor?.isEditing).length === 0;
1331
1354
  this.editable.updateDirty();
1332
- if (!this.editable.isDirty() && allClosed)
1355
+ if (!this.editable.isDirty() && allClosed) {
1333
1356
  this.editable.close();
1357
+ }
1334
1358
  }
1335
1359
  }
1336
1360
  boneChangeHandler(index, newBoneValue) {
@@ -1340,23 +1364,28 @@ class SkeletonEditorComponent {
1340
1364
  this.editable.save();
1341
1365
  }
1342
1366
  removeBone(boneIndex) {
1343
- if (this.bones === undefined || this.bones === null)
1367
+ if (this.bones === undefined || this.bones === null) {
1344
1368
  return;
1345
- if (!confirm("Вы уверены, что хотите удалить компонент?"))
1369
+ }
1370
+ if (!confirm("Вы уверены, что хотите удалить компонент?")) {
1346
1371
  return;
1372
+ }
1347
1373
  this.bones.splice(boneIndex, 1);
1348
- if (!this.editable.inEditMode())
1374
+ if (!this.editable.inEditMode()) {
1349
1375
  this.editable.startEditing();
1376
+ }
1350
1377
  this.editable.save();
1351
1378
  }
1352
1379
  moveDown(boneIndex) {
1353
- if (boneIndex >= this.bones.length - 1)
1380
+ if (boneIndex >= this.bones.length - 1) {
1354
1381
  return;
1382
+ }
1355
1383
  this.swapBones(boneIndex, boneIndex + 1);
1356
1384
  }
1357
1385
  moveUp(boneIndex) {
1358
- if (boneIndex <= 0)
1386
+ if (boneIndex <= 0) {
1359
1387
  return;
1388
+ }
1360
1389
  this.swapBones(boneIndex - 1, boneIndex);
1361
1390
  }
1362
1391
  createBone(index, selectedTemplate) {
@@ -1364,8 +1393,9 @@ class SkeletonEditorComponent {
1364
1393
  this.bones.splice(index, 0, newBone);
1365
1394
  }
1366
1395
  swapBones(index1, index2) {
1367
- if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length)
1396
+ if (index1 < 0 || index2 < 0 || index1 >= this.bones.length || index2 >= this.bones.length) {
1368
1397
  throw new Error(`ошибка swapBones. неправильные индексы ${index1} и ${index2}. bone count: ${this.bones.length}`);
1398
+ }
1369
1399
  const tempBone = this.bones[index1];
1370
1400
  this.bones[index1] = this.bones[index2];
1371
1401
  this.bones[index2] = tempBone;
@@ -1 +1 @@
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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"}
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) {\n\t\treturn true;\n\t}\n\n\tif (url.startsWith(\"//\")) {\n\t\treturn false;\n\t}\n\n\tif (url.startsWith(\"./\") || url.startsWith(\"/\")) {\n\t\treturn true;\n\t}\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) {\n\t\t\tthis.onReset();\n\t\t}\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()) {\n\t\t\treturn;\n\t\t}\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\t\t}\n\n\t\tif (this.onFinishEditing !== undefined) {\n\t\t\tthis.onFinishEditing();\n\t\t}\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 readonly 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) {\n\t\t\treturn;\n\t\t}\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 readonly 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\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) {\n\t\t\treturn;\n\t\t}\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()) {\n\t\t\tthis.close();\n\t\t}\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)) {\n\t\t\t\tcontinue;\n\t\t\t}\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()) {\n\t\t\treturn;\n\t\t}\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()) {\n\t\t\treturn;\n\t\t}\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()) {\n\t\t\treturn;\n\t\t}\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\t\t}\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) {\n\t\t\treturn;\n\t\t}\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\t\t}\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) {\n\t\t\treturn;\n\t\t}\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\ninterface DataDictionary {\n\t[n: string]: Observable<unknown>;\n}\n\nexport interface SettingDataDict {\n\t[id: string]: SettingData;\n}\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 },\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\t\t\t\t\t}\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\t\t\t\t\t}\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) {\n\t\t\treturn;\n\t\t}\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\t// todo: use this feature\n\t// 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<readonly 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) {\n\t\t\tthis.editable.startEditing();\n\t\t} else {\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) {\n\t\t\t\tthis.editable.close();\n\t\t\t}\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) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!confirm(\"Вы уверены, что хотите удалить компонент?\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.bones.splice(boneIndex, 1);\n\n\t\tif (!this.editable.inEditMode()) {\n\t\t\tthis.editable.startEditing();\n\t\t}\n\n\t\tthis.editable.save();\n\t}\n\n\tpublic moveDown(boneIndex: number): void {\n\t\tif (boneIndex >= this.bones.length - 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.swapBones(boneIndex, boneIndex + 1);\n\t}\n\n\tpublic moveUp(boneIndex: number): void {\n\t\tif (boneIndex <= 0) {\n\t\t\treturn;\n\t\t}\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\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":";;;;;;;;;;;;;IAAY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACZ,CAAC,EALW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;ICAV;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC3B,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAA+B;AAChC,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ICAhB;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,eAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACb,CAAC,EAJW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACA3B;AACO,MAAM,cAAc,GAAG,IAAI,MAAM,CACvC,yTAAyT,EACzT,GAAG;AAGE,SAAU,gBAAgB,CAAC,GAAW,EAAA;AAC3C,IAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACjE,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,OAAO,KAAK;IACb;AAEA,IAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChD,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,OAAO,KAAK;AACb;AAEM,SAAU,OAAO,CAAmB,KAAQ,EAAE,IAAO,EAAA;AAC1D,IAAA,OAAO,CAAC,KAAK,GAAG,IAAI,MAAM,IAAI;AAC/B;SAEgB,eAAe,CAAmB,KAAQ,EAAE,IAAO,EAAE,OAAgB,EAAA;AACpF,IAAA,QAAQ,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI;AAC/C;;MCjBa,sBAAsB,CAAA;IAClB,UAAU,GAAG,UAAU;AAEvB,IAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,wDAA0B;AAExD,IAAA,cAAc,GAAG,KAAK,CAAC,KAAK,0DAAC;IAEtC,MAAM,GAAG,IAAI;AACb,IAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;IAEhC,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAClD;IAEO,YAAY,GAAA;AAClB,QAAA,QAAQ,IAAI,CAAC,MAAM;YAClB,KAAK,UAAU,CAAC,OAAO;AACtB,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;gBAC/B;YAED,KAAK,UAAU,CAAC,MAAM;AACrB,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;gBAC/B;YAED,KAAK,UAAU,CAAC,MAAM;AACrB,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO;gBAChC;AAED,YAAA;AACC,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO;gBAChC;;IAEH;uGAhCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6XCXnC,6qBAkBA,EAAA,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA,CAAA;;2FDPa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACC,qBAAqB,EAAA,QAAA,EAAA,6qBAAA,EAAA,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA;;;MEYV,uBAAuB,CAAA;IAC5B,OAAO,GAAG,MAAM,EAAW;IAC3B,KAAK,GAAG,MAAM,EAAQ;IACtB,OAAO,GAAG,MAAM,EAAQ;AAExB,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAS;AAEpC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;AACjC,IAAA,MAAM,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,kDAAC;AAE5C,IAAA,QAAQ,GAAG,MAAM,CAAyB,EAAE,oDAAC;AAC9C,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAEnC,IAAA,cAAc,GAAG,MAAM,CAAmC,SAAS,0DAAC;AACrE,IAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAE/C,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACzB,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAEnC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC3B,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAExC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,qDAAC;;;AAIpD,IAAA,IAAI,GAAG,MAAM,CAAQ,SAAU,gDAAC;IAE3C,eAAe,GAAG,EAAE;AAO5B,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/C,IAAI,CAAC,kBAAkB,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAEjC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC;AACZ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,QAAQ,EAAE,MAAM,IAAI;AACpB,gBAAA,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI;AAC3B,gBAAA,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI;AACrB,aAAA,CAAC;QACH;;AAGA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3B;AAEA,IAAA,IAAiC,QAAQ,GAAA;QACxC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,MAAM;IAC3C;AAEA,IAAA,IAAiC,QAAQ,GAAA;QACxC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,MAAM;IAC3C;AAEA,IAAA,IAAkC,SAAS,GAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,OAAO;IAC5C;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,OAAO,EAAE;QACf;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC;IACxE;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEO,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpB;QACD;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAExB,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAElD,MAAM,UAAU,GAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAC5B;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB;QACD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CACd,uFAAuF,CACvF;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,eAAe,EAAE;QACvB;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,MAAM,QAAQ,GAAG,aAAa,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAE5F,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IAClC;AAEiB,IAAA,kBAAkB,GAAG,CAAC,QAAgB,KAAU;AAChE,QAAA,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AAE9D,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAE1C,MAAM,YAAY,GAAG,aAAa,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7F,QAAA,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC9B;QACD;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AAE1C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,EAAE;AACnB,IAAA,CAAC;IAEgB,kBAAkB,GAAG,MAAW;AAChD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO;AAChC,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAClC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;AAEzB,QAAA,IAAI,aAAa,KAAK,CAAC,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CACd,CAAA,mDAAA,EAAsD,aAAa,CAAA,EAAA,EAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAC/F;QACF;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAEhC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC1B;YACD;QACD;AACD,IAAA,CAAC;uGArLoB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mrBADtB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FACH,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;;sBA4DzB,WAAW;uBAAC,cAAc;;sBAI1B,WAAW;uBAAC,cAAc;;sBAI1B,WAAW;uBAAC,eAAe;;;ACtEvB,MAAO,0BAA2B,SAAQ,uBAA6B,CAAA;IACrE,eAAe,GAAA;;IAEtB;IACO,OAAO,GAAA;;IAEd;IAEU,UAAU,GAAA;AACnB,QAAA,OAAO,EAAE;IACV;uGAVY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfvC,yFAEA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDSW,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;2FAIN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACC,0BAA0B,EAAA,OAAA,EAE3B,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,yFAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;;;MEFP,iBAAiB,CAAA;IACb,KAAK,GAAG,MAAM,EAAK;IACnB,cAAc,GAAG,MAAM,EAAW;IAClC,gBAAgB,GAAG,MAAM,EAAQ;IACjC,QAAQ,GAAG,MAAM,EAAQ;IACzB,WAAW,GAAG,MAAM,EAAiB;;AAG7C,IAAA,eAAe,GAA0B,MAAK,EAAE,CAAC;AAExC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC5B,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAEzC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACzB,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAE5C,IAAA,MAAM;AACN,IAAA,cAAc;AACd,IAAA,WAAW;IAEZ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC7B;IAEO,YAAY,GAAG,MAAW;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;YAClB;QACD;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAA,CAAC;AAEM,IAAA,IAAI,CAAC,OAAW,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC;QAEA,IAAI,CAAC,aAAa,EAAE;QAEpB,MAAM,oBAAoB,GACzB,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,KAAK;AACrC,cAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;cACrC,OAAO;AAEX,QAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAErC,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;IAC3C;IAEO,SAAS,CAAC,QAAiB,EAAE,YAAwB,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YACtE;QACD;AAEA,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AAC5C,YAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC;YACpD;QACD;AAEC,QAAA,IAAI,CAAC,cAAsB,CAAC,QAAQ,CAAC,GAAG,YAAY;AAErD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAErC,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE;QACb;IACD;;AAIO,IAAA,WAAW,CAAC,IAAgB,EAAA;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;gBAC9B;YACD;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;AAEzB,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACtD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAc;YAClC;AAEA,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AACtE,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,OAAc;YAC1C;QACD;QACA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;IACvD;IAEO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACvB;QACD;QAEA,IAAI,CAAC,aAAa,EAAE;;AAGpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AAElC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;IAEO,KAAK,GAAA;QACX,IAAI,CAAC,aAAa,EAAE;IACrB;IAEQ,aAAa,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACvB;QACD;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEQ,IAAA,QAAQ,CAAC,QAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM;AACV,YAAA,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK;AACjC,kBAAE;AACF,kBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC;IAEA,IAAW,KAAK,CAAC,QAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACxB;AAEA,IAAA,IAAW,KAAK,GAAA;QACf,OAAO,IAAI,CAAC,MAAM;IACnB;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;IACpE;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEQ,IAAA,WAAW,CAAC,gBAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACpD;;AAIA,IAAA,UAAU,CAAC,QAAW,EAAA;QACrB,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAExB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACxB;IAEA,gBAAgB,GAAA;;IAEhB;AAEA,IAAA,gBAAgB,CAAC,iCAAwD,EAAA;AACxE,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,QAAW,KAAU;YAC5C,iCAAiC,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC;IACF;IAEA,iBAAiB,GAAA;;IAEjB;uGAhLY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAJlB;AACV,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEW,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACV,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,qBAAA;AACD,iBAAA;;;MCWY,sBAAsB,CAAA;IAClB,cAAc,GAAG,MAAM,EAAW;IAClC,KAAK,GAAG,MAAM,EAAQ;IACtB,kBAAkB,GAAG,MAAM,EAAW;IAEtC,SAAS,GAAG,eAAe,CAAC,iBAAiB,sDAAI,WAAW,EAAE,IAAI,EAAA,CAAG;IAEpE,cAAc,GAAqB,EAAE;AACtC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAEzB,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEpD,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC5B,aAAA,YAAY;aACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE;AAC5C,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;YACjC,gBAAgB,CAAC,WAAW,EAAE;YAC9B,IAAI,CAAC,kBAAkB,EAAE;AAC1B,QAAA,CAAC,CAAC;IACH;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C;IAEO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3C;IAEQ,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IAC1D;IAEQ,mBAAmB,GAAA;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACvB,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAChD,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACjE;AACF,QAAA,CAAC,CAAC;IACH;IAEQ,MAAM,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IACzB;IAEQ,cAAc,GAAA;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;AAE7E,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE;YACtC;QACD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;IACtC;uGAtEY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAKU,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPnD,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEzB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,iBAAA;AAM4C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCjB/D,iBAAiB,CAAA;IAC5B,IAAI,GAAG,EAAE;AAEH,IAAA,QAAQ,GAAG,MAAM,EAAC,iBAAwB,GAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE3D,IAAA,MAAM,GAAG,KAAK,CAAC,EAAE,kDAAC;uGALb,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+MAF5B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAES,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,EAAE;AACZ,iBAAA;;;MCQY,yBAAyB,CAAA;AACrB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAmB;AACxC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;AAEjC,IAAA,MAAM,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,kDAAC;IAE7C,YAAY,GAAG,MAAM,EAAQ;IAC7B,OAAO,GAAG,MAAM,EAAQ;IACxB,OAAO,GAAG,MAAM,EAAQ;IAEjC,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IACzB;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;uGApBY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdtC,yIAIA,EAAA,MAAA,EAAA,CAAA,kvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMW,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIT,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACC,wBAAwB,EAAA,OAAA,EAEzB,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,yIAAA,EAAA,MAAA,EAAA,CAAA,kvBAAA,CAAA,EAAA;;;MEKV,4BAA4B,CAAA;AACxB,IAAA,YAAY,GAAG,YAAY,CAAC,mBAAmB,wDAAC;AAEhD,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAmB;AACxC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;IAEjC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACzB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACzB,IAAA,MAAM,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,kDAAC;IAE7C,YAAY,GAAG,MAAM,EAAQ;IAC7B,OAAO,GAAG,MAAM,EAAQ;IACxB,OAAO,GAAG,MAAM,EAAQ;AAExC,IAAA,WAAA,GAAA;;AAEC,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACpB,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC;YAEzD,SAAS,CAAC,MAAK;gBACd,YAAY,CAAC,KAAK,CAAC;AACpB,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IACzB;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEQ,aAAa,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/D;uGA3CY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,0zBACI,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBhE,+SASA,EAAA,MAAA,EAAA,CAAA,gpBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEW,WAAW,+mBAAE,mBAAmB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI9B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+SAAA,EAAA,MAAA,EAAA,CAAA,gpBAAA,CAAA,EAAA;2HAKC,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEAnD,kBAAkB,CAAA;IACd,eAAe,GAAG,eAAe;IACjC,cAAc,GAAG,eAAe;IAEhC,UAAU,GAAG,MAAM,EAAmB;IAEtC,YAAY,GAAG,MAAM,EAAQ;IAE7B,OAAO,GAAG,MAAM,EAAQ;IAExB,OAAO,GAAG,MAAM,EAAQ;IAExB,IAAI,GAAG,MAAM,EAAQ;IAErB,MAAM,GAAG,MAAM,EAAQ;AAEvB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;IAEzC,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAEzB,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAmB;AAE7C,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAmB;IAEjD,YAAY,GAAG,KAAK;IAEpB,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IACzB;IAEO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACjB;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACnB;uGAlDY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,w8BChB/B,6wCAsCA,EAAA,MAAA,EAAA,CAAA,6/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BW,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,0JAAE,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIlE,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAElB,CAAC,WAAW,EAAE,yBAAyB,EAAE,4BAA4B,CAAC,EAAA,QAAA,EAAA,6wCAAA,EAAA,MAAA,EAAA,CAAA,6/BAAA,CAAA,EAAA;;;MEanE,qBAAqB,CAAA;AACjB,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA+B,WAAW,CAAC;IAEzE,SAAS,GAAG,MAAM,EAAqB;AAEvC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAA+B;IAE5D,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAiC;AAE5C,IAAA,WAAW,GAAG,KAAK,CAAW,EAAE,uDAAC;AAEjC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxD,IAAA,CAAC,wDAAC;AAEc,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,oDAAC;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAwB,SAAS,qDAAC;AAEnD,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAEnC,IAAA,YAAY,CAAC,SAA2B,EAAA;QAC9C,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9F;QACD;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAEnF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,CAAA,sCAAA,EAAyC,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;YACpE;QACD;AAEA,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AAEzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAE7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,UAAU,EAAE;QAEjB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC5D,YAAA,cAAc,EAAE,IAAI;AACpB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC;aACH,OAAO,CAAoB,OAAO;AAClC,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;;QAE3C,IAAI,EAAE;QACN,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAElC,SAAS,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,UAAU,CAAC,KAAY,EAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE;YACpD;QACD;QAEA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IACvC;AAEQ,IAAA,eAAe,CAAC,KAAmC,EAAA;AAC1D,QAAA,QAAQ,KAAK,CAAC,IAAI;YACjB,KAAK,aAAa,CAAC,IAAI;gBACtB;YAED,KAAK,aAAa,CAAC,cAAc;gBAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/E,IAAI,CAAC,UAAU,EAAE;gBACjB;YAED,KAAK,aAAa,CAAC,QAAQ;AAC1B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AACpD,oBAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC;oBACxC;gBACD;gBAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC/B;AAED,YAAA;gBACC;;IAEH;IAEQ,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;IACtF;AAEQ,IAAA,WAAW,CAAC,IAAU,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAuB,KAAyB;AAC7E,YAAA,MAAM,OAAO,GAAG,CAAA,oBAAA,EAAuB,IAAI,CAAC,IAAI,GAAG;YACnD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;YACjC,KAAK,CAAC,OAAO,CAAC;YACd,OAAO,IAAI,UAAU,EAAW;AACjC,QAAA,CAAC;AAED,QAAA,OAAO,IAAI;IACZ;uGA5GY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBlC,iwBAqBA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDAW,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;2FAIT,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACC,oBAAoB,EAAA,OAAA,EAErB,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,iwBAAA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA;uEAKuD,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEhB5E,qBAAqB,CAAA;AACjB,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAA0B;uGADvD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0NCVlC,yaAYA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,CAAA;;2FDFa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACC,oBAAoB,EAAA,QAAA,EAAA,yaAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA;;;AEYzB,MAAO,iBAAkB,SAAQ,iBAAoC,CAAA;AAC1D,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,sDAAY;AAExC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAuB;AAEjE,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAE5B,MAAM,MAAM,GAAG,OAA2B;AAE1C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC5B;uGAvBY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB9B,kjBAqBA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTW,qBAAqB,qFAAE,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK1C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACC,gBAAgB,EAAA,OAAA,EAEjB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,EAAA,cAAA,EAGvC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,kjBAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;;;AEI9B,MAAO,mBAAoB,SAAQ,iBAAoC,CAAA;IAC5D,cAAc,GAAG,kBAAkB;;AAG5C,IAAA,WAAW;AAEF,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAuB;AAEjE,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACzC,YAAA,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE;YACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;AAChE,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAE5B,MAAM,MAAM,GAAG,OAA2B;AAE1C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC5B;uGA/BY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8ZCnBhC,qjBAoBA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNW,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,uIAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK3D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;+BACC,kBAAkB,EAAA,OAAA,EAEnB,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,CAAC,EAAA,cAAA,EAGxD,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,4XAAA,CAAA,EAAA;;;AERpC,MAAM,qBAAqB,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;AAUnD,MAAO,qBAAsB,SAAQ,iBAAqC,CAAA;AAC/D,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,SAAS,GAAG,KAAK,CAAC,yBAAyB,qDAAC;AAE5C,IAAA,SAAS,GAAG,KAAK,CAAC,qBAAqB,qDAAC;AAExC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,CAAC,GAAG,IAAI,GAAG,EAAkB;QACnC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B,QAAA,OAAO,CAAC;AACT,IAAA,CAAC,qDAAC;AAEe,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IACnD;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAE5B,MAAM,MAAM,GAAG,OAA6B;AAE5C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC5B;uGAhCY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBlC,ijBAqBA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPW,qBAAqB,qFAAE,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK1C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACC,qBAAqB,EAAA,OAAA,EAEtB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,EAAA,cAAA,EAGvC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,ijBAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA;;;AEPpC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB;AAClD,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAA,QAAA,EAAW,GAAG,CAAA,kBAAA,CAAoB,CAAC;AAe3F,MAAO,gBAAiB,SAAQ,iBAAgC,CAAA;IACrD,SAAS,GAAG,gBAAgB;AAE5B,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,MAAM,GAAG,KAAK,CAAC,EAAE,kDAAC;AAElB,IAAA,gBAAgB,GAAG,QAAQ,CAC1C,MAAM,CAAA,gCAAA,EAAmC,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,4DACxD;AAED,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,QAAQ,CAAC,GAAoB,EAAA;QACnC,OAAO,GAAG,CAAC,GAAG;IACf;AAEO,IAAA,YAAY,CAAC,MAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAE5B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAA4B;QACxE;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC5B;uGA/BY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B7B,u0DAiDA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCE,qBAAqB,qFACrB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACR,qBAAqB;wBACrB,yBAAyB;wBACzB,4BAA4B;wBAC5B,qBAAqB;qBACrB,EAAA,cAAA,EAGe,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,u0DAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA;;;AEP9B,MAAO,gBAAiB,SAAQ,iBAAmC,CAAA;IACxD,OAAO,GAAG,eAAe;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,SAAS,GAAG,KAAK,CAAC,6BAA6B,qDAAC;AAEhD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,CAAC,GAAG,IAAI,GAAG,EAAkB;AACnC,QAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACrC,QAAA,OAAO,CAAC;AACT,IAAA,CAAC,qDAAC;AAEF,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,cAAc,CAAC,OAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAE5B,MAAM,MAAM,GAAG,OAA2B;AAE1C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC5B;uGA7BY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB7B,qmBAoBA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRW,qBAAqB,qFAAE,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK1C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;+BACC,eAAe,EAAA,OAAA,EAEhB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,EAAA,cAAA,EAGvC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,qmBAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA;;;IEfxB;AAAZ,CAAA,UAAY,cAAc,EAAA;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACd,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACgBpB,MAAO,iBAAkB,SAAQ,iBAAyB,CAAA;IAC/C,cAAc,GAAG,cAAc;AAE/B,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,gDAAC;AAEvD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;uGAbY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB9B,o0BAwBA,EAAA,MAAA,EAAA,CAAA,gYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbW,WAAW,+mBAAE,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKhC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACC,gBAAgB,EAAA,OAAA,EAEjB,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAA,cAAA,EAG7B,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,o0BAAA,EAAA,MAAA,EAAA,CAAA,gYAAA,CAAA,EAAA;;;AEI9B,MAAO,wBAAyB,SAAQ,iBAAkC,CAAA;IAC/D,eAAe,GAAG,eAAe;AAEjC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;IAEzC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAEnD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;uGAbY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,uZClBrC,soCA6BA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBW,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,0JAAE,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK5E,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACC,uBAAuB,EAAA,OAAA,EAExB,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,4BAA4B,CAAC,EAAA,cAAA,EAGzE,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,soCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEJ9B,MAAO,oBAAqB,SAAQ,iBAAyB,CAAA;AAClD,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjC,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QACP,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;uGARY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,4RCZjC,wFAEA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,CAAA;;2FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACC,mBAAmB,EAAA,cAAA,EAIb,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,wFAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;;AEVpC;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;;ACHH;;;AAGG;IAES;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,eAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,eAAA,CAAA,eAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACd,CAAC,EAHW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACL3B;;;AAGG;;ACiBH,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;AAClD,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC;AAEpC,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAE/C,MAAM,iBAAiB,GAAG,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,cAAc,EAAE;MASlD,sBAAsB,CAAA;IAClB,cAAc,GAAG,cAAc;AAE/B,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA+B,WAAW,CAAC;IAEzE,SAAS,GAAG,MAAM,EAAiB;AAEnC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAkC;IAE/D,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAE5B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;IAExC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAyB;AAE3C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,KAAK,OAAO;AACX,gBAAA,OAAO,cAAc;AACtB,YAAA,KAAK,OAAO;AACX,gBAAA,OAAO,cAAc;AACtB,YAAA;AACC,gBAAA,OAAO,iBAAiB;;AAE3B,IAAA,CAAC,wDAAC;AAEc,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,oDAAC;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAwB,SAAS,qDAAC;AAEnD,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAEnC,IAAA,YAAY,CAAC,SAA2B,EAAA;QAC9C,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9F;QACD;QAEA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAI,kBAA6B;AAEjC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QAEpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;YACpD,kBAAkB,GAAG,UAAU;QAChC;aAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,kBAAkB,GAAG,OAAO;QAC7B;aAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,kBAAkB,GAAG,OAAO;QAC7B;aAAO;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;YAC/D;QACD;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAE7D,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;AAClD,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,kBAAkB,CAAA,CAAE,CAAC;YAC3E;QACD;AAEA,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AAEzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA,CAAE,CAAC;AAErD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,UAAU,EAAE;QAEjB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC5D,YAAA,cAAc,EAAE,IAAI;AACpB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC;aACH,OAAO,CAAgB,OAAO;AAC9B,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;;QAE3C,IAAI,EAAE;QACN,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAElC,SAAS,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,UAAU,CAAC,KAAY,EAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE;YACpD;QACD;QAEA,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IACvC;AAEQ,IAAA,eAAe,CAAC,KAA+B,EAAA;AACtD,QAAA,QAAQ,KAAK,CAAC,IAAI;YACjB,KAAK,aAAa,CAAC,IAAI;gBACtB;YAED,KAAK,aAAa,CAAC,cAAc;gBAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/E,IAAI,CAAC,UAAU,EAAE;gBACjB;YAED,KAAK,aAAa,CAAC,QAAQ;AAC1B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACpD,oBAAA,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC;gBACzE;qBAAO;;;AAGN,oBAAA,MAAM,QAAQ,GAAG;AAChB,wBAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;wBACtB,GAAI,KAAK,CAAC,IAAY;qBACtB;AAED,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC9B;gBACA;AAED,YAAA;gBACC;;IAEH;IAEQ,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;IACtF;AAEQ,IAAA,WAAW,CAAC,IAAU,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAuB,KAAyB;AAC7E,YAAA,MAAM,OAAO,GAAG,CAAA,oBAAA,EAAuB,IAAI,CAAC,IAAI,GAAG;YACnD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;YACjC,KAAK,CAAC,OAAO,CAAC;YACd,OAAO,IAAI,UAAU,EAAW;AACjC,QAAA,CAAC;AAED,QAAA,OAAO,IAAI;IACZ;uGA5IY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCnC,owBAqBA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDUwB,mBAAmB,sGAAhC,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;2FAIT,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EAEtB,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,owBAAA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA;uEAOkC,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEpC5E,YAAY,GAAG,IAAI,cAAc,CAAS,YAAY;;MCStD,gBAAgB,CAAA;AACX,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEjD,IAAA,WAAA,GAAA;QACC,OAAO,CAAC,GAAG,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;IAC3C;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,kBAAA,CAAoB,CAAC;AACpF,QAAA,OAAO,MAAM;IACd;AAEO,IAAA,OAAO,CAAC,GAAW,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,gBAAA,EAAmB,GAAG,CAAA,CAAE,CAAC;AACxF,QAAA,OAAO,MAAM;IACd;AAEO,IAAA,SAAS,CAAC,IAAc,EAAA;AAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,eAAA,CAAiB,EAAE,IAAI,CAAC;AAC1E,QAAA,OAAO,EAAE;IACV;AAEO,IAAA,cAAc,CAAC,QAAuB,EAAA;AAC5C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,kBAAA,CAAoB,EAAE,QAAQ,CAAC;AACjF,QAAA,OAAO,EAAE;IACV;uGA1BY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCSY,WAAW,CAAA;AACN,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;AAEzC,IAAA,OAAO,CAAC,QAAgB,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAW,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAC;AAClF,QAAA,OAAO,MAAM;IACd;AAEO,IAAA,OAAO,CAAC,SAAiB,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,CAAA,CAAA,EAAI,SAAS,EAAE;AAE/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAC9B,CAAA,EAAG,IAAI,CAAC,QAAQ,kBAAkB,kBAAkB,CAAC,OAAO,CAAC,CAAA,CAAE,CAC/D;AACD,QAAA,OAAO,MAAM;IACd;AAEO,IAAA,WAAW,CAAC,GAAa,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,CAAA,EAAG,IAAI,CAAC,QAAQ,cAAc,EAAE;YAC7E,MAAM,EAAE,EAAE,GAAG,EAAE;AACf,SAAA,CAAC;AAEF,QAAA,OAAO,MAAM;IACd;AAEQ,IAAA,WAAW,CAA4B,GAAW,EAAA;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC;QAExC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CACnC,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC3B,iBAAA,GAAG,CAAC,CAAC,CAAC,MAAM,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;AACnF,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE7B,YAAA,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,MAAM,SAAS,GAAmB,EAAE;AACpC,gBAAA,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE;YAC5C;YAEA,OAAO;AACN,gBAAA,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBACX,IAAI,EAAE,aAAa,CAClB;AACE,qBAAA,GAAG,CAAC,CAAC,SAAS,KAAI;oBAClB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAE;oBAElE,OAAO;AACN,wBAAA,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;qBACxB;AACF,gBAAA,CAAC;AACA,qBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;oBACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;AAC5B,oBAAA,OAAO,IAAI;gBACZ,CAAC,EAAE,EAAoB,CAAC,CACzB;aACD;AACF,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,EAC7B,GAAG,CAAC,CAAC,CAAC,KAAI;YACT,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,gBAAA,IACC,EAAE,WAAW,IAAI,IAAI,CAAC;AACtB,oBAAA,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;AAClC,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC1B;oBACD;gBACD;gBAEA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAEnC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,SAAS,CAAA,wBAAA,CAA0B,CAAC;gBAClE;AAEC,gBAAA,IAAY,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3B;YAEA,OAAO,CAAC,CAAC,IAAI;QACd,CAAC,CAAC,CACF;AAED,QAAA,OAAO,YAAY;IACpB;uGArFY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAX,WAAW,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCbY,6BAA6B,CAAA;AACzB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;uGAD/C,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,iBAAA;;;MCwBY,4BAA4B,CAAA;AACxB,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAE1D,OAAO,GAAG,MAAM,EAAQ;IACxB,KAAK,GAAG,MAAM,EAAQ;IACtB,OAAO,GAAG,MAAM,EAAW;IAEpC,UAAU,GAAG,UAAU;AAEvB,IAAA,MAAM;IAEN,iBAAiB,GAAG,KAAK;AAEhB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAQ;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;AACjC,IAAA,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,kDAAC;AACjC,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAiB;AAE7C,IAAA,aAAa;AACb,IAAA,kBAAkB;AAClB,IAAA,gBAAgB;AAChB,IAAA,mBAAmB;AAEV,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAE1C,IAAA,WAAA,GAAA;AACC,QAAA,eAAe,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;gBACtB;YACD;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAE5B,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC5B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AACrC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;YACpC;AACA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;YAClC;AACA,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC7B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AACtC,gBAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;YACrC;YAEA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,gBAAgB;YACvD,gBAAgB,CAAC,KAAK,EAAE;AAExB,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,0BAA0B;YAC/E,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC,aAAa,CAAC;YAEpE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;YAEzC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;AAClD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAEpD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAC5D,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACpB,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAkB,KAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAC5B;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,YAAkB,KACtE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAC7B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC9C;AACD,QAAA,CAAC,CAAC;IACH;IAEO,UAAU,GAAG,MAAW;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACtD;QACD;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACzB,IAAA,CAAC;;;;;;;;;;;;;;;;AAsBD,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC;AACrE,YAAA,OAAO,KAAK;QACb;AAEA,QAAA,OAAO,KAAK;;;;;;;;;;IAcb;uGAlIY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACI,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B1E,u7CAkCA,u4CDVW,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA;;2FAI3B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;+BACC,4BAA4B,EAAA,OAAA,EAE7B,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,u7CAAA,EAAA,MAAA,EAAA,CAAA,+0CAAA,CAAA,EAAA;kHAKI,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpBpE,SAAU,YAAY,CAAqB,MAGhD,EAAA;IACA,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,QAAA,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;AACzC,QAAA,WAAW,EAAE,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAClD,QAAA,KAAK,EAAE,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;KAC5C;AACF;;MCAa,uBAAuB,CAAA;AACnB,IAAA,uBAAuB,GACtC,YAAY,CAA+B,qBAAqB,mEAAC;AAElD,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAU;AAEjC,IAAA,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,kDAAC;AAEjC,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAiB;AAErC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAA4B;IAEtD,iBAAiB,GAAc,EAAE;AAEjC,IAAA,QAAQ,GAAG,MAAM,EAAC,iBAAyB,GAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE5E,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;AAEvC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACxB;YACD;AAEA,YAAA,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAE3F,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;AACrC,YAAA,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe,KACtD,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,CACnC;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;AAEA,IAAA,IAAW,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAClC;AAEO,IAAA,eAAe,CAAC,SAAkB,EAAA;QACxC,IAAI,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC7B;aAAO;YACN,MAAM,SAAS,GACd,IAAI,CAAC,uBAAuB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;AAE/E,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,SAAS,EAAE;AAC1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACtB;QACD;IACD;IAEO,iBAAiB,CAAC,KAAa,EAAE,YAAkB,EAAA;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY;QAC1C;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;AAEO,IAAA,UAAU,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACpD;QACD;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,2CAA2C,CAAC,EAAE;YAC1D;QACD;QAEA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAC7B;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;AAEO,IAAA,QAAQ,CAAC,SAAiB,EAAA;QAChC,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC;QACD;QAEA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC;IACzC;AAEO,IAAA,MAAM,CAAC,SAAiB,EAAA;AAC9B,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;YACnB;QACD;QAEA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC;IACzC;IAEO,UAAU,CAAC,KAAa,EAAE,gBAA+B,EAAA;AAC/D,QAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE;QAE9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC;IACrC;IAEQ,SAAS,CAAC,MAAc,EAAE,MAAc,EAAA;QAC/C,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3F,YAAA,MAAM,IAAI,KAAK,CACd,CAAA,uCAAA,EAA0C,MAAM,CAAA,GAAA,EAAM,MAAM,CAAA,cAAA,EAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA,CAAE,CAChG;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAC9B;uGA3HY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBpC,msDA4CA,EAAA,MAAA,EAAA,CAAA,guCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9BW,gBAAgB,oJAAE,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK5C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACC,sBAAsB,EAAA,OAAA,EAEvB,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,EAAA,cAAA,EAGzC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,msDAAA,EAAA,MAAA,EAAA,CAAA,guCAAA,CAAA,EAAA;kHAIS,qBAAqB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AErBlE;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@candy-kingdom/bonnie-cms",
3
- "version": "0.27.0",
3
+ "version": "0.27.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ulmer-morozov/candy-kingdom.git",
@@ -202,8 +202,8 @@ declare abstract class BoneEditorBaseComponent<TBone extends Bone> implements IB
202
202
  startEditing(): void;
203
203
  finishEditing(): void;
204
204
  nextPreset(): void;
205
- private applyPresetAtIndex;
206
- private updatePresetByData;
205
+ private readonly applyPresetAtIndex;
206
+ private readonly updatePresetByData;
207
207
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BoneEditorBaseComponent<any>, never>;
208
208
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BoneEditorBaseComponent<any>, "ng-component", never, { "boneEtalon": { "alias": "boneEtalon"; "required": true; "isSignal": true; }; "locale": { "alias": "locale"; "required": true; "isSignal": true; }; "device": { "alias": "device"; "required": false; "isSignal": true; }; }, { "editing": "editing"; "saved": "saved"; "removed": "removed"; "boneEtalon": "boneEtalonChange"; }, never, never, true, never>;
209
209
  }
@@ -496,9 +496,9 @@ declare class AdminDataService {
496
496
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AdminDataService>;
497
497
  }
498
498
 
499
- type SettingDataDict = {
499
+ interface SettingDataDict {
500
500
  [id: string]: SettingData;
501
- };
501
+ }
502
502
  declare class DataService {
503
503
  private readonly http;
504
504
  private readonly baseHref;