@ruc-lib/tour-guide 2.1.8 → 3.1.1

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.
@@ -397,10 +397,10 @@ class RuclibTourGuideComponent {
397
397
  }
398
398
  }
399
399
  RuclibTourGuideComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTourGuideComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
400
- RuclibTourGuideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTourGuideComponent, selector: "uxp-ruclib-tour-guide", inputs: { rucInputData: "rucInputData", customTheme: "customTheme", showStartButton: "showStartButton", dataSource: "dataSource" }, outputs: { rucEvent: "rucEvent" }, viewQueries: [{ propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n</button>\r\n\r\n<div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n</div>", styles: [".tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
400
+ RuclibTourGuideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTourGuideComponent, selector: "uxp-ruclib-tour-guide", inputs: { rucInputData: "rucInputData", customTheme: "customTheme", showStartButton: "showStartButton", dataSource: "dataSource" }, outputs: { rucEvent: "rucEvent" }, viewQueries: [{ propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"main\">\r\n <button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n </button>\r\n\r\n <div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}.tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }] });
401
401
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTourGuideComponent, decorators: [{
402
402
  type: Component,
403
- args: [{ selector: 'uxp-ruclib-tour-guide', template: "<button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n</button>\r\n\r\n<div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n</div>", styles: [".tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"] }]
403
+ args: [{ selector: 'uxp-ruclib-tour-guide', template: "<div class=\"main\">\r\n <button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n </button>\r\n\r\n <div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}.tour-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:99999;pointer-events:auto;display:flex;align-items:center;justify-content:center}::ng-deep .tour-scroll-lock *{overscroll-behavior:none;overflow:hidden!important;scrollbar-width:none;-ms-overflow-style:none}.tour-popup{position:absolute;padding:0;border-radius:4px;box-shadow:0 4px 12px #0000004d;z-index:10000;pointer-events:auto;display:flex;flex-direction:column;gap:.5rem;font-family:Arial,sans-serif;transition:all .3s ease;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;animation:fadeSlideIn .3s ease-out;-webkit-animation:fadeSlideIn .3s ease-out}.tour-guide-title{margin:5px 0}.tour-guide-action-buttons{display:flex;justify-content:end;gap:.5rem;min-height:45px}.tour-guide-action-buttons button{padding:0rem .5rem;border:none;border-radius:4px;font-size:.9rem;cursor:pointer;transition:background .2s ease;height:25px}.tour-guide-action-buttons button:focus-visible{outline:none!important}.tour-guide-action-buttons button[disabled]{cursor:not-allowed}.tour-guide-step-counter{font-size:.8rem;display:flex;justify-content:start;margin-top:20px}.tour-highlight{position:relative!important;z-index:10000!important;border-radius:4px;transition:box-shadow .3s ease}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hole{position:absolute;width:0px;height:0px;z-index:3;top:0%;left:0%;box-shadow:0 0 0 9999px #000c;background:transparent;border:2px solid #57d914;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px}.tour-popup.rounded{border-radius:12px}.tour-popup.rectangle{border-radius:0}.tour-popup.circle{border-radius:50%;justify-content:center;padding:2rem;text-align:center;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%}.tour-popup.circle .tour-guide-title{padding:0 1rem;justify-content:center}.tour-popup.circle .tour-guide-action-buttons,.tour-popup.circle .tour-guide-step-counter{justify-content:center!important}.mat-mdc-card-header,.mat-mdc-card-content{padding:0 10px!important}.mdc-button{min-width:50px}\n"] }]
404
404
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { rucEvent: [{
405
405
  type: Output
406
406
  }], rucInputData: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ruc-lib-tour-guide.mjs","sources":["../../src/lib/model/default-config.model.ts","../../src/lib/ruclib-tour-guide/ruclib-tour-guide.component.ts","../../src/lib/ruclib-tour-guide/ruclib-tour-guide.component.html","../../src/lib/ruclib-tour-guide.module.ts","../../src/ruc-lib-tour-guide.ts"],"sourcesContent":["import { TourGuideConfig } from \"./tour-guide.model\";\r\n\r\nexport const defaultTourGuideConfig: TourGuideConfig = {\r\n type: \"advance\",\r\n showSkipButton: true,\r\n buttonsFontSize: \"14px\",\r\n titleFontSize: '16px',\r\n contentFontSize: '14px',\r\n buttonsAlignment: 'end',\r\n stepCountAlignment: 'start',\r\n stepCountStartText: 'Step',\r\n stepCountMiddleText: 'of',\r\n skipButtonText: 'Skip',\r\n prevButtonText: 'Back',\r\n nextButtonText: 'Next',\r\n finishButtonText: 'Finish',\r\n highlightBorderColor: '#007bff',\r\n highlightBorderWidth: '2px',\r\n defaultPopupWidth: '250px',\r\n}\r\n\r\nexport const DEFAULT_VALUES = {\r\n arrowRight: 'ArrowRight',\r\n arrowLeft: 'ArrowLeft',\r\n escape: 'Escape',\r\n popup: {width: 300, height: 150, top: 0, left: 0, padding: 10, safeMargin: 64},\r\n startTourButtonLabel: 'Start Tour Guide'\r\n }","import { Component, Input, Output, EventEmitter, Renderer2, OnInit, OnDestroy, ElementRef, ViewChild, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\r\nimport { TourGuideConfig, TourGuideData } from '../model/tour-guide.model';\r\nimport { DEFAULT_VALUES, defaultTourGuideConfig } from '../model/default-config.model';\r\n\r\n@Component({\r\n selector: 'uxp-ruclib-tour-guide',\r\n templateUrl: './ruclib-tour-guide.component.html',\r\n styleUrls: ['./ruclib-tour-guide.component.scss'],\r\n})\r\nexport class RuclibTourGuideComponent implements OnInit, OnDestroy, OnChanges {\r\n @Output() rucEvent = new EventEmitter<any>();\r\n @Input() rucInputData!: TourGuideConfig;\r\n @Input() customTheme: string | undefined;\r\n @Input() showStartButton = false;\r\n @Input() dataSource: Array<TourGuideData> = [];\r\n\r\n @ViewChild('overlayRef') overlayRef!: ElementRef;\r\n\r\n public currentStepIndex = 0;\r\n private currentElement?: HTMLElement;\r\n public popupStyle!: { top: string; left: string };\r\n private originalParent?: HTMLElement;\r\n public showTour = false;\r\n public startTourButtonLabel = DEFAULT_VALUES?.startTourButtonLabel;\r\n private resizeListener: any;\r\n public config = defaultTourGuideConfig;\r\n\r\n /**\r\n * class constructor\r\n * @param tourGuideService \r\n * @param renderer \r\n */\r\n constructor(\r\n private renderer: Renderer2\r\n ) { }\r\n\r\n /**\r\n * handling input data changes\r\n * updating default config with user provided config\r\n * @param changes \r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes['rucInputData'] && changes['rucInputData'].currentValue) {\r\n this.config = { ...this.config, ...changes['rucInputData'].currentValue }\r\n }\r\n }\r\n\r\n /**\r\n * handling change on component initilization\r\n */\r\n ngOnInit() {\r\n document.addEventListener('keydown', this.handleKey);\r\n this.resizeListener = this.debounce(() => this.highlightElement(), 150);\r\n window.addEventListener('resize', this.resizeListener);\r\n\r\n if (!this.showStartButton) {\r\n this.startTour()\r\n }\r\n }\r\n\r\n /**\r\n * this method handle the start of tour guide fetaure\r\n */\r\n startTour() {\r\n this.showTour = true;\r\n this.lockScroll();\r\n setTimeout(() => {\r\n if (!this.originalParent) {\r\n this.originalParent = this.renderer.parentNode(this.overlayRef?.nativeElement);\r\n }\r\n if (this.overlayRef) {\r\n this.renderer.appendChild(document.body, this.overlayRef?.nativeElement);\r\n }\r\n this.currentStepIndex = 0;\r\n if (this.config.type === 'advance') {\r\n this.highlightElement();\r\n }\r\n }, 10)\r\n }\r\n\r\n /**\r\n * this method handle the navigation to next tour guide feature\r\n */\r\n nextStep() {\r\n this.removeHighlight();\r\n this.currentStepIndex++;\r\n if (this.currentStepIndex < this.dataSource.length) {\r\n if (this.config.type === 'advance') this.highlightElement();\r\n } else {\r\n this.currentStepIndex--;\r\n this.showTour = false;\r\n this.unlockScroll();\r\n this.rucEvent.emit({ eventName: 'onTourComplete', eventOutput: null });\r\n if (this.overlayRef) {\r\n this.renderer.removeChild(document.body, this.overlayRef.nativeElement);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * this method allow us to navigate back to previous tour guide feature\r\n */\r\n previousStep() {\r\n if (this.currentStepIndex > 0) {\r\n this.removeHighlight();\r\n this.currentStepIndex--;\r\n if (this.config.type === 'advance') this.highlightElement();\r\n }\r\n }\r\n\r\n /**\r\n * method to skip the tour guide thats in progress\r\n */\r\n skip() {\r\n this.removeHighlight();\r\n this.showTour = false;\r\n this.unlockScroll();\r\n this.rucEvent.emit({ eventName: 'onTourSkip', eventOutput: null });\r\n if (this.overlayRef) {\r\n this.renderer.removeChild(document.body, this.overlayRef.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * method to highlight feature area and changin details popup based on provide config\r\n * @returns \r\n */\r\n private async highlightElement() {\r\n const step = this.dataSource[this.currentStepIndex];\r\n if (this.config.type === 'simple' || !step?.selector) {\r\n return;\r\n }\r\n\r\n // 1. Find and scroll to the element\r\n this.currentElement = await this.findElementAndScroll(step.selector);\r\n if (!this.currentElement) {\r\n return;\r\n }\r\n\r\n // 2. Apply highlight styles\r\n this.applyHighlightStyles(this.currentElement);\r\n\r\n // 3. Calculate and apply popup position\r\n this.calculateAndApplyPopupPosition(this.currentElement, step.position);\r\n\r\n // 4. Create the visual hole in the overlay\r\n this.createTransparentHole();\r\n }\r\n\r\n /**\r\n * Finds an element by its selector, scrolls it into view, and waits for the scroll to complete.\r\n * @param selector The CSS selector for the target element.\r\n * @returns A promise that resolves to the HTMLElement or undefined if not found.\r\n */\r\n private async findElementAndScroll(selector: string): Promise<HTMLElement | undefined> {\r\n const element = document.querySelector(selector) as HTMLElement;\r\n if (!element) {\r\n return undefined;\r\n }\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n await this.waitForScroll();\r\n return element;\r\n }\r\n\r\n /**\r\n * Applies CSS classes and styles to visually highlight the target element.\r\n * @param element The element to highlight.\r\n */\r\n private applyHighlightStyles(element: HTMLElement): void {\r\n this.renderer.addClass(element, 'tour-highlight');\r\n this.renderer.setStyle(element, 'position', 'relative');\r\n this.renderer.setStyle(element, 'z-index', '10000');\r\n }\r\n\r\n /**\r\n * Calculates the optimal position for the tour popup and applies it.\r\n * @param element The highlighted element.\r\n * @param position The desired position ('auto', 'top', 'bottom', 'left', 'right').\r\n */\r\n private calculateAndApplyPopupPosition(element: HTMLElement, position: string = 'auto'): void {\r\n const rect = element.getBoundingClientRect();\r\n const offset = this.getAbsoluteOffset(element);\r\n\r\n // Determine the best position if set to 'auto'\r\n const finalPosition = this.determineAutoPosition(position, rect);\r\n\r\n // Get the top/left coordinates based on the position\r\n let coords = this.computePopupCoordinates(finalPosition, offset, element);\r\n\r\n // Ensure the coordinates are within the viewport\r\n coords = this.clampPopupCoordinates(coords);\r\n\r\n // Apply the final styles to the popup\r\n this.popupStyle = {\r\n top: `${coords.top}px`,\r\n left: `${coords.left}px`\r\n };\r\n\r\n // Ensure the popup itself is visible\r\n this.scrollPopupIntoView();\r\n }\r\n\r\n /**\r\n * Determines the best placement for the popup when position is 'auto'.\r\n * @param position The configured position.\r\n * @param rect The BoundingClientRect of the target element.\r\n * @returns The calculated final position.\r\n */\r\n private determineAutoPosition(position: string, rect: DOMRect): string {\r\n if (position !== 'auto') {\r\n return position;\r\n }\r\n\r\n const { padding, width: popupWidth, height: popupHeight, safeMargin } = DEFAULT_VALUES.popup;\r\n\r\n const fitsTop = rect.top >= popupHeight + padding;\r\n const fitsBottom = window.innerHeight - rect.bottom >= popupHeight + padding + safeMargin;\r\n const fitsRight = window.innerWidth - rect.right >= popupWidth + padding;\r\n const fitsLeft = rect.left >= popupWidth + padding;\r\n\r\n if (fitsRight) return 'right';\r\n if (fitsBottom) return 'bottom';\r\n if (fitsLeft) return 'left';\r\n if (fitsTop) return 'top';\r\n return 'bottom'; // fallback\r\n }\r\n\r\n /**\r\n * Computes the top and left coordinates for the popup based on the target element and desired position.\r\n * @param position The final position for the popup.\r\n * @param offset The absolute offset of the target element.\r\n * @param element The target element.\r\n * @returns An object with top and left coordinates.\r\n */\r\n private computePopupCoordinates(position: string, offset: { top: number, left: number }, element: HTMLElement): { top: number, left: number } {\r\n const { padding, width: popupWidth, height: popupHeight } = DEFAULT_VALUES.popup;\r\n let top = DEFAULT_VALUES.popup.top;\r\n let left = DEFAULT_VALUES.popup.left;\r\n\r\n switch (position) {\r\n case 'top':\r\n top = offset.top - popupHeight - padding - 20;\r\n left = offset.left + element.offsetWidth / 2 - popupWidth / 2;\r\n break;\r\n case 'bottom':\r\n top = offset.top + element.offsetHeight + padding;\r\n left = offset.left + element.offsetWidth / 2 - popupWidth / 2;\r\n break;\r\n case 'left':\r\n top = offset.top + element.offsetHeight / 2 - popupHeight / 2;\r\n left = offset.left - popupWidth - padding + 50;\r\n break;\r\n case 'right':\r\n top = offset.top + element.offsetHeight / 2 - popupHeight / 2;\r\n left = offset.left + element.offsetWidth + padding;\r\n break;\r\n }\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * Clamps the popup's coordinates to ensure it stays within the visible viewport.\r\n * @param coords The calculated top and left coordinates.\r\n * @returns The adjusted coordinates.\r\n */\r\n private clampPopupCoordinates(coords: { top: number, left: number }): { top: number, left: number } {\r\n const { padding, width: popupWidth, height: popupHeight, safeMargin } = DEFAULT_VALUES.popup;\r\n const scrollTop = window.scrollY;\r\n const scrollLeft = window.scrollX;\r\n\r\n const maxTop = scrollTop + window.innerHeight - popupHeight - safeMargin;\r\n const maxLeft = scrollLeft + window.innerWidth - popupWidth - padding;\r\n\r\n const top = Math.max(scrollTop + padding, Math.min(coords.top, maxTop));\r\n const left = Math.max(scrollLeft + padding, Math.min(coords.left, maxLeft));\r\n\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * If the popup is rendered inside a scrollable container, this ensures it's scrolled into view.\r\n */\r\n private scrollPopupIntoView(): void {\r\n setTimeout(() => {\r\n const popupEl = document.querySelector('.tour-popup') as HTMLElement;\r\n popupEl?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n }, 50);\r\n }\r\n\r\n /**\r\n * method to execute highlight process after scroll \r\n * @returns \r\n */\r\n private waitForScroll(): Promise<void> {\r\n return new Promise(resolve => setTimeout(resolve, 100)); // ⏱️ Adjust delay if needed\r\n }\r\n\r\n /**\r\n * method to create transparent hole in overlay for visibility of highlighted area\r\n */\r\n private createTransparentHole() {\r\n if(!this.currentElement) return;\r\n setTimeout(() => {\r\n const padding = 5;\r\n const rect: any = this.currentElement?.getBoundingClientRect();\r\n const top = Math.max(rect?.top - padding, 0);\r\n const left = Math.max(rect?.left - padding, 0);\r\n const width = rect?.width + padding * 2;\r\n const height = rect?.height + padding * 2;\r\n\r\n const holeElement = document.querySelector('.hole') as HTMLElement;\r\n this.renderer.setStyle(holeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(holeElement, 'top', `${top}px`);\r\n this.renderer.setStyle(holeElement, 'width', `${width}px`);\r\n this.renderer.setStyle(holeElement, 'height', `${height}px`);\r\n }, 50)\r\n }\r\n\r\n /**\r\n * method to get absolute offset\r\n * @param element \r\n * @returns \r\n */\r\n private getAbsoluteOffset(element: HTMLElement): { top: number; left: number } {\r\n let top = 0, left = 0;\r\n let el: HTMLElement | null = element;\r\n\r\n while (el) {\r\n top += el.offsetTop - el.scrollTop + el.clientTop;\r\n left += el.offsetLeft - el.scrollLeft + el.clientLeft;\r\n el = el.offsetParent as HTMLElement;\r\n }\r\n\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * method to lock scroll when tour guide is active\r\n */\r\n private lockScroll() {\r\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\r\n this.renderer.setStyle(document.documentElement, 'overflow', 'hidden');\r\n document.documentElement.classList.add('tour-scroll-lock');\r\n }\r\n\r\n /**\r\n * method to unlock scroll when tour guide is not active\r\n */\r\n private unlockScroll() {\r\n this.renderer.removeStyle(document.body, 'overflow');\r\n this.renderer.removeStyle(document.documentElement, 'overflow');\r\n document.documentElement.classList.remove('tour-scroll-lock');\r\n }\r\n\r\n /**\r\n * method to remove highlight when tour is skipped or done\r\n */\r\n private removeHighlight() {\r\n if (this.currentElement) {\r\n this.renderer.removeClass(this.currentElement, 'tour-highlight');\r\n this.renderer.removeStyle(this.currentElement, 'z-index');\r\n this.renderer.removeStyle(this.currentElement, 'position');\r\n this.renderer.removeStyle(this.currentElement, 'box-shadow');\r\n }\r\n }\r\n\r\n /**\r\n * method to navigate between tour slides or skip tour using left, right and skip key\r\n * @param event \r\n * @returns \r\n */\r\n private handleKey = (event: KeyboardEvent) => {\r\n if (!this.showTour) return;\r\n if (event.key === DEFAULT_VALUES.arrowRight) this.nextStep();\r\n else if (event.key === DEFAULT_VALUES.arrowLeft) this.previousStep();\r\n else if (event.key === DEFAULT_VALUES.escape) this.skip();\r\n };\r\n\r\n /**\r\n * debounce method for smooth operation\r\n * @param fn \r\n * @param delay \r\n * @returns \r\n */\r\n private debounce(fn: () => void, delay: number) {\r\n let timeout: any;\r\n return () => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => fn(), delay);\r\n };\r\n }\r\n\r\n /**\r\n * handling change on component destroy\r\n */\r\n ngOnDestroy() {\r\n document.removeEventListener('keydown', this.handleKey);\r\n\r\n // Clean up: move overlay back (optional)\r\n if (this.overlayRef && this.originalParent) {\r\n this.renderer.appendChild(this.originalParent, this.overlayRef.nativeElement);\r\n }\r\n\r\n if (this.resizeListener) {\r\n window.removeEventListener('resize', this.resizeListener);\r\n }\r\n }\r\n}\r\n","<button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n</button>\r\n\r\n<div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RuclibTourGuideComponent } from './ruclib-tour-guide/ruclib-tour-guide.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatCardModule],\r\n declarations: [RuclibTourGuideComponent],\r\n exports: [RuclibTourGuideComponent],\r\n})\r\nexport class RuclibTourGuideModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruc-lib-tour-guide.mjs","sources":["../../src/lib/model/default-config.model.ts","../../src/lib/ruclib-tour-guide/ruclib-tour-guide.component.ts","../../src/lib/ruclib-tour-guide/ruclib-tour-guide.component.html","../../src/lib/ruclib-tour-guide.module.ts","../../src/ruc-lib-tour-guide.ts"],"sourcesContent":["import { TourGuideConfig } from \"./tour-guide.model\";\r\n\r\nexport const defaultTourGuideConfig: TourGuideConfig = {\r\n type: \"advance\",\r\n showSkipButton: true,\r\n buttonsFontSize: \"14px\",\r\n titleFontSize: '16px',\r\n contentFontSize: '14px',\r\n buttonsAlignment: 'end',\r\n stepCountAlignment: 'start',\r\n stepCountStartText: 'Step',\r\n stepCountMiddleText: 'of',\r\n skipButtonText: 'Skip',\r\n prevButtonText: 'Back',\r\n nextButtonText: 'Next',\r\n finishButtonText: 'Finish',\r\n highlightBorderColor: '#007bff',\r\n highlightBorderWidth: '2px',\r\n defaultPopupWidth: '250px',\r\n}\r\n\r\nexport const DEFAULT_VALUES = {\r\n arrowRight: 'ArrowRight',\r\n arrowLeft: 'ArrowLeft',\r\n escape: 'Escape',\r\n popup: {width: 300, height: 150, top: 0, left: 0, padding: 10, safeMargin: 64},\r\n startTourButtonLabel: 'Start Tour Guide'\r\n }","import { Component, Input, Output, EventEmitter, Renderer2, OnInit, OnDestroy, ElementRef, ViewChild, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\r\nimport { TourGuideConfig, TourGuideData } from '../model/tour-guide.model';\r\nimport { DEFAULT_VALUES, defaultTourGuideConfig } from '../model/default-config.model';\r\n\r\n@Component({\r\n selector: 'uxp-ruclib-tour-guide',\r\n templateUrl: './ruclib-tour-guide.component.html',\r\n styleUrls: ['./ruclib-tour-guide.component.scss'],\r\n})\r\nexport class RuclibTourGuideComponent implements OnInit, OnDestroy, OnChanges {\r\n @Output() rucEvent = new EventEmitter<any>();\r\n @Input() rucInputData!: TourGuideConfig;\r\n @Input() customTheme: string | undefined;\r\n @Input() showStartButton = false;\r\n @Input() dataSource: Array<TourGuideData> = [];\r\n\r\n @ViewChild('overlayRef') overlayRef!: ElementRef;\r\n\r\n public currentStepIndex = 0;\r\n private currentElement?: HTMLElement;\r\n public popupStyle!: { top: string; left: string };\r\n private originalParent?: HTMLElement;\r\n public showTour = false;\r\n public startTourButtonLabel = DEFAULT_VALUES?.startTourButtonLabel;\r\n private resizeListener: any;\r\n public config = defaultTourGuideConfig;\r\n\r\n /**\r\n * class constructor\r\n * @param tourGuideService \r\n * @param renderer \r\n */\r\n constructor(\r\n private renderer: Renderer2\r\n ) { }\r\n\r\n /**\r\n * handling input data changes\r\n * updating default config with user provided config\r\n * @param changes \r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes['rucInputData'] && changes['rucInputData'].currentValue) {\r\n this.config = { ...this.config, ...changes['rucInputData'].currentValue }\r\n }\r\n }\r\n\r\n /**\r\n * handling change on component initilization\r\n */\r\n ngOnInit() {\r\n document.addEventListener('keydown', this.handleKey);\r\n this.resizeListener = this.debounce(() => this.highlightElement(), 150);\r\n window.addEventListener('resize', this.resizeListener);\r\n\r\n if (!this.showStartButton) {\r\n this.startTour()\r\n }\r\n }\r\n\r\n /**\r\n * this method handle the start of tour guide fetaure\r\n */\r\n startTour() {\r\n this.showTour = true;\r\n this.lockScroll();\r\n setTimeout(() => {\r\n if (!this.originalParent) {\r\n this.originalParent = this.renderer.parentNode(this.overlayRef?.nativeElement);\r\n }\r\n if (this.overlayRef) {\r\n this.renderer.appendChild(document.body, this.overlayRef?.nativeElement);\r\n }\r\n this.currentStepIndex = 0;\r\n if (this.config.type === 'advance') {\r\n this.highlightElement();\r\n }\r\n }, 10)\r\n }\r\n\r\n /**\r\n * this method handle the navigation to next tour guide feature\r\n */\r\n nextStep() {\r\n this.removeHighlight();\r\n this.currentStepIndex++;\r\n if (this.currentStepIndex < this.dataSource.length) {\r\n if (this.config.type === 'advance') this.highlightElement();\r\n } else {\r\n this.currentStepIndex--;\r\n this.showTour = false;\r\n this.unlockScroll();\r\n this.rucEvent.emit({ eventName: 'onTourComplete', eventOutput: null });\r\n if (this.overlayRef) {\r\n this.renderer.removeChild(document.body, this.overlayRef.nativeElement);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * this method allow us to navigate back to previous tour guide feature\r\n */\r\n previousStep() {\r\n if (this.currentStepIndex > 0) {\r\n this.removeHighlight();\r\n this.currentStepIndex--;\r\n if (this.config.type === 'advance') this.highlightElement();\r\n }\r\n }\r\n\r\n /**\r\n * method to skip the tour guide thats in progress\r\n */\r\n skip() {\r\n this.removeHighlight();\r\n this.showTour = false;\r\n this.unlockScroll();\r\n this.rucEvent.emit({ eventName: 'onTourSkip', eventOutput: null });\r\n if (this.overlayRef) {\r\n this.renderer.removeChild(document.body, this.overlayRef.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * method to highlight feature area and changin details popup based on provide config\r\n * @returns \r\n */\r\n private async highlightElement() {\r\n const step = this.dataSource[this.currentStepIndex];\r\n if (this.config.type === 'simple' || !step?.selector) {\r\n return;\r\n }\r\n\r\n // 1. Find and scroll to the element\r\n this.currentElement = await this.findElementAndScroll(step.selector);\r\n if (!this.currentElement) {\r\n return;\r\n }\r\n\r\n // 2. Apply highlight styles\r\n this.applyHighlightStyles(this.currentElement);\r\n\r\n // 3. Calculate and apply popup position\r\n this.calculateAndApplyPopupPosition(this.currentElement, step.position);\r\n\r\n // 4. Create the visual hole in the overlay\r\n this.createTransparentHole();\r\n }\r\n\r\n /**\r\n * Finds an element by its selector, scrolls it into view, and waits for the scroll to complete.\r\n * @param selector The CSS selector for the target element.\r\n * @returns A promise that resolves to the HTMLElement or undefined if not found.\r\n */\r\n private async findElementAndScroll(selector: string): Promise<HTMLElement | undefined> {\r\n const element = document.querySelector(selector) as HTMLElement;\r\n if (!element) {\r\n return undefined;\r\n }\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n await this.waitForScroll();\r\n return element;\r\n }\r\n\r\n /**\r\n * Applies CSS classes and styles to visually highlight the target element.\r\n * @param element The element to highlight.\r\n */\r\n private applyHighlightStyles(element: HTMLElement): void {\r\n this.renderer.addClass(element, 'tour-highlight');\r\n this.renderer.setStyle(element, 'position', 'relative');\r\n this.renderer.setStyle(element, 'z-index', '10000');\r\n }\r\n\r\n /**\r\n * Calculates the optimal position for the tour popup and applies it.\r\n * @param element The highlighted element.\r\n * @param position The desired position ('auto', 'top', 'bottom', 'left', 'right').\r\n */\r\n private calculateAndApplyPopupPosition(element: HTMLElement, position: string = 'auto'): void {\r\n const rect = element.getBoundingClientRect();\r\n const offset = this.getAbsoluteOffset(element);\r\n\r\n // Determine the best position if set to 'auto'\r\n const finalPosition = this.determineAutoPosition(position, rect);\r\n\r\n // Get the top/left coordinates based on the position\r\n let coords = this.computePopupCoordinates(finalPosition, offset, element);\r\n\r\n // Ensure the coordinates are within the viewport\r\n coords = this.clampPopupCoordinates(coords);\r\n\r\n // Apply the final styles to the popup\r\n this.popupStyle = {\r\n top: `${coords.top}px`,\r\n left: `${coords.left}px`\r\n };\r\n\r\n // Ensure the popup itself is visible\r\n this.scrollPopupIntoView();\r\n }\r\n\r\n /**\r\n * Determines the best placement for the popup when position is 'auto'.\r\n * @param position The configured position.\r\n * @param rect The BoundingClientRect of the target element.\r\n * @returns The calculated final position.\r\n */\r\n private determineAutoPosition(position: string, rect: DOMRect): string {\r\n if (position !== 'auto') {\r\n return position;\r\n }\r\n\r\n const { padding, width: popupWidth, height: popupHeight, safeMargin } = DEFAULT_VALUES.popup;\r\n\r\n const fitsTop = rect.top >= popupHeight + padding;\r\n const fitsBottom = window.innerHeight - rect.bottom >= popupHeight + padding + safeMargin;\r\n const fitsRight = window.innerWidth - rect.right >= popupWidth + padding;\r\n const fitsLeft = rect.left >= popupWidth + padding;\r\n\r\n if (fitsRight) return 'right';\r\n if (fitsBottom) return 'bottom';\r\n if (fitsLeft) return 'left';\r\n if (fitsTop) return 'top';\r\n return 'bottom'; // fallback\r\n }\r\n\r\n /**\r\n * Computes the top and left coordinates for the popup based on the target element and desired position.\r\n * @param position The final position for the popup.\r\n * @param offset The absolute offset of the target element.\r\n * @param element The target element.\r\n * @returns An object with top and left coordinates.\r\n */\r\n private computePopupCoordinates(position: string, offset: { top: number, left: number }, element: HTMLElement): { top: number, left: number } {\r\n const { padding, width: popupWidth, height: popupHeight } = DEFAULT_VALUES.popup;\r\n let top = DEFAULT_VALUES.popup.top;\r\n let left = DEFAULT_VALUES.popup.left;\r\n\r\n switch (position) {\r\n case 'top':\r\n top = offset.top - popupHeight - padding - 20;\r\n left = offset.left + element.offsetWidth / 2 - popupWidth / 2;\r\n break;\r\n case 'bottom':\r\n top = offset.top + element.offsetHeight + padding;\r\n left = offset.left + element.offsetWidth / 2 - popupWidth / 2;\r\n break;\r\n case 'left':\r\n top = offset.top + element.offsetHeight / 2 - popupHeight / 2;\r\n left = offset.left - popupWidth - padding + 50;\r\n break;\r\n case 'right':\r\n top = offset.top + element.offsetHeight / 2 - popupHeight / 2;\r\n left = offset.left + element.offsetWidth + padding;\r\n break;\r\n }\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * Clamps the popup's coordinates to ensure it stays within the visible viewport.\r\n * @param coords The calculated top and left coordinates.\r\n * @returns The adjusted coordinates.\r\n */\r\n private clampPopupCoordinates(coords: { top: number, left: number }): { top: number, left: number } {\r\n const { padding, width: popupWidth, height: popupHeight, safeMargin } = DEFAULT_VALUES.popup;\r\n const scrollTop = window.scrollY;\r\n const scrollLeft = window.scrollX;\r\n\r\n const maxTop = scrollTop + window.innerHeight - popupHeight - safeMargin;\r\n const maxLeft = scrollLeft + window.innerWidth - popupWidth - padding;\r\n\r\n const top = Math.max(scrollTop + padding, Math.min(coords.top, maxTop));\r\n const left = Math.max(scrollLeft + padding, Math.min(coords.left, maxLeft));\r\n\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * If the popup is rendered inside a scrollable container, this ensures it's scrolled into view.\r\n */\r\n private scrollPopupIntoView(): void {\r\n setTimeout(() => {\r\n const popupEl = document.querySelector('.tour-popup') as HTMLElement;\r\n popupEl?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n }, 50);\r\n }\r\n\r\n /**\r\n * method to execute highlight process after scroll \r\n * @returns \r\n */\r\n private waitForScroll(): Promise<void> {\r\n return new Promise(resolve => setTimeout(resolve, 100)); // ⏱️ Adjust delay if needed\r\n }\r\n\r\n /**\r\n * method to create transparent hole in overlay for visibility of highlighted area\r\n */\r\n private createTransparentHole() {\r\n if(!this.currentElement) return;\r\n setTimeout(() => {\r\n const padding = 5;\r\n const rect: any = this.currentElement?.getBoundingClientRect();\r\n const top = Math.max(rect?.top - padding, 0);\r\n const left = Math.max(rect?.left - padding, 0);\r\n const width = rect?.width + padding * 2;\r\n const height = rect?.height + padding * 2;\r\n\r\n const holeElement = document.querySelector('.hole') as HTMLElement;\r\n this.renderer.setStyle(holeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(holeElement, 'top', `${top}px`);\r\n this.renderer.setStyle(holeElement, 'width', `${width}px`);\r\n this.renderer.setStyle(holeElement, 'height', `${height}px`);\r\n }, 50)\r\n }\r\n\r\n /**\r\n * method to get absolute offset\r\n * @param element \r\n * @returns \r\n */\r\n private getAbsoluteOffset(element: HTMLElement): { top: number; left: number } {\r\n let top = 0, left = 0;\r\n let el: HTMLElement | null = element;\r\n\r\n while (el) {\r\n top += el.offsetTop - el.scrollTop + el.clientTop;\r\n left += el.offsetLeft - el.scrollLeft + el.clientLeft;\r\n el = el.offsetParent as HTMLElement;\r\n }\r\n\r\n return { top, left };\r\n }\r\n\r\n /**\r\n * method to lock scroll when tour guide is active\r\n */\r\n private lockScroll() {\r\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\r\n this.renderer.setStyle(document.documentElement, 'overflow', 'hidden');\r\n document.documentElement.classList.add('tour-scroll-lock');\r\n }\r\n\r\n /**\r\n * method to unlock scroll when tour guide is not active\r\n */\r\n private unlockScroll() {\r\n this.renderer.removeStyle(document.body, 'overflow');\r\n this.renderer.removeStyle(document.documentElement, 'overflow');\r\n document.documentElement.classList.remove('tour-scroll-lock');\r\n }\r\n\r\n /**\r\n * method to remove highlight when tour is skipped or done\r\n */\r\n private removeHighlight() {\r\n if (this.currentElement) {\r\n this.renderer.removeClass(this.currentElement, 'tour-highlight');\r\n this.renderer.removeStyle(this.currentElement, 'z-index');\r\n this.renderer.removeStyle(this.currentElement, 'position');\r\n this.renderer.removeStyle(this.currentElement, 'box-shadow');\r\n }\r\n }\r\n\r\n /**\r\n * method to navigate between tour slides or skip tour using left, right and skip key\r\n * @param event \r\n * @returns \r\n */\r\n private handleKey = (event: KeyboardEvent) => {\r\n if (!this.showTour) return;\r\n if (event.key === DEFAULT_VALUES.arrowRight) this.nextStep();\r\n else if (event.key === DEFAULT_VALUES.arrowLeft) this.previousStep();\r\n else if (event.key === DEFAULT_VALUES.escape) this.skip();\r\n };\r\n\r\n /**\r\n * debounce method for smooth operation\r\n * @param fn \r\n * @param delay \r\n * @returns \r\n */\r\n private debounce(fn: () => void, delay: number) {\r\n let timeout: any;\r\n return () => {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => fn(), delay);\r\n };\r\n }\r\n\r\n /**\r\n * handling change on component destroy\r\n */\r\n ngOnDestroy() {\r\n document.removeEventListener('keydown', this.handleKey);\r\n\r\n // Clean up: move overlay back (optional)\r\n if (this.overlayRef && this.originalParent) {\r\n this.renderer.appendChild(this.originalParent, this.overlayRef.nativeElement);\r\n }\r\n\r\n if (this.resizeListener) {\r\n window.removeEventListener('resize', this.resizeListener);\r\n }\r\n }\r\n}\r\n","<div class=\"main\">\r\n <button color=\"primary\" *ngIf=\"showStartButton\" mat-raised-button (click)=\"startTour()\">\r\n {{startTourButtonLabel}}\r\n </button>\r\n\r\n <div id=\"tour-container\" class=\"{{ customTheme }}\" *ngIf=\"showTour\">\r\n <div #overlayRef class=\"tour-overlay\" *ngIf=\"currentStepIndex < dataSource.length\">\r\n <mat-card appearance=\"outlined\" class=\"tour-popup\" [style.minWidth]=\"config.defaultPopupWidth\"\r\n [style.minHeight]=\"dataSource[currentStepIndex].shape === 'circle' ? config.defaultPopupWidth : 'auto'\"\r\n [style.width]=\"dataSource[currentStepIndex].width || config.defaultPopupWidth\"\r\n [style.height]=\"dataSource[currentStepIndex].shape === 'circle' ? dataSource[currentStepIndex].width || config.defaultPopupWidth : 'auto'\"\r\n [ngClass]=\"dataSource[currentStepIndex].shape || 'rounded'\"\r\n [ngStyle]=\"config.type === 'advance' ? popupStyle : null\" class=\"{{config.type}}\">\r\n\r\n <!-- tour modal title -->\r\n <mat-card-header class=\"tour-guide-title\">\r\n <mat-card-title [style.fontSize]=\"config.titleFontSize\" *ngIf=\"dataSource[currentStepIndex].title\">\r\n {{ dataSource[currentStepIndex].title }}\r\n </mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n <!-- tour content details -->\r\n <div class=\"tour-guide-content\" [style.fontSize]=\"config.contentFontSize\">\r\n <div [innerHTML]=\"dataSource[currentStepIndex].content\"></div>\r\n </div>\r\n\r\n <!-- tour step counter -->\r\n <div class=\"tour-guide-step-counter\" [style.justifyContent]=\"config.stepCountAlignment\">\r\n {{config.stepCountStartText}} {{ currentStepIndex + 1 }} {{config.stepCountMiddleText}} {{\r\n dataSource.length }}\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- tour action buttons -->\r\n <mat-card-actions class=\"tour-guide-action-buttons\" [style.justifyContent]=\"config.buttonsAlignment\">\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" *ngIf=\"config.showSkipButton\"\r\n (click)=\"skip()\">{{config.skipButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"previousStep()\"\r\n [disabled]=\"currentStepIndex === 0\">{{config.prevButtonText}}</button>\r\n\r\n <button mat-raised-button [style.fontSize]=\"config.buttonsFontSize\" (click)=\"nextStep()\">\r\n {{ currentStepIndex === dataSource.length - 1 ? config.finishButtonText : config.nextButtonText\r\n }}\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n\r\n <!-- hole on overlayer for highlighted content -->\r\n <div class=\"hole\" [style.borderColor]=\"config.highlightBorderColor\"\r\n [style.borderWidth]=\"config.highlightBorderWidth\"></div>\r\n </div>\r\n\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RuclibTourGuideComponent } from './ruclib-tour-guide/ruclib-tour-guide.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatButtonModule, MatCardModule],\r\n declarations: [RuclibTourGuideComponent],\r\n exports: [RuclibTourGuideComponent],\r\n})\r\nexport class RuclibTourGuideModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}