@libs-ui/components-preview-file 0.2.356-12 → 0.2.356-14

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.
@@ -20,6 +20,9 @@ export class LibsUiComponentsPreviewFileComponent {
20
20
  untracked(() => this.loading.set(true));
21
21
  const mimeType = file.mimetype || file.file?.type;
22
22
  const url = file.url || file.origin_url;
23
+ if (this.isSourceIframe()) {
24
+ return { ...file, urlFile: url };
25
+ }
23
26
  if (mimeType && this.mineTypeMicroSoftSupport().includes(mimeType)) {
24
27
  return { ...file, urlFile: `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(url || '')}` };
25
28
  }
@@ -29,6 +32,7 @@ export class LibsUiComponentsPreviewFileComponent {
29
32
  index = model.required();
30
33
  data = input.required();
31
34
  buttons = input();
35
+ isSourceIframe = input();
32
36
  outClose = output();
33
37
  constructor(linkImageError) {
34
38
  this.linkImageError = linkImageError;
@@ -69,7 +73,7 @@ export class LibsUiComponentsPreviewFileComponent {
69
73
  event.target.src = this.linkImageError;
70
74
  }
71
75
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsPreviewFileComponent, deps: [{ token: LINK_IMAGE_ERROR_TOKEN_INJECT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
72
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsPreviewFileComponent, isStandalone: true, selector: "libs_ui-components-preview_file", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange", outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "pipe", type: LibsUiPipesCheckFileExtensionPipe, name: "LibsUiPipesCheckFileExtensionPipe" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsPreviewFileComponent, isStandalone: true, selector: "libs_ui-components-preview_file", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null }, isSourceIframe: { classPropertyName: "isSourceIframe", publicName: "isSourceIframe", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange", outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile ?? '' | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "pipe", type: LibsUiPipesCheckFileExtensionPipe, name: "LibsUiPipesCheckFileExtensionPipe" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
77
  }
74
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsPreviewFileComponent, decorators: [{
75
79
  type: Component,
@@ -82,11 +86,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
82
86
  LibsUiComponentsButtonsButtonComponent,
83
87
  LibsUiPipesCheckFileExtensionPipe,
84
88
  LibsUiComponentsSpinnerComponent,
85
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n" }]
89
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile ?? '' | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n" }]
86
90
  }], ctorParameters: () => [{ type: undefined, decorators: [{
87
91
  type: Optional
88
92
  }, {
89
93
  type: Inject,
90
94
  args: [LINK_IMAGE_ERROR_TOKEN_INJECT]
91
95
  }] }] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wcmV2aWV3LWZpbGUvc3JjL3ByZXZpZXctZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcHJldmlldy1maWxlL3NyYy9wcmV2aWV3LWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQVcsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUIvRCxNQUFNLE9BQU8sb0NBQW9DO0lBMEJ3QjtJQXpCN0QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcs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aWpCQUN0QyxpQ0FBaUMsMEVBQ2pDLGdDQUFnQzs7NEZBSXZCLG9DQUFvQztrQkFqQmhELFNBQVM7K0JBRUUsaUNBQWlDLGNBRS9CLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3dCQUM1QixpQ0FBaUM7d0JBQ2pDLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0QyxpQ0FBaUM7d0JBQ2pDLGdDQUFnQztxQkFDakMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQTRCbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEluamVjdCwgaW5wdXQsIG1vZGVsLCBPcHRpb25hbCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJ1dHRvbiwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1za2VsZXRvbic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBJRXZlbnQsIElGaWxlIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NoZWNrRmlsZUV4dGVuc2lvblBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jaGVjay1maWxlLWV4dGVuc2lvbic7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtc2VjdXJpdHktdHJ1c3QnO1xuaW1wb3J0IHsgTElOS19JTUFHRV9FUlJPUl9UT0tFTl9JTkpFQ1QgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wcmV2aWV3X2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTW9kYWxDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNTZWN1cml0eVRydXN0UGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU2tlbGV0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDaGVja0ZpbGVFeHRlbnNpb25QaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1ByZXZpZXdGaWxlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBmaWxlVmlldyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaWxlID0gdGhpcy5kYXRhKClbdGhpcy5pbmRleCgpXTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IGZpbGUubWltZXR5cGUgfHwgZmlsZS5maWxlPy50eXBlO1xuICAgIGNvbnN0IHVybCA9IGZpbGUudXJsIHx8IGZpbGUub3JpZ2luX3VybDtcblxuICAgIGlmIChtaW1lVHlwZSAmJiB0aGlzLm1pbmVUeXBlTWljcm9Tb2Z0U3VwcG9ydCgpLmluY2x1ZGVzKG1pbWVUeXBlKSkge1xuICAgICAgcmV0dXJuIHsgLi4uZmlsZSwgdXJsRmlsZTogYGh0dHBzOi8vdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tL29wL2VtYmVkLmFzcHg/c3JjPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCB8fCAnJyl9YCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmZpbGUsIHVybEZpbGU6IGBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL3VtZC5lZHUvdmlld2VyP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwgfHwgJycpfSZlbWJlZGRlZD10cnVlYCB9O1xuICB9KTtcblxuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGluZGV4ID0gbW9kZWwucmVxdWlyZWQ8bnVtYmVyPigpO1xuICByZWFkb25seSBkYXRhID0gaW5wdXQucmVxdWlyZWQ8SUZpbGVbXT4oKTtcbiAgcmVhZG9ubHkgYnV0dG9ucyA9IGlucHV0PElCdXR0b25bXT4oKTtcblxuICByZWFkb25seSBvdXRDbG9zZSA9IG91dHB1dDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTElOS19JTUFHRV9FUlJPUl9UT0tFTl9JTkpFQ1QpIHByaXZhdGUgbGlua0ltYWdlRXJyb3I6IHN0cmluZykge31cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlck9uTG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ2xvc2UodHlwZTogVFlQRV9NT0RBTF9FVkVOVCkge1xuICAgIGlmICh0eXBlID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLm91dENsb3NlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1pbmVUeXBlTWljcm9Tb2Z0U3VwcG9ydCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC4xMicsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZScsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb0VuYWJsZWQuMTInLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3cnLFxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclByZXYoKSB7XG4gICAgdGhpcy5pbmRleC51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSAtIDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJOZXh0KCkge1xuICAgIHRoaXMuaW5kZXgudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVySW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubGlua0ltYWdlRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMubGlua0ltYWdlRXJyb3I7XG4gIH1cbn1cbiIsIjxsaWJzX3VpLWNvbXBvbmVudHMtbW9kYWxcbiAgW21pbldpZHRoXT1cIicxMjAwcHgnXCJcbiAgW2hlYWRlckNvbmZpZ109XCJ7IGlnbm9yZUhlYWRlclRoZW1lOiB0cnVlLCBjbGFzc0J1dHRvbkNsb3NlSW5jbHVkZTogJyFtci1bMjRweF0nIH1cIlxuICBbYm9keUNvbmZpZ109XCJ7IGNsYXNzSW5jbHVkZTogJyFwLTAnLCBzY3JvbGxPdmVybGF5T3B0aW9uczogeyBzY3JvbGxYOiAnaGlkZGVuJywgc2Nyb2xsWTogJ2hpZGRlbicgfSB9XCJcbiAgW2Zvb3RlckNvbmZpZ109XCJ7IGhpZGRlbjogdHJ1ZSB9XCJcbiAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gIFtidXR0b25zRm9vdGVyXT1cIltdXCJcbiAgW21vZGVdPVwiJ2NlbnRlcidcIlxuICAob3V0RXZlbnQpPVwiaGFuZGxlckNsb3NlKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImxpYnMtdWktbW9kYWwtaGVhZGVyLWN1c3RvbSB3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1pbi13LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1sLVsyNHB4XSBtci1bOHB4XSBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWluLXctMCBnYXAtWzE2cHhdXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0yLzggZmxleC0xXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBsaWJzLXVpLWZvbnQtaDRzIG1pbi13LTAgdy00LzgganVzdGlmeS1jZW50ZXIgZmxleC0xXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlclxuICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7IHpJbmRleDogekluZGV4KCkgfVwiPlxuICAgICAgICAgIHt7IGZpbGVWaWV3KCk/Lm5hbWUgfX1cbiAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChidXR0b25zKCk/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtWzhweF0gaXRlbXMtY2VudGVyIHctMi84IGp1c3RpZnktZW5kIGZsZXgtMVwiPlxuICAgICAgICAgIEBmb3IgKGJ1dHRvbiBvZiBidXR0b25zKCk7IHRyYWNrIGJ1dHRvbi5rZXkpIHtcbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGUgfHwgJ2J1dHRvbi10aGlyZCdcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiYnV0dG9uLmxhYmVsIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiYnV0dG9uLmNsYXNzSWNvbkxlZnQgfHwgJydcIlxuICAgICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cImJ1dHRvbi5pY29uT25seVR5cGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cImJ1dHRvbi5jbGFzc0luY2x1ZGUgfHwgJyFweS1bNHB4XSAhcHgtWzEycHhdJ1wiXG4gICAgICAgICAgICAgIChvdXRDbGljayk9XCJidXR0b24uYWN0aW9uPy4oaW5kZXgoKSlcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1bMTJweF0gbGlicy11aS1ib3JkZXItbGVmdC1nZW5lcmFsXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImxpYnMtdWktbW9kYWwtYm9keS1jdXN0b20gaC1mdWxsIHctZnVsbCBmbGV4IHJvdW5kZWQtYi1bOHB4XSBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cbiAgICBAaWYgKGluZGV4KCkgPiAwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs1MCVdIGxlZnQtWzI0cHhdIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXktWzUwJV0gei1bMV1cIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgIFt0eXBlXT1cIididXR0b24tb3V0bGluZSdcIlxuICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCInIXAtWzExcHhdICFyb3VuZGVkLVs4cHhdJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiJ2xpYnMtdWktaWNvbi1jaGV2cm9uLXJpZ2h0IHJvdGF0ZS0xODAgYmVmb3JlOiF0ZXh0LVsyMHB4XSdcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyUHJldigpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGZpbGVWaWV3KCk7IGFzIGZpbGVWaWV3KSB7XG4gICAgICBAaWYgKGZpbGVWaWV3IHwgTGlic1VpUGlwZXNDaGVja0ZpbGVFeHRlbnNpb25QaXBlOiAnaW1hZ2UnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIHJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgQGlmIChmaWxlVmlldy51cmwgfHwgZmlsZVZpZXcub3JpZ2luX3VybDsgYXMgdXJsKSB7XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXgtdy1mdWxsIG1heC1oLWZ1bGwgb2JqZWN0LWNvbnRhaW5cIlxuICAgICAgICAgICAgICAobG9hZCk9XCJoYW5kbGVyT25Mb2FkKClcIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckltYWdlRXJyb3IoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXIgW3NpemVdPVwiJ21lZGl1bSdcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGlmcmFtZVxuICAgICAgICAgIGlkPVwiZ29vZ2xlXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cImxvYWRpbmcoKVwiXG4gICAgICAgICAgW3NyY109XCJmaWxlVmlldy51cmxGaWxlIHwgTGlic1VpUGlwZXNTZWN1cml0eVRydXN0UGlwZTogJ3Jlc291cmNlVXJsJyB8IGFzeW5jXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgICAgICAgYWxsb3dmdWxsc2NyZWVuPVwiYWxsb3dmdWxsc2NyZWVuXCJcbiAgICAgICAgICAobG9hZCk9XCJoYW5kbGVyT25Mb2FkKClcIj48L2lmcmFtZT5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNrZWxldG9uIFtjbGFzc109XCIndy1mdWxsIGgtZnVsbCdcIiAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKGluZGV4KCkgPCBkYXRhKCkubGVuZ3RoIC0gMSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs1MCVdIHJpZ2h0LVsyNHB4XSB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS15LVs1MCVdIHotWzFdXCI+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbi1vdXRsaW5lJ1wiXG4gICAgICAgICAgICBbaWNvbk9ubHlUeXBlXT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCInIXAtWzExcHhdICFyb3VuZGVkLVs4cHhdJ1wiXG4gICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgYmVmb3JlOiF0ZXh0LVsyMHB4XSdcIlxuICAgICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJOZXh0KClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9saWJzX3VpLWNvbXBvbmVudHMtbW9kYWw+XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wcmV2aWV3LWZpbGUvc3JjL3ByZXZpZXctZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcHJldmlldy1maWxlL3NyYy9wcmV2aWV3LWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQVcsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRyxPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUIvRCxNQUFNLE9BQU8sb0NBQW9DO0lBK0J3QjtJQTlCN0QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUNsRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLHNEQUFzRCxrQkFBa0IsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JILENBQUM7UUFFRCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdEQUFnRCxrQkFBa0IsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDN0gsQ0FBQyxDQUFDLENBQUM7SUFFTSxNQUFNLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDekIsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxLQUFLLEVBQWEsQ0FBQztJQUM3QixjQUFjLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFbEMsUUFBUSxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRW5DLFlBQXVFLGNBQXNCO1FBQXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO0lBQUcsQ0FBQztJQUV2RixLQUFLLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFzQjtRQUNqRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU87WUFDTCxvQkFBb0I7WUFDcEIseUVBQXlFO1lBQ3pFLHlFQUF5RTtZQUN6RSxtRUFBbUU7WUFDbkUsZ0RBQWdEO1lBQ2hELDBCQUEwQjtZQUMxQixzRUFBc0U7WUFDdEUsK0JBQStCO1lBQy9CLDJFQUEyRTtZQUMzRSw0REFBNEQ7WUFDNUQsd0VBQXdFO1NBQ3pFLENBQUM7SUFDSixDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFZO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFDQSxLQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNyRCxDQUFDO3dHQXhFVSxvQ0FBb0Msa0JBK0JmLDZCQUE2Qjs0RkEvQmxELG9DQUFvQyx1eEJDN0JqRCx3dUhBd0ZBLHVDRHRFSSxTQUFTLDhDQUNULDhCQUE4Qiw2d0JBQzlCLDRCQUE0QixxRUFDNUIsaUNBQWlDLDRGQUNqQyxnQ0FBZ0Msb2dCQUNoQyxzQ0FBc0MsaWpCQUN0QyxpQ0FBaUMsMEVBQ2pDLGdDQUFnQzs7NEZBSXZCLG9DQUFvQztrQkFqQmhELFNBQVM7K0JBRUUsaUNBQWlDLGNBRS9CLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3dCQUM1QixpQ0FBaUM7d0JBQ2pDLGdDQUFnQzt3QkFDaEMsc0NBQXNDO3dCQUN0QyxpQ0FBaUM7d0JBQ2pDLGdDQUFnQztxQkFDakMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQWlDbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEluamVjdCwgaW5wdXQsIG1vZGVsLCBPcHRpb25hbCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJ1dHRvbiwgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXInO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1NrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1za2VsZXRvbic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc3Bpbm5lcic7XG5pbXBvcnQgeyBJRXZlbnQsIElGaWxlIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc0NoZWNrRmlsZUV4dGVuc2lvblBpcGUgfSBmcm9tICdAbGlicy11aS9waXBlcy1jaGVjay1maWxlLWV4dGVuc2lvbic7XG5pbXBvcnQgeyBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlIH0gZnJvbSAnQGxpYnMtdWkvcGlwZXMtc2VjdXJpdHktdHJ1c3QnO1xuaW1wb3J0IHsgTElOS19JTUFHRV9FUlJPUl9UT0tFTl9JTkpFQ1QgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wcmV2aWV3X2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzTW9kYWxDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNTZWN1cml0eVRydXN0UGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzU2tlbGV0b25Db21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDaGVja0ZpbGVFeHRlbnNpb25QaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c1ByZXZpZXdGaWxlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBmaWxlVmlldyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaWxlID0gdGhpcy5kYXRhKClbdGhpcy5pbmRleCgpXTtcblxuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKTtcbiAgICBjb25zdCBtaW1lVHlwZSA9IGZpbGUubWltZXR5cGUgfHwgZmlsZS5maWxlPy50eXBlO1xuICAgIGNvbnN0IHVybCA9IGZpbGUudXJsIHx8IGZpbGUub3JpZ2luX3VybDtcblxuICAgIGlmICh0aGlzLmlzU291cmNlSWZyYW1lKCkpIHtcbiAgICAgIHJldHVybiB7IC4uLmZpbGUsIHVybEZpbGU6IHVybCB9O1xuICAgIH1cblxuICAgIGlmIChtaW1lVHlwZSAmJiB0aGlzLm1pbmVUeXBlTWljcm9Tb2Z0U3VwcG9ydCgpLmluY2x1ZGVzKG1pbWVUeXBlKSkge1xuICAgICAgcmV0dXJuIHsgLi4uZmlsZSwgdXJsRmlsZTogYGh0dHBzOi8vdmlldy5vZmZpY2VhcHBzLmxpdmUuY29tL29wL2VtYmVkLmFzcHg/c3JjPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCB8fCAnJyl9YCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmZpbGUsIHVybEZpbGU6IGBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL3VtZC5lZHUvdmlld2VyP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwgfHwgJycpfSZlbWJlZGRlZD10cnVlYCB9O1xuICB9KTtcblxuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGluZGV4ID0gbW9kZWwucmVxdWlyZWQ8bnVtYmVyPigpO1xuICByZWFkb25seSBkYXRhID0gaW5wdXQucmVxdWlyZWQ8SUZpbGVbXT4oKTtcbiAgcmVhZG9ubHkgYnV0dG9ucyA9IGlucHV0PElCdXR0b25bXT4oKTtcbiAgcmVhZG9ubHkgaXNTb3VyY2VJZnJhbWUgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChMSU5LX0lNQUdFX0VSUk9SX1RPS0VOX0lOSkVDVCkgcHJpdmF0ZSBsaW5rSW1hZ2VFcnJvcjogc3RyaW5nKSB7fVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyT25Mb2FkKCkge1xuICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJDbG9zZSh0eXBlOiBUWVBFX01PREFMX0VWRU5UKSB7XG4gICAgaWYgKHR5cGUgPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMub3V0Q2xvc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWluZVR5cGVNaWNyb1NvZnRTdXBwb3J0KCkge1xuICAgIHJldHVybiBbXG4gICAgICAnYXBwbGljYXRpb24vbXN3b3JkJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMicsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsXG4gICAgXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUHJldigpIHtcbiAgICB0aGlzLmluZGV4LnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlIC0gMSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlck5leHQoKSB7XG4gICAgdGhpcy5pbmRleC51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJJbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5saW5rSW1hZ2VFcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAoZXZlbnQgYXMgSUV2ZW50KS50YXJnZXQuc3JjID0gdGhpcy5saW5rSW1hZ2VFcnJvcjtcbiAgfVxufVxuIiwiPGxpYnNfdWktY29tcG9uZW50cy1tb2RhbFxuICBbbWluV2lkdGhdPVwiJzEyMDBweCdcIlxuICBbaGVhZGVyQ29uZmlnXT1cInsgaWdub3JlSGVhZGVyVGhlbWU6IHRydWUsIGNsYXNzQnV0dG9uQ2xvc2VJbmNsdWRlOiAnIW1yLVsyNHB4XScgfVwiXG4gIFtib2R5Q29uZmlnXT1cInsgY2xhc3NJbmNsdWRlOiAnIXAtMCcsIHNjcm9sbE92ZXJsYXlPcHRpb25zOiB7IHNjcm9sbFg6ICdoaWRkZW4nLCBzY3JvbGxZOiAnaGlkZGVuJyB9IH1cIlxuICBbZm9vdGVyQ29uZmlnXT1cInsgaGlkZGVuOiB0cnVlIH1cIlxuICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgW2J1dHRvbnNGb290ZXJdPVwiW11cIlxuICBbbW9kZV09XCInY2VudGVyJ1wiXG4gIChvdXRFdmVudCk9XCJoYW5kbGVyQ2xvc2UoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwibGlicy11aS1tb2RhbC1oZWFkZXItY3VzdG9tIHctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWluLXctMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbWwtWzI0cHhdIG1yLVs4cHhdIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtaW4tdy0wIGdhcC1bMTZweF1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvOCBmbGV4LTFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGxpYnMtdWktZm9udC1oNHMgbWluLXctMCB3LTQvOCBqdXN0aWZ5LWNlbnRlciBmbGV4LTFcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbY29uZmlnXT1cInsgekluZGV4OiB6SW5kZXgoKSB9XCI+XG4gICAgICAgICAge3sgZmlsZVZpZXcoKT8ubmFtZSB9fVxuICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGJ1dHRvbnMoKT8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC1bOHB4XSBpdGVtcy1jZW50ZXIgdy0yLzgganVzdGlmeS1lbmQgZmxleC0xXCI+XG4gICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGJ1dHRvbnMoKTsgdHJhY2sgYnV0dG9uLmtleSkge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZSB8fCAnYnV0dG9uLXRoaXJkJ1wiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b24ubGFiZWwgfHwgJydcIlxuICAgICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCJidXR0b24uY2xhc3NJY29uTGVmdCB8fCAnJ1wiXG4gICAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwiYnV0dG9uLmljb25Pbmx5VHlwZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwiYnV0dG9uLmNsYXNzSW5jbHVkZSB8fCAnIXB5LVs0cHhdICFweC1bMTJweF0nXCJcbiAgICAgICAgICAgICAgKG91dENsaWNrKT1cImJ1dHRvbi5hY3Rpb24/LihpbmRleCgpKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLVsxMnB4XSBsaWJzLXVpLWJvcmRlci1sZWZ0LWdlbmVyYWxcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGlicy11aS1tb2RhbC1ib2R5LWN1c3RvbSBoLWZ1bGwgdy1mdWxsIGZsZXggcm91bmRlZC1iLVs4cHhdIG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZVwiPlxuICAgIEBpZiAoaW5kZXgoKSA+IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtWzUwJV0gbGVmdC1bMjRweF0gdHJhbnNmb3JtIC10cmFuc2xhdGUteS1bNTAlXSB6LVsxXVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbi1vdXRsaW5lJ1wiXG4gICAgICAgICAgW2ljb25Pbmx5VHlwZV09XCJ0cnVlXCJcbiAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIichcC1bMTFweF0gIXJvdW5kZWQtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLWNoZXZyb24tcmlnaHQgcm90YXRlLTE4MCBiZWZvcmU6IXRleHQtWzIwcHhdJ1wiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJQcmV2KClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoZmlsZVZpZXcoKTsgYXMgZmlsZVZpZXcpIHtcbiAgICAgIEBpZiAoZmlsZVZpZXcgfCBMaWJzVWlQaXBlc0NoZWNrRmlsZUV4dGVuc2lvblBpcGU6ICdpbWFnZScpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICBAaWYgKGZpbGVWaWV3LnVybCB8fCBmaWxlVmlldy5vcmlnaW5fdXJsOyBhcyB1cmwpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJ1cmxcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1heC13LWZ1bGwgbWF4LWgtZnVsbCBvYmplY3QtY29udGFpblwiXG4gICAgICAgICAgICAgIChsb2FkKT1cImhhbmRsZXJPbkxvYWQoKVwiXG4gICAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVySW1hZ2VFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc3Bpbm5lciBbc2l6ZV09XCInbWVkaXVtJ1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8aWZyYW1lXG4gICAgICAgICAgaWQ9XCJnb29nbGVcIlxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwibG9hZGluZygpXCJcbiAgICAgICAgICBbc3JjXT1cImZpbGVWaWV3LnVybEZpbGUgPz8gJycgfCBMaWJzVWlQaXBlc1NlY3VyaXR5VHJ1c3RQaXBlOiAncmVzb3VyY2VVcmwnIHwgYXN5bmNcIlxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgICAgZnJhbWVib3JkZXI9XCIwXCJcbiAgICAgICAgICBhbGxvd2Z1bGxzY3JlZW49XCJhbGxvd2Z1bGxzY3JlZW5cIlxuICAgICAgICAgIChsb2FkKT1cImhhbmRsZXJPbkxvYWQoKVwiPjwvaWZyYW1lPlxuICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtc2tlbGV0b24gW2NsYXNzXT1cIid3LWZ1bGwgaC1mdWxsJ1wiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoaW5kZXgoKSA8IGRhdGEoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtWzUwJV0gcmlnaHQtWzI0cHhdIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXktWzUwJV0gei1bMV1cIj5cbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uLW91dGxpbmUnXCJcbiAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIichcC1bMTFweF0gIXJvdW5kZWQtWzhweF0nXCJcbiAgICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIidsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCBiZWZvcmU6IXRleHQtWzIwcHhdJ1wiXG4gICAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlck5leHQoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cbiAgPC9kaXY+XG48L2xpYnNfdWktY29tcG9uZW50cy1tb2RhbD5cbiJdfQ==
@@ -21,6 +21,9 @@ class LibsUiComponentsPreviewFileComponent {
21
21
  untracked(() => this.loading.set(true));
22
22
  const mimeType = file.mimetype || file.file?.type;
23
23
  const url = file.url || file.origin_url;
24
+ if (this.isSourceIframe()) {
25
+ return { ...file, urlFile: url };
26
+ }
24
27
  if (mimeType && this.mineTypeMicroSoftSupport().includes(mimeType)) {
25
28
  return { ...file, urlFile: `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(url || '')}` };
26
29
  }
@@ -30,6 +33,7 @@ class LibsUiComponentsPreviewFileComponent {
30
33
  index = model.required();
31
34
  data = input.required();
32
35
  buttons = input();
36
+ isSourceIframe = input();
33
37
  outClose = output();
34
38
  constructor(linkImageError) {
35
39
  this.linkImageError = linkImageError;
@@ -70,7 +74,7 @@ class LibsUiComponentsPreviewFileComponent {
70
74
  event.target.src = this.linkImageError;
71
75
  }
72
76
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsPreviewFileComponent, deps: [{ token: LINK_IMAGE_ERROR_TOKEN_INJECT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsPreviewFileComponent, isStandalone: true, selector: "libs_ui-components-preview_file", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange", outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "pipe", type: LibsUiPipesCheckFileExtensionPipe, name: "LibsUiPipesCheckFileExtensionPipe" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsPreviewFileComponent, isStandalone: true, selector: "libs_ui-components-preview_file", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null }, isSourceIframe: { classPropertyName: "isSourceIframe", publicName: "isSourceIframe", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange", outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile ?? '' | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }, { kind: "pipe", type: LibsUiPipesSecurityTrustPipe, name: "LibsUiPipesSecurityTrustPipe" }, { kind: "component", type: LibsUiComponentsSkeletonComponent, selector: "libs_ui-components-skeleton", inputs: ["config"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "pipe", type: LibsUiPipesCheckFileExtensionPipe, name: "LibsUiPipesCheckFileExtensionPipe" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
78
  }
75
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsPreviewFileComponent, decorators: [{
76
80
  type: Component,
@@ -83,7 +87,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
83
87
  LibsUiComponentsButtonsButtonComponent,
84
88
  LibsUiPipesCheckFileExtensionPipe,
85
89
  LibsUiComponentsSpinnerComponent,
86
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n" }]
90
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile ?? '' | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n" }]
87
91
  }], ctorParameters: () => [{ type: undefined, decorators: [{
88
92
  type: Optional
89
93
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-preview-file.mjs","sources":["../../../../../libs-ui/components/preview-file/src/preview-file.component.ts","../../../../../libs-ui/components/preview-file/src/preview-file.component.html","../../../../../libs-ui/components/preview-file/src/libs-ui-components-preview-file.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Inject, input, model, Optional, output, signal, untracked } from '@angular/core';\nimport { IButton, LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { LibsUiComponentsSkeletonComponent } from '@libs-ui/components-skeleton';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { IEvent, IFile } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesCheckFileExtensionPipe } from '@libs-ui/pipes-check-file-extension';\nimport { LibsUiPipesSecurityTrustPipe } from '@libs-ui/pipes-security-trust';\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-preview_file',\n templateUrl: './preview-file.component.html',\n standalone: true,\n imports: [\n AsyncPipe,\n LibsUiComponentsModalComponent,\n LibsUiPipesSecurityTrustPipe,\n LibsUiComponentsSkeletonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiPipesCheckFileExtensionPipe,\n LibsUiComponentsSpinnerComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPreviewFileComponent {\n protected loading = signal(true);\n protected fileView = computed(() => {\n const file = this.data()[this.index()];\n\n if (!file) {\n return null;\n }\n untracked(() => this.loading.set(true));\n const mimeType = file.mimetype || file.file?.type;\n const url = file.url || file.origin_url;\n\n if (mimeType && this.mineTypeMicroSoftSupport().includes(mimeType)) {\n return { ...file, urlFile: `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(url || '')}` };\n }\n\n return { ...file, urlFile: `https://docs.google.com/a/umd.edu/viewer?url=${encodeURIComponent(url || '')}&embedded=true` };\n });\n\n readonly zIndex = input<number>();\n readonly index = model.required<number>();\n readonly data = input.required<IFile[]>();\n readonly buttons = input<IButton[]>();\n\n readonly outClose = output<void>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {}\n\n protected async handlerOnLoad() {\n this.loading.set(false);\n }\n\n protected async handlerClose(type: TYPE_MODAL_EVENT) {\n if (type === 'close') {\n this.outClose.emit();\n }\n }\n\n private mineTypeMicroSoftSupport() {\n return [\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n ];\n }\n\n protected handlerPrev() {\n this.index.update((value) => value - 1);\n }\n\n protected handlerNext() {\n this.index.update((value) => value + 1);\n }\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n}\n","<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-preview-file.mjs","sources":["../../../../../libs-ui/components/preview-file/src/preview-file.component.ts","../../../../../libs-ui/components/preview-file/src/preview-file.component.html","../../../../../libs-ui/components/preview-file/src/libs-ui-components-preview-file.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Inject, input, model, Optional, output, signal, untracked } from '@angular/core';\nimport { IButton, LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsModalComponent, TYPE_MODAL_EVENT } from '@libs-ui/components-modal';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { LibsUiComponentsSkeletonComponent } from '@libs-ui/components-skeleton';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { IEvent, IFile } from '@libs-ui/interfaces-types';\nimport { LibsUiPipesCheckFileExtensionPipe } from '@libs-ui/pipes-check-file-extension';\nimport { LibsUiPipesSecurityTrustPipe } from '@libs-ui/pipes-security-trust';\nimport { LINK_IMAGE_ERROR_TOKEN_INJECT } from '@libs-ui/utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-preview_file',\n templateUrl: './preview-file.component.html',\n standalone: true,\n imports: [\n AsyncPipe,\n LibsUiComponentsModalComponent,\n LibsUiPipesSecurityTrustPipe,\n LibsUiComponentsSkeletonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiPipesCheckFileExtensionPipe,\n LibsUiComponentsSpinnerComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPreviewFileComponent {\n protected loading = signal(true);\n protected fileView = computed(() => {\n const file = this.data()[this.index()];\n\n if (!file) {\n return null;\n }\n untracked(() => this.loading.set(true));\n const mimeType = file.mimetype || file.file?.type;\n const url = file.url || file.origin_url;\n\n if (this.isSourceIframe()) {\n return { ...file, urlFile: url };\n }\n\n if (mimeType && this.mineTypeMicroSoftSupport().includes(mimeType)) {\n return { ...file, urlFile: `https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(url || '')}` };\n }\n\n return { ...file, urlFile: `https://docs.google.com/a/umd.edu/viewer?url=${encodeURIComponent(url || '')}&embedded=true` };\n });\n\n readonly zIndex = input<number>();\n readonly index = model.required<number>();\n readonly data = input.required<IFile[]>();\n readonly buttons = input<IButton[]>();\n readonly isSourceIframe = input<boolean>();\n\n readonly outClose = output<void>();\n\n constructor(@Optional() @Inject(LINK_IMAGE_ERROR_TOKEN_INJECT) private linkImageError: string) {}\n\n protected async handlerOnLoad() {\n this.loading.set(false);\n }\n\n protected async handlerClose(type: TYPE_MODAL_EVENT) {\n if (type === 'close') {\n this.outClose.emit();\n }\n }\n\n private mineTypeMicroSoftSupport() {\n return [\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n ];\n }\n\n protected handlerPrev() {\n this.index.update((value) => value - 1);\n }\n\n protected handlerNext() {\n this.index.update((value) => value + 1);\n }\n\n protected async handlerImageError(event: Event) {\n if (!this.linkImageError) {\n return;\n }\n (event as IEvent).target.src = this.linkImageError;\n }\n}\n","<libs_ui-components-modal\n [minWidth]=\"'1200px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true, classButtonCloseInclude: '!mr-[24px]' }\"\n [bodyConfig]=\"{ classInclude: '!p-0', scrollOverlayOptions: { scrollX: 'hidden', scrollY: 'hidden' } }\"\n [footerConfig]=\"{ hidden: true }\"\n [zIndex]=\"zIndex()\"\n [buttonsFooter]=\"[]\"\n [mode]=\"'center'\"\n (outEvent)=\"handlerClose($event)\">\n <div class=\"libs-ui-modal-header-custom w-full flex items-center justify-between min-w-0\">\n <div class=\"w-full ml-[24px] mr-[8px] flex justify-between items-center min-w-0 gap-[16px]\">\n <div class=\"w-2/8 flex-1\"></div>\n <div class=\"flex libs-ui-font-h4s min-w-0 w-4/8 justify-center flex-1\">\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{ zIndex: zIndex() }\">\n {{ fileView()?.name }}\n </libs_ui-components-popover>\n </div>\n @if (buttons()?.length) {\n <div class=\"flex gap-[8px] items-center w-2/8 justify-end flex-1\">\n @for (button of buttons(); track button.key) {\n <libs_ui-components-buttons-button\n [type]=\"button.type || 'button-third'\"\n [label]=\"button.label || ''\"\n [classIconLeft]=\"button.classIconLeft || ''\"\n [iconOnlyType]=\"button.iconOnlyType || false\"\n [classInclude]=\"button.classInclude || '!py-[4px] !px-[12px]'\"\n (outClick)=\"button.action?.(index())\" />\n }\n <div class=\"h-[12px] libs-ui-border-left-general\"></div>\n </div>\n }\n </div>\n </div>\n <div class=\"libs-ui-modal-body-custom h-full w-full flex rounded-b-[8px] overflow-hidden relative\">\n @if (index() > 0) {\n <div class=\"absolute top-[50%] left-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right rotate-180 before:!text-[20px]'\"\n (outClick)=\"handlerPrev()\" />\n </div>\n }\n @if (fileView(); as fileView) {\n @if (fileView | LibsUiPipesCheckFileExtensionPipe: 'image') {\n <div class=\"w-full h-full relative flex items-center justify-center\">\n @if (fileView.url || fileView.origin_url; as url) {\n <img\n [src]=\"url\"\n alt=\"\"\n class=\"max-w-full max-h-full object-contain\"\n (load)=\"handlerOnLoad()\"\n (error)=\"handlerImageError($event)\" />\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"'medium'\" />\n }\n }\n </div>\n } @else {\n <iframe\n id=\"google\"\n [class.hidden]=\"loading()\"\n [src]=\"fileView.urlFile ?? '' | LibsUiPipesSecurityTrustPipe: 'resourceUrl' | async\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen=\"allowfullscreen\"\n (load)=\"handlerOnLoad()\"></iframe>\n @if (loading()) {\n <libs_ui-components-skeleton [class]=\"'w-full h-full'\" />\n }\n }\n @if (index() < data().length - 1) {\n <div class=\"absolute top-[50%] right-[24px] transform -translate-y-[50%] z-[1]\">\n <libs_ui-components-buttons-button\n [type]=\"'button-outline'\"\n [iconOnlyType]=\"true\"\n [classInclude]=\"'!p-[11px] !rounded-[8px]'\"\n [classIconLeft]=\"'libs-ui-icon-chevron-right before:!text-[20px]'\"\n (outClick)=\"handlerNext()\" />\n </div>\n }\n }\n </div>\n</libs_ui-components-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@libs-ui/components-preview-file",
3
- "version": "0.2.356-12",
3
+ "version": "0.2.356-14",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/components-modal": "0.2.356-12",
8
- "@libs-ui/components-skeleton": "0.2.356-12",
9
- "@libs-ui/interfaces-types": "0.2.356-12",
10
- "@libs-ui/pipes-security-trust": "0.2.356-12"
7
+ "@libs-ui/components-modal": "0.2.356-14",
8
+ "@libs-ui/components-skeleton": "0.2.356-14",
9
+ "@libs-ui/interfaces-types": "0.2.356-14",
10
+ "@libs-ui/pipes-security-trust": "0.2.356-14"
11
11
  },
12
12
  "sideEffects": false,
13
13
  "module": "fesm2022/libs-ui-components-preview-file.mjs",
@@ -6,7 +6,7 @@ export declare class LibsUiComponentsPreviewFileComponent {
6
6
  private linkImageError;
7
7
  protected loading: import("@angular/core").WritableSignal<boolean>;
8
8
  protected fileView: import("@angular/core").Signal<{
9
- urlFile: string;
9
+ urlFile: string | undefined;
10
10
  id?: string;
11
11
  name?: string;
12
12
  file?: File;
@@ -25,6 +25,7 @@ export declare class LibsUiComponentsPreviewFileComponent {
25
25
  readonly index: import("@angular/core").ModelSignal<number>;
26
26
  readonly data: import("@angular/core").InputSignal<IFile[]>;
27
27
  readonly buttons: import("@angular/core").InputSignal<IButton[] | undefined>;
28
+ readonly isSourceIframe: import("@angular/core").InputSignal<boolean | undefined>;
28
29
  readonly outClose: import("@angular/core").OutputEmitterRef<void>;
29
30
  constructor(linkImageError: string);
30
31
  protected handlerOnLoad(): Promise<void>;
@@ -34,5 +35,5 @@ export declare class LibsUiComponentsPreviewFileComponent {
34
35
  protected handlerNext(): void;
35
36
  protected handlerImageError(event: Event): Promise<void>;
36
37
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsPreviewFileComponent, [{ optional: true; }]>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsPreviewFileComponent, "libs_ui-components-preview_file", never, { "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; "outClose": "outClose"; }, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsPreviewFileComponent, "libs_ui-components-preview_file", never, { "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "isSourceIframe": { "alias": "isSourceIframe"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; "outClose": "outClose"; }, never, never, true, never>;
38
39
  }