@cuby-ui/core 0.0.596 → 0.0.598

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ import { DomSanitizer } from '@angular/platform-browser';
6
6
  import { cuiIsIcon, CUI_ICONS } from '@cuby-ui/icons';
7
7
  import * as i1$1 from '@cuby-ui/cdk';
8
8
  import { cuiCreateToken, cuiCreateTokenFromFactory, CuiDestroyService, CuiFilterPipe, CuiLetDirective, CuiPopoverService, cuiProvide, CUI_ANIMATION_FRAME, cuiZonefree, EMPTY_CLIENT_RECT, cuiInjectElement, CUI_LOCAL_STORAGE, CUI_IS_WEBKIT, CUI_WINDOW, cuiGetElementObscures, CUI_IS_MOBILE, CuiHoveredService, cuiPure, CuiActiveZone, cuiPointToClientRect, cuiClamp, cuiPx, cuiIfMap, cuiIsPresent, cuiTypedFromEvent, cuiZonefreeScheduler, cuiZoneOptimized, cuiIsNativeFocused, cuiWithStyles, CHAR_NO_BREAK_SPACE, CuiItemDirective, CuiFocusTrapDirective, CuiClickOutsideDirective, CuiTargetDirective, cuiGetClosestFocusable, CuiTime, CuiElementDirective, CuiDimensionsObserverDirective, CuiIdService, CuiAutoResizingDirective, CuiDragPointerDirective, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective, FilesUploader, takeCaptureFromVideo, CuiConsumptionUnitsService, UnitsAmount, CuiTypedTemplateDirective } from '@cuby-ui/cdk';
9
- import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, switchMap, tap, catchError, throwError, of, from, filter, timer, Subject, delay, repeat, takeWhile, fromEvent, debounce, skip, take, forkJoin, throttleTime, concatMap, toArray, debounceTime, pairwise, EMPTY } from 'rxjs';
9
+ import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, switchMap, tap, catchError, throwError, of, from, filter, timer, Subject, delay, repeat, takeWhile, fromEvent, debounce, skip, take, forkJoin, EMPTY, concatMap, toArray, debounceTime, pairwise } from 'rxjs';
10
10
  import { __decorate, __metadata } from 'tslib';
11
11
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
12
12
  import { trigger, transition, query, animateChild, style, animate, stagger } from '@angular/animations';
@@ -8487,59 +8487,115 @@ class CuiEditorComponent {
8487
8487
  this.editorService = inject(CuiEditorService);
8488
8488
  this.jTextService = inject(CUI_JTEXT_API_SERVICE);
8489
8489
  this.POOLING_DELAY = 100;
8490
- this.ELEMENT_SPACE_TO_BOTTOM = 150;
8491
- this.SCROLL_THROTTLE_TIME = 200;
8490
+ this.RETRY_DELAY = 3000;
8492
8491
  this.emptyQueue = new Subject();
8493
8492
  this.initChain = Promise.resolve();
8493
+ this.lazyLoadObserver = null;
8494
+ this.lazyLoadSubscription = null;
8494
8495
  this.isSkipCombinedBlockOnChange = [];
8495
8496
  this.isFirst = true;
8496
8497
  this.isChanging = false;
8497
8498
  this.isSkip = false;
8498
8499
  this.isRequested = false;
8499
8500
  this.isDestroyed = false;
8501
+ this.isPreloadFinished = false;
8502
+ this.hasEndLeftZone = false;
8500
8503
  // Нужен для соотношения локального ID и основного ID после создания элемента
8501
8504
  this.blockIdsMap = new Map();
8502
8505
  this.combinedBlocks = new Map();
8503
8506
  this.index = 0;
8504
8507
  this.page = 0;
8508
+ this.lazyLoadVersion = 0;
8505
8509
  this.addedBlocks = [];
8506
8510
  this.updatedBlocks = [];
8507
8511
  this.removedBlocksIds = [];
8508
8512
  this.changesQueue = [];
8509
8513
  this.abortController = new AbortController();
8510
- this.editorId = this.cuiIdService.generate();
8511
8514
  this.isReadonly = computed(() => this.config()?.readOnly);
8512
8515
  this.requestOptions = computed(() => this.config()?.requestOptions);
8516
+ this.editorEndRef = viewChild.required('editorEnd');
8517
+ this.isEditorReady = signal(false);
8518
+ this.editorId = this.cuiIdService.generate();
8513
8519
  this.editorRef = viewChild.required('editor');
8514
8520
  this.editorApiId = input.required();
8515
8521
  this.config = input(DEFAULT_CONFIG);
8516
8522
  this.requestSize = input(40);
8517
8523
  this.editorEmpty = output();
8524
+ this.editorReady = output();
8518
8525
  this.initEditorEffect();
8519
8526
  }
8520
8527
  ngOnDestroy() {
8521
8528
  this.isDestroyed = true;
8522
8529
  this.enqueueInit(() => this.teardownEditor());
8523
8530
  }
8524
- onScrollEvent(element) {
8525
- const overallHeight = element.scrollHeight - this.ELEMENT_SPACE_TO_BOTTOM;
8526
- const currentHeight = element.scrollTop + element.clientHeight;
8527
- if (currentHeight < overallHeight || this.isRequested) {
8528
- return;
8529
- }
8531
+ loadPage() {
8530
8532
  this.isRequested = true;
8533
+ const version = this.lazyLoadVersion;
8531
8534
  const size = this.requestSize();
8532
8535
  let blocksCount = 0;
8533
- this.getBlocks(this.page, size)
8534
- .pipe(tap((blocks) => (blocksCount = blocks.length)), finalize(() => {
8535
- this.isRequested = false;
8536
- if (blocksCount >= size) {
8537
- return;
8538
- }
8539
- this.scrollSubscription.unsubscribe();
8540
- }))
8536
+ let isFailed = false;
8537
+ this.lazyLoadSubscription = this.getBlocks(this.page, size)
8538
+ .pipe(tap((blocks) => (blocksCount = blocks.length)), catchError(() => {
8539
+ isFailed = true;
8540
+ return EMPTY;
8541
+ }), finalize(() => this.finishPageLoad(blocksCount, size, version, isFailed)))
8541
8542
  .subscribe();
8543
+ }
8544
+ finishPageLoad(blocksCount, size, version, isFailed) {
8545
+ this.isRequested = false;
8546
+ if (this.isDestroyed || version !== this.lazyLoadVersion) {
8547
+ return;
8548
+ }
8549
+ if (isFailed) {
8550
+ this.retryPageLoad(version);
8551
+ return;
8552
+ }
8542
8553
  this.page++;
8554
+ this.scheduleNextPage(blocksCount, size, version);
8555
+ }
8556
+ retryPageLoad(version) {
8557
+ this.isRequested = true;
8558
+ timer(this.RETRY_DELAY)
8559
+ .pipe(takeUntilDestroyed(this.destroy))
8560
+ .subscribe(() => {
8561
+ if (this.isDestroyed || version !== this.lazyLoadVersion) {
8562
+ return;
8563
+ }
8564
+ this.loadPage();
8565
+ });
8566
+ }
8567
+ scheduleNextPage(blocksCount, size, version) {
8568
+ if (blocksCount < size) {
8569
+ this.lazyLoadObserver?.disconnect();
8570
+ this.finishPreload();
8571
+ return;
8572
+ }
8573
+ timer(this.POOLING_DELAY)
8574
+ .pipe(takeUntilDestroyed(this.destroy))
8575
+ .subscribe(() => this.continueLazyLoad(version));
8576
+ }
8577
+ continueLazyLoad(version) {
8578
+ if (this.isDestroyed || version !== this.lazyLoadVersion) {
8579
+ return;
8580
+ }
8581
+ if (this.config()?.withoutPreload) {
8582
+ this.finishPreload();
8583
+ }
8584
+ this.observeEditorEnd();
8585
+ }
8586
+ finishPreload() {
8587
+ if (this.isPreloadFinished) {
8588
+ return;
8589
+ }
8590
+ this.isPreloadFinished = true;
8591
+ this.setStartBlock();
8592
+ }
8593
+ finishFirstRender(version) {
8594
+ if (this.isDestroyed || version !== this.lazyLoadVersion || this.isEditorReady()) {
8595
+ return;
8596
+ }
8597
+ this.isEditorReady.set(true);
8598
+ this.editorReady.emit();
8543
8599
  }
8544
8600
  onEditorChange(_, event) {
8545
8601
  if (this.isReadonly() || this.isDestroyed) {
@@ -8577,6 +8633,30 @@ class CuiEditorComponent {
8577
8633
  }
8578
8634
  this.recalculateAllBlocksAfterRemoval(blockIds);
8579
8635
  }
8636
+ onEditorEndMove(entry) {
8637
+ if (this.isRequested) {
8638
+ return;
8639
+ }
8640
+ if (!entry.isIntersecting) {
8641
+ this.hasEndLeftZone = true;
8642
+ this.finishPreload();
8643
+ return;
8644
+ }
8645
+ if (this.config()?.withoutPreload && !this.hasEndLeftZone) {
8646
+ return;
8647
+ }
8648
+ this.loadPage();
8649
+ }
8650
+ initEditorEffect() {
8651
+ effect(() => {
8652
+ if (this.editorApiId() || this.config()) {
8653
+ this.initEditorChanges();
8654
+ }
8655
+ }, { allowSignalWrites: true });
8656
+ }
8657
+ initEditorChanges() {
8658
+ this.enqueueInit(() => this.runEditorInit());
8659
+ }
8580
8660
  recalculateAllBlocksAfterRemoval(blockIds) {
8581
8661
  const remainingRemovedBlockIds = new Set(blockIds);
8582
8662
  this.updatedBlocks = this.updatedBlocks.filter((updatedBlock) => !remainingRemovedBlockIds.has(updatedBlock.id ?? ''));
@@ -8589,25 +8669,19 @@ class CuiEditorComponent {
8589
8669
  });
8590
8670
  this.removedBlocksIds.push(...remainingRemovedBlockIds.values());
8591
8671
  }
8592
- initEditorEffect() {
8593
- effect(() => {
8594
- if (this.editorApiId() || this.config()) {
8595
- this.initEditorChanges();
8596
- }
8597
- }, { allowSignalWrites: true });
8672
+ observeEditorEnd() {
8673
+ const editorEndElement = this.editorEndRef().nativeElement;
8674
+ this.lazyLoadObserver ??= this.createLazyLoadObserver();
8675
+ this.lazyLoadObserver.unobserve(editorEndElement);
8676
+ this.lazyLoadObserver.observe(editorEndElement);
8598
8677
  }
8599
- initEditorChanges() {
8600
- this.enqueueInit(() => this.runEditorInit());
8678
+ createLazyLoadObserver() {
8679
+ return new IntersectionObserver((entries) => this.onEditorEndMove(entries[entries.length - 1]), {
8680
+ root: this.getViewportElement()
8681
+ });
8601
8682
  }
8602
- initScrollObserver() {
8603
- const element = this.config()?.element ?? this.editorElement;
8604
- const scrollObserver = fromEvent(element, 'scroll');
8605
- this.scrollSubscription = scrollObserver
8606
- .pipe(takeUntilDestroyed(this.destroy), throttleTime(this.SCROLL_THROTTLE_TIME, undefined, {
8607
- leading: true,
8608
- trailing: true
8609
- }), map(() => this.onScrollEvent(element)))
8610
- .subscribe();
8683
+ getViewportElement() {
8684
+ return this.config()?.element ?? this.editorElement;
8611
8685
  }
8612
8686
  initEditorEvents(element) {
8613
8687
  const readOnly = this.isReadonly();
@@ -8616,20 +8690,6 @@ class CuiEditorComponent {
8616
8690
  }
8617
8691
  setEditorEvents(element, this.abortController.signal);
8618
8692
  }
8619
- startPooling(size) {
8620
- const scrollElement = this.config()?.element ?? this.editorElement;
8621
- const withoutPreload = this.config()?.withoutPreload;
8622
- this.poolingSubscription = timer(0, this.POOLING_DELAY)
8623
- .pipe(concatMap(() => this.getBlocks(this.page, size).pipe(delay(this.POOLING_DELAY))), tap(() => this.page++), takeWhile((blocks) => !withoutPreload &&
8624
- scrollElement.scrollHeight <= scrollElement.clientHeight &&
8625
- blocks.length >= size), finalize(() => {
8626
- if (this.isDestroyed) {
8627
- return;
8628
- }
8629
- this.setStartBlock();
8630
- }))
8631
- .subscribe();
8632
- }
8633
8693
  teardownEditor() {
8634
8694
  this.abortController.abort();
8635
8695
  this.resetData();
@@ -8659,8 +8719,7 @@ class CuiEditorComponent {
8659
8719
  wireEditor() {
8660
8720
  this.editorElement = this.editorRef().nativeElement;
8661
8721
  this.initEditorEvents(this.editorElement);
8662
- this.initScrollObserver();
8663
- this.startPooling(this.requestSize());
8722
+ this.loadPage();
8664
8723
  this.setListenersOnCustomBlockChanges();
8665
8724
  }
8666
8725
  setListenersOnCustomBlockChanges() {
@@ -8764,6 +8823,9 @@ class CuiEditorComponent {
8764
8823
  if (typeof block.type !== 'string') {
8765
8824
  return;
8766
8825
  }
8826
+ if (this.blockIdsMap.has(block.id)) {
8827
+ return;
8828
+ }
8767
8829
  this.blockIdsMap.set(block.id, block.id);
8768
8830
  this.insert(block);
8769
8831
  }
@@ -8786,13 +8848,20 @@ class CuiEditorComponent {
8786
8848
  this.editor.blocks.insert(block.type, block.data, {}, this.index, false, false, block.id);
8787
8849
  return;
8788
8850
  }
8851
+ const version = this.lazyLoadVersion;
8789
8852
  // TODO: есть варик что что то пойдет не так
8790
- this.editor.blocks.render({ blocks: [block] }).then(() => (this.isSkip = false));
8853
+ this.editor.blocks.render({ blocks: [block] }).then(() => {
8854
+ this.isSkip = false;
8855
+ this.finishFirstRender(version);
8856
+ });
8791
8857
  this.isFirst = false;
8792
8858
  }
8793
8859
  setCombinedBlock(block) {
8794
8860
  const combinedBlockData = block.data;
8795
8861
  const parent = this.combinedBlocks.get(combinedBlockData.parentId);
8862
+ if (parent && this.blockIdsMap.has(block.id)) {
8863
+ return parent;
8864
+ }
8796
8865
  this.blockIdsMap.set(block.id, block.id);
8797
8866
  if (parent) {
8798
8867
  const parentData = parent.data;
@@ -8834,14 +8903,21 @@ class CuiEditorComponent {
8834
8903
  this.editorEmpty.emit(this.checkIsEmpty());
8835
8904
  return;
8836
8905
  }
8906
+ const version = this.lazyLoadVersion;
8837
8907
  if (this.isReadonly()) {
8838
- this.editor.render({ blocks: [] });
8908
+ this.editor.render({ blocks: [] }).then(() => this.finishFirstRender(version));
8839
8909
  return;
8840
8910
  }
8841
- this.editorService.setStartBlock(this.editorApiId(), this.requestOptions(), async (block, id) => {
8842
- this.blockIdsMap.set(id, id);
8843
- this.isSkipCombinedBlockOnChange.push(true);
8844
- await this.editor.render({ blocks: [block] });
8911
+ this.editorService.setStartBlock(this.editorApiId(), this.requestOptions(), (block, id) => this.renderStartBlock(block, id, version));
8912
+ }
8913
+ async renderStartBlock(block, id, version) {
8914
+ if (this.isDestroyed || version !== this.lazyLoadVersion) {
8915
+ return;
8916
+ }
8917
+ this.blockIdsMap.set(id, id);
8918
+ this.isSkipCombinedBlockOnChange.push(true);
8919
+ this.editor.render({ blocks: [block] }).then(() => {
8920
+ this.finishFirstRender(version);
8845
8921
  this.setFocus();
8846
8922
  recalculateIndexes(this.editor.blocks);
8847
8923
  });
@@ -8862,31 +8938,40 @@ class CuiEditorComponent {
8862
8938
  return !redactorTextContent;
8863
8939
  }
8864
8940
  resetData() {
8865
- this.scrollSubscription?.unsubscribe();
8866
- this.poolingSubscription?.unsubscribe();
8941
+ this.resetLazyLoad();
8942
+ this.isEditorReady.set(false);
8867
8943
  this.isSkipCombinedBlockOnChange = [];
8868
8944
  this.isFirst = true;
8869
8945
  this.isChanging = false;
8870
8946
  this.isSkip = false;
8871
- this.isRequested = false;
8872
8947
  this.blockIdsMap = new Map();
8873
8948
  this.combinedBlocks = new Map();
8874
8949
  this.index = 0;
8875
- this.page = 0;
8876
8950
  this.addedBlocks = [];
8877
8951
  this.updatedBlocks = [];
8878
8952
  this.removedBlocksIds = [];
8879
8953
  this.changesQueue = [];
8880
8954
  this.abortController = new AbortController();
8881
8955
  }
8956
+ resetLazyLoad() {
8957
+ this.lazyLoadVersion++;
8958
+ this.lazyLoadObserver?.disconnect();
8959
+ this.lazyLoadObserver = null;
8960
+ this.lazyLoadSubscription?.unsubscribe();
8961
+ this.lazyLoadSubscription = null;
8962
+ this.isRequested = false;
8963
+ this.isPreloadFinished = false;
8964
+ this.hasEndLeftZone = false;
8965
+ this.page = 0;
8966
+ }
8882
8967
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8883
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorComponent, isStandalone: true, selector: "cui-editor", inputs: { editorApiId: { classPropertyName: "editorApiId", publicName: "editorApiId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, requestSize: { classPropertyName: "requestSize", publicName: "requestSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty" }, providers: [
8968
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorComponent, isStandalone: true, selector: "cui-editor", inputs: { editorApiId: { classPropertyName: "editorApiId", publicName: "editorApiId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, requestSize: { classPropertyName: "requestSize", publicName: "requestSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty", editorReady: "editorReady" }, providers: [
8884
8969
  CuiEditorService,
8885
8970
  {
8886
8971
  provide: CUI_JTEXT_API_SERVICE,
8887
8972
  useFactory: () => inject(CUI_JTEXT_API_SERVICE, { optional: true, skipSelf: true }) ?? new CuiJTextApiService()
8888
8973
  }
8889
- ], viewQueries: [{ propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8974
+ ], viewQueries: [{ propertyName: "editorEndRef", first: true, predicate: ["editorEnd"], descendants: true, isSignal: true }, { propertyName: "editorRef", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #editor\n data-editor\n [class._readonly]=\"config().readOnly\"\n [class._loading]=\"!isEditorReady()\"\n>\n <div [id]=\"editorId\"></div>\n <div\n #editorEnd\n class=\"editor-end\"\n ></div>\n</div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor]._loading{pointer-events:none;-webkit-user-select:none;user-select:none}:host ::ng-deep [data-editor]._loading .combined-text-block[data-placeholder-active][data-empty=true]:before{content:none}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:var(--cui-warning)}:host ::ng-deep .role-marker{color:var(--cui-info)}.editor-end{margin-top:-150px;height:150px;pointer-events:none}.form{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8890
8975
  }
8891
8976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorComponent, decorators: [{
8892
8977
  type: Component,
@@ -8896,7 +8981,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8896
8981
  provide: CUI_JTEXT_API_SERVICE,
8897
8982
  useFactory: () => inject(CUI_JTEXT_API_SERVICE, { optional: true, skipSelf: true }) ?? new CuiJTextApiService()
8898
8983
  }
8899
- ], template: "<div\n #editor\n [id]=\"editorId\"\n data-editor\n [class._readonly]=\"config().readOnly\"\n></div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:#e97c00}:host ::ng-deep .role-marker{color:#8803f1}.form{height:100%}\n"] }]
8984
+ ], template: "<div\n #editor\n data-editor\n [class._readonly]=\"config().readOnly\"\n [class._loading]=\"!isEditorReady()\"\n>\n <div [id]=\"editorId\"></div>\n <div\n #editorEnd\n class=\"editor-end\"\n ></div>\n</div>\n", styles: [":host{--textColor: var(--cui-base-900);--menuBackground: var(--cui-base-0);--menuBorder: var(--cui-base-200);--menuItemHover: var(--cui-base-10);--menuItemBackground: var(cui-base-900);--menuIconBackground: var(--cui-base-50);--menuIconHover: var(--cui-base-10);font-weight:400;font-size:14px;line-height:20px;font-family:var(--cui-main-font)}:host ::ng-deep .ce-popover{--color-background: var(--menuBackground);--color-text-primary: var(--textColor);--color-border: var(--menuBorder);--color-border-icon: var(--menuBorder);--color-background-item: var(--menuItemBackground);--color-background-item-hover: var(--menuItemHover)}:host ::ng-deep .ce-popover__search{background:var(--menuIconBackground)}:host ::ng-deep .ce-popover .ce-popover-item__icon{background:var(--menuIconBackground)}:host ::ng-deep .ce-conversion-toolbar{background-color:var(--menuBackground);border-color:var(--menuBorder)}:host ::ng-deep .ce-conversion-toolbar__tools{padding:0 6px 6px}:host ::ng-deep .ce-conversion-tool{padding:3px;border-radius:6px}:host ::ng-deep .ce-conversion-tool__icon{border:1px solid var(--menuBorder);background-color:var(--menuIconBackground);box-shadow:none}:host ::ng-deep .ce-conversion-tool:hover{background-color:var(--menuItemHover)}:host ::ng-deep .ce-conversion-tool:hover .ce-conversion-tool__icon{border-color:var(--menuIconHover)}:host ::ng-deep .combined-text-block{padding:.4em 0;line-height:1.6em;outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part{outline:none}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child,:host ::ng-deep .combined-text-block .combined-text-block-part._selected{display:list-item}:host ::ng-deep .combined-text-block .combined-text-block-part:only-child::marker,:host ::ng-deep .combined-text-block .combined-text-block-part._selected::marker{content:\"\"}:host ::ng-deep .image-tool__image{border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}:host ::ng-deep .image-tool__image-preloader{background-color:var(--cui-base-200)}:host ::ng-deep .image-tool__image-preloader:after{border:1px solid var(--cui-base-200);border-top:1px solid var(--cui-blue-600)}:host ::ng-deep .cdx-button{border-radius:8px;border:1px solid var(--cui-base-200);color:var(--textColor);background-color:var(--cui-base-10);box-shadow:none}:host ::ng-deep .ce-inline-toolbar{border-color:var(--cui-base-100);color:var(--textColor);background-color:var(--cui-base-0)}:host ::ng-deep .ce-inline-toolbar__dropdown:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-inline-tool:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{color:var(--cui-base-500)}:host ::ng-deep .ce-toolbar__plus:hover,:host ::ng-deep .ce-toolbar__settings-btn:hover{background-color:var(--cui-base-100)}:host ::ng-deep .ce-toolbar__actions{right:100%}:host ::ng-deep .ce-toolbar__content{max-width:none}@media (max-width: 650px){:host ::ng-deep .ce-toolbar__plus,:host ::ng-deep .ce-toolbar__settings-btn{border-color:var(--menuBorder);background-color:var(--menuBackground)}:host ::ng-deep .ce-toolbar__actions{inset:0 auto auto 0}}:host ::ng-deep .ce-block--selected .ce-block__content{background-color:var(--cui-base-200)}:host ::ng-deep .ce-block__content{max-width:100%}:host ::ng-deep .ce-block:only-of-type .combined-text-block[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active);position:absolute;color:var(--cui-base-400)}:host ::ng-deep [data-editor]{padding-right:4px;width:100%;height:100%;min-height:200px;overflow:hidden auto;scrollbar-gutter:stable}:host ::ng-deep [data-editor] .codex-editor{margin-left:60px}:host ::ng-deep [data-editor] .codex-editor--narrow .ce-popover{right:auto}:host ::ng-deep [data-editor] .codex-editor__redactor{margin-right:auto;padding-bottom:260px!important}@media (max-width: 650px){:host ::ng-deep [data-editor] .codex-editor{margin-left:0}}:host ::ng-deep [data-editor]._readonly{min-height:auto}:host ::ng-deep [data-editor]._readonly .codex-editor{margin:auto}:host ::ng-deep [data-editor]._readonly .codex-editor__redactor{padding-bottom:0!important}:host ::ng-deep [data-editor]._readonly .combined-text-block{padding:0}:host ::ng-deep [data-editor]._loading{pointer-events:none;-webkit-user-select:none;user-select:none}:host ::ng-deep [data-editor]._loading .combined-text-block[data-placeholder-active][data-empty=true]:before{content:none}:host ::ng-deep [data-editor] [data-item-name=move-up],:host ::ng-deep [data-editor] [data-item-name=move-down],:host ::ng-deep [data-editor] [data-tool=paragraph]{display:none}:host ::ng-deep [data-editor] *::selection{background:var(--cui-base-200)}:host ::ng-deep [data-editor] a{color:var(--cui-light-blue-600)}:host ::ng-deep .marker{cursor:pointer;text-decoration:underline;color:var(--cui-light-blue-600);background-color:transparent}:host ::ng-deep .tool-marker,:host ::ng-deep .role-marker{margin:0 5px}:host ::ng-deep .tool-marker{color:var(--cui-warning)}:host ::ng-deep .role-marker{color:var(--cui-info)}.editor-end{margin-top:-150px;height:150px;pointer-events:none}.form{height:100%}\n"] }]
8900
8985
  }], ctorParameters: () => [] });
8901
8986
 
8902
8987
  class EditorResizeObserverDirective {
@@ -8971,7 +9056,7 @@ class CuiEditorReadonlyComponent {
8971
9056
  }, { allowSignalWrites: true });
8972
9057
  }
8973
9058
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorReadonlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8974
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorReadonlyComponent, isStandalone: true, selector: "cui-editor-readonly", inputs: { editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, buttonTemplate: { classPropertyName: "buttonTemplate", publicName: "buttonTemplate", isSignal: true, isRequired: true, transformFunction: null }, shortHeight: { classPropertyName: "shortHeight", publicName: "shortHeight", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<cui-editor\r\n cuiElement\r\n #editorElement=\"elementRef\"\r\n #editorComponent\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n\r\n<ng-template\r\n [editorResizeObserver]\r\n [target]=\"editorElement.nativeElement\"\r\n [shortHeight]=\"shortHeight()\"\r\n>\r\n <button\r\n class=\"c-button\"\r\n (click)=\"onShow(editorComponent)\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttonTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"\r\n ></ng-container>\r\n </button>\r\n</ng-template>\r\n", styles: [":host{--height: 69px;--fullHeight: 500px;display:flex;flex-direction:column;gap:8px}:host .editor{display:block;max-height:var(--height);overflow:hidden}:host .editor ::ng-deep [data-editor]{overflow:hidden}:host .editor_opened{max-height:var(--fullHeight)}:host .editor_opened ::ng-deep [data-editor]{max-height:var(--fullHeight);overflow:hidden auto}.c-button{padding:0}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: EditorResizeObserverDirective, selector: "[editorResizeObserver]", inputs: ["target", "shortHeight"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9059
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiEditorReadonlyComponent, isStandalone: true, selector: "cui-editor-readonly", inputs: { editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, buttonTemplate: { classPropertyName: "buttonTemplate", publicName: "buttonTemplate", isSignal: true, isRequired: true, transformFunction: null }, shortHeight: { classPropertyName: "shortHeight", publicName: "shortHeight", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<cui-editor\r\n cuiElement\r\n #editorElement=\"elementRef\"\r\n #editorComponent\r\n class=\"editor\"\r\n [class.editor_opened]=\"isShowMore()\"\r\n [editorApiId]=\"editorId()\"\r\n [config]=\"editorConfig()\"\r\n/>\r\n\r\n<ng-template\r\n [editorResizeObserver]\r\n [target]=\"editorElement.nativeElement\"\r\n [shortHeight]=\"shortHeight()\"\r\n>\r\n <button\r\n class=\"c-button\"\r\n (click)=\"onShow(editorComponent)\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttonTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: isShowMore }\"\r\n ></ng-container>\r\n </button>\r\n</ng-template>\r\n", styles: [":host{--height: 69px;--fullHeight: 500px;display:flex;flex-direction:column;gap:8px}:host .editor{display:block;max-height:var(--height);overflow:hidden}:host .editor ::ng-deep [data-editor]{overflow:hidden}:host .editor_opened{max-height:var(--fullHeight)}:host .editor_opened ::ng-deep [data-editor]{max-height:var(--fullHeight);overflow:hidden auto}.c-button{padding:0}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: EditorResizeObserverDirective, selector: "[editorResizeObserver]", inputs: ["target", "shortHeight"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8975
9060
  }
8976
9061
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorReadonlyComponent, decorators: [{
8977
9062
  type: Component,
@@ -9006,7 +9091,7 @@ class CuiEditorModalComponent {
9006
9091
  this.modalClosed.emit();
9007
9092
  }
9008
9093
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9009
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiEditorModalComponent, isStandalone: true, selector: "cui-editor-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, buttonTemplate: { classPropertyName: "buttonTemplate", publicName: "buttonTemplate", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorCreated: "editorCreated", modalClosed: "modalClosed" }, ngImport: i0, template: "@if (buttonTemplate(); as template) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onModalOpen()\"\n >\n <ng-container [ngTemplateOutlet]=\"template\" />\n </button>\n} @else {\n <button\n class=\"description\"\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n icon=\"cuiIconRichText\"\n size=\"sm\"\n (click)=\"onModalOpen()\"\n [disabled]=\"isButtonDisabled()\"\n >\n @if (editorId()) {\n <span class=\"description__text _created\">{{ 'Description' }}</span>\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconEdit\"\n color=\"var(--cui-base-500)\"\n />\n } @else {\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconPlus\"\n color=\"var(--cui-light-blue-600)\"\n />\n <span class=\"description__text\">{{ 'Add description' }}</span>\n }\n </button>\n}\n@if (isOpen()) {\n <div class=\"wrapper\">\n @if (editorId(); as id) {\n <header class=\"header\">\n <div class=\"info\">\n <button\n cuiButton\n type=\"button\"\n icon=\"cuiIconChevronLeft\"\n size=\"xxs\"\n appearance=\"secondary\"\n shape=\"rounded\"\n (click)=\"close()\"\n ></button>\n <h1 class=\"title\">{{ title() }}</h1>\n </div>\n <div class=\"actions\">\n <!-- <cui-loader /> -->\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n (click)=\"close()\"\n >\n {{ 'Done' }}\n </button>\n </div>\n </header>\n\n <section class=\"section\">\n <cui-editor\n #editorComponent\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"config()\"\n />\n </section>\n }\n </div>\n}\n", styles: [":host ::ng-deep .delete{width:max-content}:host ::ng-deep .delete .c-content{display:flex;align-items:center;gap:4px;color:var(--cui-danger)}:host ::ng-deep .description .c-content{display:flex;align-items:center;gap:4px}.button{padding:0}.description{width:max-content}.description__text{color:var(--cui-light-blue-600)}.description__text._created{color:var(--cui-base-900)}.description__icon{padding:4px}.wrapper{position:fixed;z-index:10;inset:0;background-color:var(--cui-base-0)}.header{display:flex;flex-direction:row;gap:0;align-items:stretch;justify-content:space-between;padding:8px 16px;border-bottom:.5px solid var(--cui-base-200);background:var(--cui-base-0)}.info,.actions{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:flex-start}.section{padding-right:24px;padding-left:24px;padding-top:24px;height:calc(100% - 50px);overflow:hidden}.title{font-weight:500;font-size:14px;line-height:20px;margin:0}.editor{padding-right:32px;padding-left:32px;padding-top:32px;display:block;margin:0 auto;max-width:750px;height:100%}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }] }); }
9094
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiEditorModalComponent, isStandalone: true, selector: "cui-editor-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, buttonTemplate: { classPropertyName: "buttonTemplate", publicName: "buttonTemplate", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorCreated: "editorCreated", modalClosed: "modalClosed" }, ngImport: i0, template: "@if (buttonTemplate(); as template) {\n <button\n type=\"button\"\n class=\"button\"\n (click)=\"onModalOpen()\"\n >\n <ng-container [ngTemplateOutlet]=\"template\" />\n </button>\n} @else {\n <button\n class=\"description\"\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n icon=\"cuiIconRichText\"\n size=\"sm\"\n (click)=\"onModalOpen()\"\n [disabled]=\"isButtonDisabled()\"\n >\n @if (editorId()) {\n <span class=\"description__text _created\">{{ 'Description' }}</span>\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconEdit\"\n color=\"var(--cui-base-500)\"\n />\n } @else {\n <cui-svg\n class=\"description__icon\"\n icon=\"cuiIconPlus\"\n color=\"var(--cui-light-blue-600)\"\n />\n <span class=\"description__text\">{{ 'Add description' }}</span>\n }\n </button>\n}\n@if (isOpen()) {\n <div class=\"wrapper\">\n @if (editorId(); as id) {\n <header class=\"header\">\n <div class=\"info\">\n <button\n cuiButton\n type=\"button\"\n icon=\"cuiIconChevronLeft\"\n size=\"xxs\"\n appearance=\"secondary\"\n shape=\"rounded\"\n (click)=\"close()\"\n ></button>\n <h1 class=\"title\">{{ title() }}</h1>\n </div>\n <div class=\"actions\">\n <!-- <cui-loader /> -->\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n (click)=\"close()\"\n >\n {{ 'Done' }}\n </button>\n </div>\n </header>\n\n <section class=\"section\">\n <cui-editor\n #editorComponent\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"config()\"\n />\n </section>\n }\n </div>\n}\n", styles: [":host ::ng-deep .delete{width:max-content}:host ::ng-deep .delete .c-content{display:flex;align-items:center;gap:4px;color:var(--cui-danger)}:host ::ng-deep .description .c-content{display:flex;align-items:center;gap:4px}.button{padding:0}.description{width:max-content}.description__text{color:var(--cui-light-blue-600)}.description__text._created{color:var(--cui-base-900)}.description__icon{padding:4px}.wrapper{position:fixed;z-index:10;inset:0;background-color:var(--cui-base-0)}.header{display:flex;flex-direction:row;gap:0;align-items:stretch;justify-content:space-between;padding:8px 16px;border-bottom:.5px solid var(--cui-base-200);background:var(--cui-base-0)}.info,.actions{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:flex-start}.section{padding-right:24px;padding-left:24px;padding-top:24px;height:calc(100% - 50px);overflow:hidden}.title{font-weight:500;font-size:14px;line-height:20px;margin:0}.editor{padding-right:32px;padding-left:32px;padding-top:32px;display:block;margin:0 auto;max-width:750px;height:100%}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }] }); }
9010
9095
  }
9011
9096
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorModalComponent, decorators: [{
9012
9097
  type: Component,
@@ -9051,7 +9136,7 @@ class CuiEditorBlockComponent {
9051
9136
  }, { allowSignalWrites: true });
9052
9137
  }
9053
9138
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9054
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiEditorBlockComponent, isStandalone: true, selector: "cui-editor-block", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty" }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"wrapper\">\n <span class=\"title\">\n {{ t('DESCRIPTION') }}\n @if (required()) {\n <span class=\"title__required\">*</span>\n }\n </span>\n <ng-template #button>\n <button\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\n cuiButton\n size=\"xxs\"\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconMaximizeSm\"\n (click)=\"onToggleDescriptionModal()\"\n ></button>\n </ng-template>\n <cui-editor-modal\n [title]=\"title()\"\n [editorId]=\"editorId()\"\n [buttonTemplate]=\"button\"\n [config]=\"config()\"\n (modalClosed)=\"onToggleDescriptionModal()\"\n />\n </div>\n <div\n #editorContainer\n cuiContentWrapper\n class=\"editor\"\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\n >\n @if (!isDescriptionModalOpen() && editorConfig()) {\n <cui-editor\n #editorComponent\n [editorApiId]=\"editorId()\"\n [config]=\"editorConfig()!\"\n (editorEmpty)=\"onDescriptionChange($event)\"\n />\n }\n </div>\n @if (required() && isDescriptionEmpty()) {\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\n }\n</ng-container>\n", styles: [":host{--max-editor-height: 650px;padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--cui-base-10);border-radius:8px}:host .editor{max-height:var(--max-editor-height)}.wrapper{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:space-between}.editor{padding-top:16px;padding-bottom:16px;display:block;overflow:auto}.editor_invalid{border:1px solid var(--cui-danger)}.title{font-weight:500;font-size:14px;line-height:20px}.title__required{color:var(--cui-danger)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "component", type: CuiEditorModalComponent, selector: "cui-editor-modal", inputs: ["title", "buttonTemplate", "config", "editorId"], outputs: ["editorCreated", "modalClosed"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiContentWrapperComponent, selector: "cui-content-wrapper, [cuiContentWrapper]", inputs: ["backgroundColor", "gap"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "component", type: CuiHintComponent, selector: "cui-hint", inputs: ["hintType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiEditorBlockComponent, isStandalone: true, selector: "cui-editor-block", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editorEmpty: "editorEmpty" }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"wrapper\">\n <span class=\"title\">\n {{ t('DESCRIPTION') }}\n @if (required()) {\n <span class=\"title__required\">*</span>\n }\n </span>\n <ng-template #button>\n <button\n [cuiTooltip]=\"t('EXPAND_EDITOR_TO_FULLSCREEN')\"\n cuiButton\n size=\"xxs\"\n type=\"button\"\n appearance=\"ghost\"\n icon=\"cuiIconMaximizeSm\"\n (click)=\"onToggleDescriptionModal()\"\n ></button>\n </ng-template>\n <cui-editor-modal\n [title]=\"title()\"\n [editorId]=\"editorId()\"\n [buttonTemplate]=\"button\"\n [config]=\"config()\"\n (modalClosed)=\"onToggleDescriptionModal()\"\n />\n </div>\n <div\n #editorContainer\n cuiContentWrapper\n class=\"editor\"\n [class.editor_invalid]=\"required() && isDescriptionEmpty()\"\n >\n @if (!isDescriptionModalOpen() && editorConfig()) {\n <cui-editor\n #editorComponent\n [editorApiId]=\"editorId()\"\n [config]=\"editorConfig()!\"\n (editorEmpty)=\"onDescriptionChange($event)\"\n />\n }\n </div>\n @if (required() && isDescriptionEmpty()) {\n <cui-hint hintType=\"error\">{{ t('DESCRIPTION_IS_REQUIRED') }}</cui-hint>\n }\n</ng-container>\n", styles: [":host{--max-editor-height: 650px;padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--cui-base-10);border-radius:8px}:host .editor{max-height:var(--max-editor-height)}.wrapper{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:space-between}.editor{padding-top:16px;padding-bottom:16px;display:block;overflow:auto}.editor_invalid{border:1px solid var(--cui-danger)}.title{font-weight:500;font-size:14px;line-height:20px}.title__required{color:var(--cui-danger)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "component", type: CuiEditorModalComponent, selector: "cui-editor-modal", inputs: ["title", "buttonTemplate", "config", "editorId"], outputs: ["editorCreated", "modalClosed"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiContentWrapperComponent, selector: "cui-content-wrapper, [cuiContentWrapper]", inputs: ["backgroundColor", "gap"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "component", type: CuiHintComponent, selector: "cui-hint", inputs: ["hintType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9055
9140
  }
9056
9141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiEditorBlockComponent, decorators: [{
9057
9142
  type: Component,
@@ -11083,7 +11168,7 @@ class CuiFramerPreviewComponent {
11083
11168
  this.thumbnailUrl.set({ src: resource.fileId && url, name: resource.name || resource.type });
11084
11169
  }
11085
11170
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFramerPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11086
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiFramerPreviewComponent, isStandalone: true, selector: "cui-framer-preview", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, editorResourceUrl: { classPropertyName: "editorResourceUrl", publicName: "editorResourceUrl", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @let url = thumbnailUrl();\n\n @if (url?.src; as src) {\n @if (isVideo) {\n <video\n class=\"thumbnail\"\n [src]=\"src\"\n controls\n ></video>\n } @else {\n <img\n class=\"thumbnail\"\n [src]=\"src\"\n [alt]=\"url?.name\"\n />\n }\n }\n\n <div class=\"content\">\n @if (title(); as title) {\n <div class=\"title\">{{ title }}</div>\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n </div>\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:0;height:100%;overflow:auto}.thumbnail{width:100%;max-height:271px;object-fit:contain}.content{display:flex;flex-direction:column;gap:14px;padding:16px 12px}.title{font-weight:500;font-size:18px;line-height:28px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiFramerPreviewComponent, isStandalone: true, selector: "cui-framer-preview", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, editorResourceUrl: { classPropertyName: "editorResourceUrl", publicName: "editorResourceUrl", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @let url = thumbnailUrl();\n\n @if (url?.src; as src) {\n @if (isVideo) {\n <video\n class=\"thumbnail\"\n [src]=\"src\"\n controls\n ></video>\n } @else {\n <img\n class=\"thumbnail\"\n [src]=\"src\"\n [alt]=\"url?.name\"\n />\n }\n }\n\n <div class=\"content\">\n @if (title(); as title) {\n <div class=\"title\">{{ title }}</div>\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n </div>\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;gap:0;height:100%;overflow:auto}.thumbnail{width:100%;max-height:271px;object-fit:contain}.content{display:flex;flex-direction:column;gap:14px;padding:16px 12px}.title{font-weight:500;font-size:18px;line-height:28px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11087
11172
  }
11088
11173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFramerPreviewComponent, decorators: [{
11089
11174
  type: Component,
@@ -11780,7 +11865,7 @@ class CuiCriterionReadonlyInfoComponent {
11780
11865
  });
11781
11866
  }
11782
11867
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCriterionReadonlyInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11783
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCriterionReadonlyInfoComponent, isStandalone: true, selector: "cui-criterion-readonly-info", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl() | async; as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiUtilityReadonlyThumbnailComponent, selector: "cui-utility-readonly-thumbnail", inputs: ["thumbnailUrl", "isVideo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11868
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCriterionReadonlyInfoComponent, isStandalone: true, selector: "cui-criterion-readonly-info", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl() | async; as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiUtilityReadonlyThumbnailComponent, selector: "cui-utility-readonly-thumbnail", inputs: ["thumbnailUrl", "isVideo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11784
11869
  }
11785
11870
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCriterionReadonlyInfoComponent, decorators: [{
11786
11871
  type: Component,
@@ -11919,7 +12004,7 @@ class CuiInstructionReadonlyInfoComponent {
11919
12004
  });
11920
12005
  }
11921
12006
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionReadonlyInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11922
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionReadonlyInfoComponent, isStandalone: true, selector: "cui-instruction-readonly-info", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl() | async; as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiUtilityReadonlyThumbnailComponent, selector: "cui-utility-readonly-thumbnail", inputs: ["thumbnailUrl", "isVideo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12007
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionReadonlyInfoComponent, isStandalone: true, selector: "cui-instruction-readonly-info", inputs: { framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl() | async; as thumbnailUrl) {\n <cui-utility-readonly-thumbnail\n [thumbnailUrl]=\"thumbnailUrl\"\n [isVideo]=\"isVideo\"\n />\n }\n\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CuiUtilityReadonlyThumbnailComponent, selector: "cui-utility-readonly-thumbnail", inputs: ["thumbnailUrl", "isVideo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11923
12008
  }
11924
12009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionReadonlyInfoComponent, decorators: [{
11925
12010
  type: Component,
@@ -12693,7 +12778,7 @@ class UtilityInfoReadonlyComponent {
12693
12778
  });
12694
12779
  }
12695
12780
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilityInfoReadonlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12696
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UtilityInfoReadonlyComponent, isStandalone: true, selector: "cui-utility-info-readonly", inputs: { environmentUrlForResources: { classPropertyName: "environmentUrlForResources", publicName: "environmentUrlForResources", isSignal: true, isRequired: false, transformFunction: null }, environmentUrlForInstruction: { classPropertyName: "environmentUrlForInstruction", publicName: "environmentUrlForInstruction", isSignal: true, isRequired: false, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl(); as url) {\n @if (url?.src; as src) {\n @if (isVideo) {\n <video\n class=\"thumbnail\"\n [src]=\"src\"\n controls\n ></video>\n } @else {\n <img\n class=\"thumbnail\"\n [src]=\"src\"\n [alt]=\"url?.name\"\n />\n }\n }\n }\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.thumbnail{width:100%;max-height:271px;object-fit:contain}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
12781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UtilityInfoReadonlyComponent, isStandalone: true, selector: "cui-utility-info-readonly", inputs: { environmentUrlForResources: { classPropertyName: "environmentUrlForResources", publicName: "environmentUrlForResources", isSignal: true, isRequired: false, transformFunction: null }, environmentUrlForInstruction: { classPropertyName: "environmentUrlForInstruction", publicName: "environmentUrlForInstruction", isSignal: true, isRequired: false, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @if (jText()) {\n @if (!isDescriptionEmpty()) {\n @if (thumbnailUrl(); as url) {\n @if (url?.src; as src) {\n @if (isVideo) {\n <video\n class=\"thumbnail\"\n [src]=\"src\"\n controls\n ></video>\n } @else {\n <img\n class=\"thumbnail\"\n [src]=\"src\"\n [alt]=\"url?.name\"\n />\n }\n }\n }\n @if (jText()?.id; as id) {\n <div class=\"wrapper\">\n <cui-editor\n class=\"editor\"\n [editorApiId]=\"id\"\n [config]=\"editorConfig\"\n />\n </div>\n }\n } @else {\n <cui-empty-state [subtitle]=\"t('NO_DESCRIPTION_WAS_PROVIDED')\" />\n }\n }\n</ng-container>\n", styles: [":host{padding-top:16px;padding-right:16px;padding-left:16px;display:flex;flex-direction:column;gap:12px;height:100%;overflow:auto}.thumbnail{width:100%;max-height:271px;object-fit:contain}.wrapper{padding:12px}.editor{display:block;height:100%;overflow:auto}\n"], dependencies: [{ kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
12697
12782
  }
12698
12783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UtilityInfoReadonlyComponent, decorators: [{
12699
12784
  type: Component,
@@ -13762,7 +13847,7 @@ class ModalOperationPartComponent {
13762
13847
  ]);
13763
13848
  }
13764
13849
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalOperationPartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13765
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ModalOperationPartComponent, isStandalone: true, selector: "cui-modal-operation-part", inputs: { isInserted: { classPropertyName: "isInserted", publicName: "isInserted", isSignal: true, isRequired: false, transformFunction: null }, containerId: { classPropertyName: "containerId", publicName: "containerId", isSignal: true, isRequired: false, transformFunction: null }, quantumId: { classPropertyName: "quantumId", publicName: "quantumId", isSignal: true, isRequired: false, transformFunction: null }, jobId: { classPropertyName: "jobId", publicName: "jobId", isSignal: true, isRequired: false, transformFunction: null }, storageObjectOperation: { classPropertyName: "storageObjectOperation", publicName: "storageObjectOperation", isSignal: true, isRequired: true, transformFunction: null }, environmentUrlForResources: { classPropertyName: "environmentUrlForResources", publicName: "environmentUrlForResources", isSignal: true, isRequired: true, transformFunction: null }, environmentUrlForInstruction: { classPropertyName: "environmentUrlForInstruction", publicName: "environmentUrlForInstruction", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "estimatedTime", first: true, predicate: ["estimatedTime"], descendants: true, isSignal: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (storageObjectOperation().storageElement; as operation) {\n <ng-container *transloco=\"let t\">\n <cui-modal-header\n [heading]=\"operation.title\"\n [isInserted]=\"isInserted()\"\n >\n <cui-letter-box\n cuiModalHeaderIcon\n letter=\"o\"\n backgroundColor=\"var(--cui-success)\"\n />\n\n @if (isInserted()) {\n <cui-modal-header-inserted-buttons\n cuiModalHeaderButtons\n (unbindClicked)=\"onUnbindOperation()\"\n />\n }\n </cui-modal-header>\n\n @if (tabs().length) {\n <cui-modal-header-tabs [tabs]=\"tabs()\" />\n }\n </ng-container>\n\n <ng-template #estimatedTime>\n {{ ptFormat() }}\n </ng-template>\n\n <ng-template #editor>\n <cui-editor\n [editorApiId]=\"operation.textContainerId\"\n [config]=\"editorConfig()\"\n />\n </ng-template>\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: CuiLetterBoxComponent, selector: "cui-letter-box", inputs: ["letter", "backgroundColor", "size", "shape"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty"] }, { kind: "component", type: ModalHeaderTabsComponent, selector: "cui-modal-header-tabs", inputs: ["tabs", "selectedIndex"] }, { kind: "component", type: ModalHeaderInsertedButtonsComponent, selector: "cui-modal-header-inserted-buttons", outputs: ["unbindClicked"] }, { kind: "component", type: ModalHeaderComponent, selector: "cui-modal-header", inputs: ["heading", "isInserted"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
13850
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ModalOperationPartComponent, isStandalone: true, selector: "cui-modal-operation-part", inputs: { isInserted: { classPropertyName: "isInserted", publicName: "isInserted", isSignal: true, isRequired: false, transformFunction: null }, containerId: { classPropertyName: "containerId", publicName: "containerId", isSignal: true, isRequired: false, transformFunction: null }, quantumId: { classPropertyName: "quantumId", publicName: "quantumId", isSignal: true, isRequired: false, transformFunction: null }, jobId: { classPropertyName: "jobId", publicName: "jobId", isSignal: true, isRequired: false, transformFunction: null }, storageObjectOperation: { classPropertyName: "storageObjectOperation", publicName: "storageObjectOperation", isSignal: true, isRequired: true, transformFunction: null }, environmentUrlForResources: { classPropertyName: "environmentUrlForResources", publicName: "environmentUrlForResources", isSignal: true, isRequired: true, transformFunction: null }, environmentUrlForInstruction: { classPropertyName: "environmentUrlForInstruction", publicName: "environmentUrlForInstruction", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "estimatedTime", first: true, predicate: ["estimatedTime"], descendants: true, isSignal: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (storageObjectOperation().storageElement; as operation) {\n <ng-container *transloco=\"let t\">\n <cui-modal-header\n [heading]=\"operation.title\"\n [isInserted]=\"isInserted()\"\n >\n <cui-letter-box\n cuiModalHeaderIcon\n letter=\"o\"\n backgroundColor=\"var(--cui-success)\"\n />\n\n @if (isInserted()) {\n <cui-modal-header-inserted-buttons\n cuiModalHeaderButtons\n (unbindClicked)=\"onUnbindOperation()\"\n />\n }\n </cui-modal-header>\n\n @if (tabs().length) {\n <cui-modal-header-tabs [tabs]=\"tabs()\" />\n }\n </ng-container>\n\n <ng-template #estimatedTime>\n {{ ptFormat() }}\n </ng-template>\n\n <ng-template #editor>\n <cui-editor\n [editorApiId]=\"operation.textContainerId\"\n [config]=\"editorConfig()\"\n />\n </ng-template>\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: CuiLetterBoxComponent, selector: "cui-letter-box", inputs: ["letter", "backgroundColor", "size", "shape"] }, { kind: "component", type: CuiEditorComponent, selector: "cui-editor", inputs: ["editorApiId", "config", "requestSize"], outputs: ["editorEmpty", "editorReady"] }, { kind: "component", type: ModalHeaderTabsComponent, selector: "cui-modal-header-tabs", inputs: ["tabs", "selectedIndex"] }, { kind: "component", type: ModalHeaderInsertedButtonsComponent, selector: "cui-modal-header-inserted-buttons", outputs: ["unbindClicked"] }, { kind: "component", type: ModalHeaderComponent, selector: "cui-modal-header", inputs: ["heading", "isInserted"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
13766
13851
  }
13767
13852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalOperationPartComponent, decorators: [{
13768
13853
  type: Component,