@anglr/common 14.2.0 → 15.0.0-beta.20221026052356

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.
Files changed (66) hide show
  1. package/changelog.md +44 -0
  2. package/es2015/floating-ui/src/services/floatingUiDomPosition.service.js +80 -62
  3. package/es2015/floating-ui/src/services/floatingUiDomPosition.service.js.map +1 -1
  4. package/es2015/material/src/directives/confirmationDialog/confirmationDialog.directive.js +7 -5
  5. package/es2015/material/src/directives/confirmationDialog/confirmationDialog.directive.js.map +1 -1
  6. package/es2015/src/modules/position/directives/positionTo/positionTo.directive.js +55 -19
  7. package/es2015/src/modules/position/directives/positionTo/positionTo.directive.js.map +1 -1
  8. package/es2015/src/modules/progressIndicator/interceptors/progressInterceptor.js +1 -1
  9. package/es2015/src/modules/progressIndicator/interceptors/progressInterceptor.js.map +1 -1
  10. package/es2015/src/modules/tooltip/directives/tooltip/tooltip.directive.js +6 -6
  11. package/es2015/src/modules/tooltip/directives/tooltip/tooltip.directive.js.map +1 -1
  12. package/es2015/src/services/position/position.interface.js.map +1 -1
  13. package/es2015/src/services/position/position.types.js.map +1 -1
  14. package/es2015/src/utils/index.js +1 -1
  15. package/es2015/src/utils/index.js.map +1 -1
  16. package/es2015/structured-log/src/services/rest/restSink.service.js +4 -2
  17. package/es2015/structured-log/src/services/rest/restSink.service.js.map +1 -1
  18. package/es2020/floating-ui/src/services/floatingUiDomPosition.service.js +80 -62
  19. package/es2020/floating-ui/src/services/floatingUiDomPosition.service.js.map +1 -1
  20. package/es2020/material/src/directives/confirmationDialog/confirmationDialog.directive.js +6 -5
  21. package/es2020/material/src/directives/confirmationDialog/confirmationDialog.directive.js.map +1 -1
  22. package/es2020/src/modules/position/directives/positionTo/positionTo.directive.js +56 -19
  23. package/es2020/src/modules/position/directives/positionTo/positionTo.directive.js.map +1 -1
  24. package/es2020/src/modules/progressIndicator/interceptors/progressInterceptor.js +1 -1
  25. package/es2020/src/modules/progressIndicator/interceptors/progressInterceptor.js.map +1 -1
  26. package/es2020/src/modules/tooltip/directives/tooltip/tooltip.directive.js +6 -6
  27. package/es2020/src/modules/tooltip/directives/tooltip/tooltip.directive.js.map +1 -1
  28. package/es2020/src/services/position/position.interface.js.map +1 -1
  29. package/es2020/src/services/position/position.types.js.map +1 -1
  30. package/es2020/src/utils/index.js +1 -1
  31. package/es2020/src/utils/index.js.map +1 -1
  32. package/es2020/structured-log/src/services/rest/restSink.service.js +3 -2
  33. package/es2020/structured-log/src/services/rest/restSink.service.js.map +1 -1
  34. package/floating-ui/src/services/floatingUiDomPosition.service.d.ts.map +1 -1
  35. package/material/src/directives/confirmationDialog/confirmationDialog.directive.d.ts +4 -4
  36. package/material/src/directives/confirmationDialog/confirmationDialog.directive.d.ts.map +1 -1
  37. package/package.json +31 -28
  38. package/src/modules/position/directives/positionTo/positionTo.directive.d.ts +35 -14
  39. package/src/modules/position/directives/positionTo/positionTo.directive.d.ts.map +1 -1
  40. package/src/modules/progressIndicator/interceptors/progressInterceptor.d.ts.map +1 -1
  41. package/src/modules/tooltip/directives/tooltip/tooltip.directive.d.ts.map +1 -1
  42. package/src/services/position/position.interface.d.ts +51 -3
  43. package/src/services/position/position.interface.d.ts.map +1 -1
  44. package/src/services/position/position.types.d.ts +4 -0
  45. package/src/services/position/position.types.d.ts.map +1 -1
  46. package/structured-log/src/services/rest/restSink.service.d.ts.map +1 -1
  47. package/{positions/src/types/positions.typings.d.ts → typings/positions/index.d.ts} +12 -4
  48. package/typings/store/index.d.ts +5 -0
  49. package/{structured-log/src/types/structured-log.typings.d.ts → typings/structured-log/index.d.ts} +49 -13
  50. package/version.bak +1 -1
  51. package/es2015/positions/src/types/positions.typings.js +0 -2
  52. package/es2015/positions/src/types/positions.typings.js.map +0 -1
  53. package/es2015/store/src/types/store.typings.js +0 -2
  54. package/es2015/store/src/types/store.typings.js.map +0 -1
  55. package/es2015/structured-log/src/types/structured-log.typings.js +0 -2
  56. package/es2015/structured-log/src/types/structured-log.typings.js.map +0 -1
  57. package/es2020/positions/src/types/positions.typings.js +0 -2
  58. package/es2020/positions/src/types/positions.typings.js.map +0 -1
  59. package/es2020/store/src/types/store.typings.js +0 -2
  60. package/es2020/store/src/types/store.typings.js.map +0 -1
  61. package/es2020/structured-log/src/types/structured-log.typings.js +0 -2
  62. package/es2020/structured-log/src/types/structured-log.typings.js.map +0 -1
  63. package/positions/src/types/positions.typings.d.ts.map +0 -1
  64. package/store/src/types/store.typings.d.ts +0 -4
  65. package/store/src/types/store.typings.d.ts.map +0 -1
  66. package/structured-log/src/types/structured-log.typings.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.directive.js","sourceRoot":"","sources":["../../../../../../src/modules/tooltip/directives/tooltip/tooltip.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentRef, ContentChild, Directive, ElementRef, EmbeddedViewRef, HostListener, Inject, Injector, Input, OnChanges, OnDestroy, Optional, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {AnimationBuilder, AnimationFactory} from '@angular/animations';\nimport {DOCUMENT} from '@angular/common';\nimport {fadeInAnimation, fadeOutAnimation} from '@anglr/animations';\nimport {extend, isBlank, isPresent, nameof} from '@jscrpt/common';\n\nimport {TooltipComponent} from '../../components/tooltip/tooltip.component';\nimport {TooltipOptions, TooltipRenderer} from '../../misc/tooltip.interface';\nimport {TOOLTIP_OPTIONS} from '../../misc/tokens';\nimport {applyPositionResult, Position, PositionOffset, PositionPlacement} from '../../../../services/position';\nimport {TooltipTemplateDirective} from '../tooltipTemplate/tooltipTemplate.directive';\nimport {TooltipTemplateContext} from '../tooltipTemplate/tooltipTemplate.context';\nimport {POSITION} from '../../../../types/tokens';\n\n/**\n * Default options for tooltip\n */\nconst defaultOptions: TooltipOptions =\n{\n delay: 200,\n position:\n {\n offset: PositionOffset.MouseEnter,\n placement: PositionPlacement.TopStart\n },\n allowSelection: false,\n tooltipRenderer: TooltipComponent,\n tooltipCssClass: null,\n stopPropagation: false,\n enterAnimation: fadeInAnimation,\n exitAnimation: fadeOutAnimation,\n};\n\n/**\n * Directive used for rendering tooltip\n */\n@Directive(\n{\n selector: '[tooltip]'\n})\nexport class TooltipDirective<TData = any> implements OnChanges, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of component used for rendering tooltip\n */\n protected _tooltipComponent?: ComponentRef<TooltipRenderer<TData>>;\n\n /**\n * Instance of HTML element for tooltip renderer\n */\n protected _tooltipElement?: HTMLElement;\n\n /**\n * Animation factory used for enter animation of tooltip\n */\n protected _enterAnimation: AnimationFactory;\n\n /**\n * Animation factory used for exit animation of tooltip\n */\n protected _exitAnimation: AnimationFactory;\n\n /**\n * Instance of options provided for this tooltip\n */\n protected _options: TooltipOptions;\n\n /**\n * Indication whether there is active show tooltip request\n */\n protected _showRequest: boolean = false;\n\n /**\n * Indication whether keep open tooltip component\n */\n protected _keepOpen: boolean = false;\n\n /**\n * Timeout that is used for handling mouse move\n */\n protected _timeout: number|null = null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Tooltip text that is displayed, or any data that could be passed to template\n */\n @Input()\n public tooltip?: TData;\n\n /**\n * Indication whether are html tags allowed in tooltip text\n */\n @Input()\n public allowHtml: boolean = false;\n\n /**\n * Instance of tooltip template that is used for rendering\n */\n @Input()\n public template?: TemplateRef<TooltipTemplateContext<TData>>;\n\n /**\n * Options used for displaying tooltip\n */\n @Input()\n public get tooltipOptions(): Partial<TooltipOptions>\n {\n return this._options;\n }\n public set tooltipOptions(value: Partial<TooltipOptions>)\n {\n this._options = extend(true, {}, this._options, value);\n\n this._enterAnimation = this._animationsPlayer.build(this._options.enterAnimation);\n this._exitAnimation = this._animationsPlayer.build(this._options.exitAnimation);\n }\n\n /**\n * Gets or sets indication whether is tooltip visible, if has boolean value, mouse events cant override this\n */\n @Input()\n public tooltipVisible?: boolean;\n\n //######################### public properties - children #########################\n\n /**\n * Instance of template from element content, used for rendering\n */\n @ContentChild(TooltipTemplateDirective)\n public tooltipTemplateChild?: TooltipTemplateDirective;\n\n //######################### constructor #########################\n constructor(protected _viewContainerRef: ViewContainerRef,\n protected _injector: Injector,\n protected _element: ElementRef<HTMLElement>,\n protected _animationsPlayer: AnimationBuilder,\n @Inject(DOCUMENT) protected _document: Document,\n @Inject(POSITION) protected _position: Position,\n @Optional() @Inject(TOOLTIP_OPTIONS) options?: Partial<TooltipOptions>,)\n {\n this._options = extend(true, {}, defaultOptions, options);\n\n this._enterAnimation = this._animationsPlayer.build(this._options.enterAnimation);\n this._exitAnimation = this._animationsPlayer.build(this._options.exitAnimation);\n }\n\n //######################### public methods - implementation of OnChanges #########################\n\n /**\n * Called when input value changes\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<TooltipDirective>('tooltipVisible') in changes)\n {\n if(this.tooltipVisible)\n {\n this._showTooltip();\n }\n else\n {\n this._hideTooltip();\n }\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(this._timeout)\n {\n clearTimeout(this._timeout);\n }\n\n this._destroyTooltip();\n }\n\n //######################### public methods - host #########################\n\n /**\n * Handles mouse leave event, hover ends\n * @param event - Mouse event that occured\n * @internal\n */\n @HostListener('mouseleave', ['$event'])\n public mouseLeave(event: MouseEvent): void\n {\n if(this._options.stopPropagation)\n {\n event.stopPropagation();\n }\n\n if(isBlank(this.tooltipVisible))\n {\n setTimeout(() =>\n {\n if(!this._keepOpen)\n {\n this._showRequest = false;\n this._hideTooltip();\n }\n }, 10);\n }\n }\n\n /**\n * Handles mouse move event, displaying tooltip\n * @param event - Mouse event that occured\n * @internal\n */\n @HostListener('mousemove', ['$event'])\n public mouseMove(event: MouseEvent): void\n {\n if(this._options.stopPropagation)\n {\n event.stopPropagation();\n }\n\n this._showRequest = true;\n\n //do nothing if tooltip is visible\n if(this._tooltipComponent || isPresent(this.tooltipVisible))\n {\n return;\n }\n\n if(isPresent(this._timeout))\n {\n clearTimeout(this._timeout);\n }\n\n this._timeout = setTimeout(() =>\n {\n this._timeout = null;\n\n if(this._showRequest)\n {\n this._showTooltip(event);\n\n this._showRequest = false;\n }\n }, this._options.delay) as any;\n }\n\n //######################### protected methods #########################\n\n /**\n * Shows tooltip\n * @param event - Mouse event\n */\n protected _showTooltip(event?: MouseEvent): void\n {\n this._createTooltip();\n\n //if element was not created do nothing\n if(!this._tooltipElement)\n {\n return;\n }\n\n this._showData();\n\n this._position.placeElement(this._tooltipElement,\n this._element.nativeElement,\n {\n placement: this._options.position.placement,\n offset: this._options.position.offset,\n flip: true,\n mouseEvent: event,\n autoUpdate: false\n })\n .toPromise()\n .then(result => applyPositionResult(result));\n }\n\n /**\n * Hides tooltip\n */\n protected _hideTooltip(): void\n {\n this._destroyTooltip();\n }\n\n /**\n * Destroys tooltip component\n */\n protected _destroyTooltip(): void\n {\n if(this._tooltipComponent)\n {\n const component = this._tooltipComponent;\n const element = this._tooltipElement;\n\n const exitAnimation = this._exitAnimation.create(element);\n\n exitAnimation.onDone(() =>\n {\n component.destroy();\n exitAnimation.destroy();\n });\n \n this._tooltipComponent = undefined;\n this._tooltipElement = undefined;\n\n exitAnimation.play();\n }\n }\n\n /**\n * Creates tooltip renderer component\n */\n protected _createTooltip(): void\n {\n // 0. Destroys tooltip if it exists\n this._destroyTooltip();\n\n // 1. Create a component reference from the component\n this._tooltipComponent = this._viewContainerRef\n .createComponent(this._options.tooltipRenderer,\n {\n injector: this._injector\n });\n\n // 3. Get DOM element from component\n this._tooltipElement = (this._tooltipComponent.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n\n // 4. Append DOM element to the body\n this._document.body.appendChild(this._tooltipElement);\n this._enterAnimation.create(this._tooltipElement).play();\n }\n\n /**\n * Sets data to tooltip component and shows them\n */\n protected _showData(): void\n {\n if(this._tooltipComponent)\n {\n this._tooltipComponent.instance.allowHtml = this.allowHtml;\n this._tooltipComponent.instance.data = this.tooltip;\n this._tooltipComponent.instance.template = this.template ?? this.tooltipTemplateChild?.template;\n this._tooltipComponent.instance.cssClass = this._options.tooltipCssClass;\n\n this._tooltipComponent.instance.registerHoverEvents(() =>\n {\n if(this._options.allowSelection)\n {\n this._keepOpen = true;\n this._showRequest = false;\n }\n },\n () =>\n {\n setTimeout(() =>\n {\n this._keepOpen = false;\n\n if(!this._showRequest)\n {\n this._hideTooltip();\n }\n\n this._showRequest = false;\n }, 5);\n });\n\n this._tooltipComponent.instance.invalidateVisuals();\n }\n }\n\n //######################### ng language server #########################\n \n /**\n * Custom input type for `tooltip` input\n */\n public static ngAcceptInputType_tooltip: any;\n}"]}
1
+ {"version":3,"file":"tooltip.directive.js","sourceRoot":"","sources":["../../../../../../src/modules/tooltip/directives/tooltip/tooltip.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,SAAS,EAAE,UAAU,EAAmB,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAwB,QAAQ,EAAiB,WAAW,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACtN,OAAO,EAAC,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAC,eAAe,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4CAA4C,CAAC;AAE5E,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,mBAAmB,EAAkD,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AACrI,OAAO,EAAC,wBAAwB,EAAC,MAAM,8CAA8C,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAC;;;AAElD;;GAEG;AACH,MAAM,cAAc,GACpB;IACI,KAAK,EAAE,GAAG;IACV,QAAQ,EACR;QACI,MAAM,EAAE,MAAM,CAAwB,YAAY,CAAyB;QAC3E,SAAS,EAAE,iBAAiB,CAAC,QAAQ;KACxC;IACD,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,gBAAgB;CAClC,CAAC;AAEF;;GAEG;AAKH,MAAM,OAAO,gBAAgB;IA8FzB,iEAAiE;IACjE,YAAsB,iBAAmC,EACnC,SAAmB,EACnB,QAAiC,EACjC,iBAAmC,EACjB,SAAmB,EACnB,SAAmB,EACV,OAAiC;QAN5D,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,cAAS,GAAT,SAAS,CAAU;QACnB,aAAQ,GAAR,QAAQ,CAAyB;QACjC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACjB,cAAS,GAAT,SAAS,CAAU;QACnB,cAAS,GAAT,SAAS,CAAU;QAvE3D;;WAEG;QACO,iBAAY,GAAY,KAAK,CAAC;QAExC;;WAEG;QACO,cAAS,GAAY,KAAK,CAAC;QAErC;;WAEG;QACO,aAAQ,GAAgB,IAAI,CAAC;QAUvC;;WAEG;QAEI,cAAS,GAAY,KAAK,CAAC;QA+C9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACpF,CAAC;IA3CD;;OAEG;IACH,IACW,cAAc;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,IAAW,cAAc,CAAC,KAA8B;QAEpD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACpF,CAAC;IA+BD,kGAAkG;IAElG;;OAEG;IACI,WAAW,CAAC,OAAsB;QAErC,IAAG,MAAM,CAAmB,gBAAgB,CAAC,IAAI,OAAO,EACxD;YACI,IAAG,IAAI,CAAC,cAAc,EACtB;gBACI,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;iBAED;gBACI,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;SACJ;IACL,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;QAEd,IAAG,IAAI,CAAC,QAAQ,EAChB;YACI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,2EAA2E;IAE3E;;;;OAIG;IAEI,UAAU,CAAC,KAAiB;QAE/B,IAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAChC;YACI,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,IAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAC/B;YACI,UAAU,CAAC,GAAG,EAAE;gBAEZ,IAAG,CAAC,IAAI,CAAC,SAAS,EAClB;oBACI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;YACL,CAAC,EAAE,EAAE,CAAC,CAAC;SACV;IACL,CAAC;IAED;;;;OAIG;IAEI,SAAS,CAAC,KAAiB;QAE9B,IAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAChC;YACI,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,kCAAkC;QAClC,IAAG,IAAI,CAAC,iBAAiB,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC3D;YACI,OAAO;SACV;QAED,IAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B;YACI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAE5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAG,IAAI,CAAC,YAAY,EACpB;gBACI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAEzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC7B;QACL,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAQ,CAAC;IACnC,CAAC;IAED,uEAAuE;IAEvE;;;OAGG;IACO,YAAY,CAAC,KAAkB;QAErC,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,uCAAuC;QACvC,IAAG,CAAC,IAAI,CAAC,eAAe,EACxB;YACI,OAAO;SACV;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAC3B;YACI,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS;YAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;YACrC,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;SACpB,CAAC,CAAC;aACxC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACO,YAAY;QAElB,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACO,eAAe;QAErB,IAAG,IAAI,CAAC,iBAAiB,EACzB;YACI,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YAErC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE1D,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE;gBAEtB,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,aAAa,CAAC,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YAEjC,aAAa,CAAC,IAAI,EAAE,CAAC;SACxB;IACL,CAAC;IAED;;OAEG;IACO,cAAc;QAEpB,mCAAmC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,qDAAqD;QACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;aAC1C,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAC7B;YACI,QAAQ,EAAE,IAAI,CAAC,SAAS;SAC3B,CAAC,CAAC;QAExB,oCAAoC;QACpC,IAAI,CAAC,eAAe,GAAI,IAAI,CAAC,iBAAiB,CAAC,QAAiC;aAC3E,SAAS,CAAC,CAAC,CAAgB,CAAC;QAEjC,oCAAoC;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,SAAS;;QAEf,IAAG,IAAI,CAAC,iBAAiB,EACzB;YACI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAA,IAAI,CAAC,oBAAoB,0CAAE,QAAQ,CAAC;YAChG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YAEzE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE;gBAED,IAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAC/B;oBACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC7B;YACL,CAAC,EACD,GAAG,EAAE;gBAED,UAAU,CAAC,GAAG,EAAE;oBAEZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBAEvB,IAAG,CAAC,IAAI,CAAC,YAAY,EACrB;wBACI,IAAI,CAAC,YAAY,EAAE,CAAC;qBACvB;oBAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YAEvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;SACvD;IACL,CAAC;;6GA/UQ,gBAAgB,oIAmGL,QAAQ,aACR,QAAQ,aACI,eAAe;iGArGtC,gBAAgB,oVA2FX,wBAAwB;2FA3F7B,gBAAgB;kBAJ5B,SAAS;mBACV;oBACI,QAAQ,EAAE,WAAW;iBACxB;;0BAoGgB,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,QAAQ;;0BACf,QAAQ;;0BAAI,MAAM;2BAAC,eAAe;4CAnDxC,OAAO;sBADb,KAAK;gBAOC,SAAS;sBADf,KAAK;gBAOC,QAAQ;sBADd,KAAK;gBAOK,cAAc;sBADxB,KAAK;gBAiBC,cAAc;sBADpB,KAAK;gBASC,oBAAoB;sBAD1B,YAAY;uBAAC,wBAAwB;gBA6D/B,UAAU;sBADhB,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;gBA2B/B,SAAS;sBADf,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {ComponentRef, ContentChild, Directive, ElementRef, EmbeddedViewRef, HostListener, Inject, Injector, Input, OnChanges, OnDestroy, Optional, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {AnimationBuilder, AnimationFactory} from '@angular/animations';\nimport {DOCUMENT} from '@angular/common';\nimport {fadeInAnimation, fadeOutAnimation} from '@anglr/animations';\nimport {extend, isBlank, isPresent, nameof} from '@jscrpt/common';\nimport {lastValueFrom} from 'rxjs';\n\nimport {TooltipComponent} from '../../components/tooltip/tooltip.component';\nimport {TooltipOptions, TooltipRenderer} from '../../misc/tooltip.interface';\nimport {TOOLTIP_OPTIONS} from '../../misc/tokens';\nimport {applyPositionResult, Position, PositionOffset, PositionOffsetString, PositionPlacement} from '../../../../services/position';\nimport {TooltipTemplateDirective} from '../tooltipTemplate/tooltipTemplate.directive';\nimport {TooltipTemplateContext} from '../tooltipTemplate/tooltipTemplate.context';\nimport {POSITION} from '../../../../types/tokens';\n\n/**\n * Default options for tooltip\n */\nconst defaultOptions: TooltipOptions =\n{\n delay: 200,\n position:\n {\n offset: nameof<typeof PositionOffset>('MouseEnter') as PositionOffsetString,\n placement: PositionPlacement.TopStart,\n },\n allowSelection: false,\n tooltipRenderer: TooltipComponent,\n tooltipCssClass: null,\n stopPropagation: false,\n enterAnimation: fadeInAnimation,\n exitAnimation: fadeOutAnimation,\n};\n\n/**\n * Directive used for rendering tooltip\n */\n@Directive(\n{\n selector: '[tooltip]'\n})\nexport class TooltipDirective<TData = any> implements OnChanges, OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Instance of component used for rendering tooltip\n */\n protected _tooltipComponent?: ComponentRef<TooltipRenderer<TData>>;\n\n /**\n * Instance of HTML element for tooltip renderer\n */\n protected _tooltipElement?: HTMLElement;\n\n /**\n * Animation factory used for enter animation of tooltip\n */\n protected _enterAnimation: AnimationFactory;\n\n /**\n * Animation factory used for exit animation of tooltip\n */\n protected _exitAnimation: AnimationFactory;\n\n /**\n * Instance of options provided for this tooltip\n */\n protected _options: TooltipOptions;\n\n /**\n * Indication whether there is active show tooltip request\n */\n protected _showRequest: boolean = false;\n\n /**\n * Indication whether keep open tooltip component\n */\n protected _keepOpen: boolean = false;\n\n /**\n * Timeout that is used for handling mouse move\n */\n protected _timeout: number|null = null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Tooltip text that is displayed, or any data that could be passed to template\n */\n @Input()\n public tooltip?: TData;\n\n /**\n * Indication whether are html tags allowed in tooltip text\n */\n @Input()\n public allowHtml: boolean = false;\n\n /**\n * Instance of tooltip template that is used for rendering\n */\n @Input()\n public template?: TemplateRef<TooltipTemplateContext<TData>>;\n\n /**\n * Options used for displaying tooltip\n */\n @Input()\n public get tooltipOptions(): Partial<TooltipOptions>\n {\n return this._options;\n }\n public set tooltipOptions(value: Partial<TooltipOptions>)\n {\n this._options = extend(true, {}, this._options, value);\n\n this._enterAnimation = this._animationsPlayer.build(this._options.enterAnimation);\n this._exitAnimation = this._animationsPlayer.build(this._options.exitAnimation);\n }\n\n /**\n * Gets or sets indication whether is tooltip visible, if has boolean value, mouse events cant override this\n */\n @Input()\n public tooltipVisible?: boolean;\n\n //######################### public properties - children #########################\n\n /**\n * Instance of template from element content, used for rendering\n */\n @ContentChild(TooltipTemplateDirective)\n public tooltipTemplateChild?: TooltipTemplateDirective;\n\n //######################### constructor #########################\n constructor(protected _viewContainerRef: ViewContainerRef,\n protected _injector: Injector,\n protected _element: ElementRef<HTMLElement>,\n protected _animationsPlayer: AnimationBuilder,\n @Inject(DOCUMENT) protected _document: Document,\n @Inject(POSITION) protected _position: Position,\n @Optional() @Inject(TOOLTIP_OPTIONS) options?: Partial<TooltipOptions>,)\n {\n this._options = extend(true, {}, defaultOptions, options);\n\n this._enterAnimation = this._animationsPlayer.build(this._options.enterAnimation);\n this._exitAnimation = this._animationsPlayer.build(this._options.exitAnimation);\n }\n\n //######################### public methods - implementation of OnChanges #########################\n\n /**\n * Called when input value changes\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<TooltipDirective>('tooltipVisible') in changes)\n {\n if(this.tooltipVisible)\n {\n this._showTooltip();\n }\n else\n {\n this._hideTooltip();\n }\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(this._timeout)\n {\n clearTimeout(this._timeout);\n }\n\n this._destroyTooltip();\n }\n\n //######################### public methods - host #########################\n\n /**\n * Handles mouse leave event, hover ends\n * @param event - Mouse event that occured\n * @internal\n */\n @HostListener('mouseleave', ['$event'])\n public mouseLeave(event: MouseEvent): void\n {\n if(this._options.stopPropagation)\n {\n event.stopPropagation();\n }\n\n if(isBlank(this.tooltipVisible))\n {\n setTimeout(() =>\n {\n if(!this._keepOpen)\n {\n this._showRequest = false;\n this._hideTooltip();\n }\n }, 10);\n }\n }\n\n /**\n * Handles mouse move event, displaying tooltip\n * @param event - Mouse event that occured\n * @internal\n */\n @HostListener('mousemove', ['$event'])\n public mouseMove(event: MouseEvent): void\n {\n if(this._options.stopPropagation)\n {\n event.stopPropagation();\n }\n\n this._showRequest = true;\n\n //do nothing if tooltip is visible\n if(this._tooltipComponent || isPresent(this.tooltipVisible))\n {\n return;\n }\n\n if(isPresent(this._timeout))\n {\n clearTimeout(this._timeout);\n }\n\n this._timeout = setTimeout(() =>\n {\n this._timeout = null;\n\n if(this._showRequest)\n {\n this._showTooltip(event);\n\n this._showRequest = false;\n }\n }, this._options.delay) as any;\n }\n\n //######################### protected methods #########################\n\n /**\n * Shows tooltip\n * @param event - Mouse event\n */\n protected _showTooltip(event?: MouseEvent): void\n {\n this._createTooltip();\n\n //if element was not created do nothing\n if(!this._tooltipElement)\n {\n return;\n }\n\n this._showData();\n\n lastValueFrom(this._position.placeElement(this._tooltipElement,\n this._element.nativeElement,\n {\n placement: this._options.position.placement,\n offset: this._options.position.offset,\n flip: true,\n mouseEvent: event,\n autoUpdate: false\n }))\n .then(result => applyPositionResult(result));\n }\n\n /**\n * Hides tooltip\n */\n protected _hideTooltip(): void\n {\n this._destroyTooltip();\n }\n\n /**\n * Destroys tooltip component\n */\n protected _destroyTooltip(): void\n {\n if(this._tooltipComponent)\n {\n const component = this._tooltipComponent;\n const element = this._tooltipElement;\n\n const exitAnimation = this._exitAnimation.create(element);\n\n exitAnimation.onDone(() =>\n {\n component.destroy();\n exitAnimation.destroy();\n });\n \n this._tooltipComponent = undefined;\n this._tooltipElement = undefined;\n\n exitAnimation.play();\n }\n }\n\n /**\n * Creates tooltip renderer component\n */\n protected _createTooltip(): void\n {\n // 0. Destroys tooltip if it exists\n this._destroyTooltip();\n\n // 1. Create a component reference from the component\n this._tooltipComponent = this._viewContainerRef\n .createComponent(this._options.tooltipRenderer,\n {\n injector: this._injector\n });\n\n // 3. Get DOM element from component\n this._tooltipElement = (this._tooltipComponent.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n\n // 4. Append DOM element to the body\n this._document.body.appendChild(this._tooltipElement);\n this._enterAnimation.create(this._tooltipElement).play();\n }\n\n /**\n * Sets data to tooltip component and shows them\n */\n protected _showData(): void\n {\n if(this._tooltipComponent)\n {\n this._tooltipComponent.instance.allowHtml = this.allowHtml;\n this._tooltipComponent.instance.data = this.tooltip;\n this._tooltipComponent.instance.template = this.template ?? this.tooltipTemplateChild?.template;\n this._tooltipComponent.instance.cssClass = this._options.tooltipCssClass;\n\n this._tooltipComponent.instance.registerHoverEvents(() =>\n {\n if(this._options.allowSelection)\n {\n this._keepOpen = true;\n this._showRequest = false;\n }\n },\n () =>\n {\n setTimeout(() =>\n {\n this._keepOpen = false;\n\n if(!this._showRequest)\n {\n this._hideTooltip();\n }\n\n this._showRequest = false;\n }, 5);\n });\n\n this._tooltipComponent.instance.invalidateVisuals();\n }\n }\n\n //######################### ng language server #########################\n \n /**\n * Custom input type for `tooltip` input\n */\n public static ngAcceptInputType_tooltip: any;\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"position.interface.js","sourceRoot":"","sources":["../../../../src/services/position/position.interface.ts"],"names":[],"mappings":"","sourcesContent":["import {Observable} from 'rxjs';\n\nimport {PositionOffset, PositionPlacement} from './position.types';\n\n/**\n * Options for autoupdate specific functionality\n */\nexport interface AutoUpdateOptions\n{\n /**\n * Indication whether update position when ancestor scroll changes\n */\n ancestorScroll: boolean;\n\n /**\n * Indication whether update position when ancestor size changes\n */\n ancestorResize: boolean;\n\n /**\n * Indication whether update position when target element changes size\n */\n elementResize: boolean;\n}\n\n/**\n * Options that are passed to position service\n */\nexport interface PositionOptions\n{\n //######################### properties #########################\n\n /**\n * Placement of target element against source element\n */\n placement: PositionPlacement;\n\n /**\n * Offset which allows moving target element along the cross axis of placement\n */\n offset: PositionOffset;\n\n /**\n * Indication whether perform flip in case of collision (with view boundaries)\n */\n flip: boolean;\n\n /**\n * Indication whether set up 'auto updating' of position\n */\n autoUpdate: boolean|AutoUpdateOptions;\n\n /**\n * Mouse event that occured when positioning was called\n */\n mouseEvent?: MouseEvent;\n}\n\n/**\n * Result of positioning process, storing new coordinates\n */\nexport interface PositionResult<TElement extends Element = any>\n{\n /**\n * Target element to be positioned\n */\n target: TElement;\n\n /**\n * X coordinate of position of target\n */\n x: number;\n\n /**\n * Y coordinate of position of target\n */\n y: number;\n\n /**\n * Indication whether there was flip applied\n */\n flip: boolean;\n\n /**\n * Disposes instance of engine used for positioning\n */\n dispose(): void;\n}\n\n/**\n * Service that is used for positioning two elements against each other\n */\nexport interface Position\n{\n //######################### methods #########################\n\n /**\n * Places target element relatively to source element according options and returns result storing information about new position\n * @param target - Target element to be placed\n * @param source - Source element to be placed against\n * @param options - Optional options with informations about new position\n */\n placeElement(target: Element, source: Element, options?: Partial<PositionOptions>): Observable<PositionResult>;\n}\n"]}
1
+ {"version":3,"file":"position.interface.js","sourceRoot":"","sources":["../../../../src/services/position/position.interface.ts"],"names":[],"mappings":"","sourcesContent":["import {Func1} from '@jscrpt/common';\nimport {Observable} from 'rxjs';\n\nimport {PositionOffsetString, PositionPlacement} from './position.types';\n\n/**\n * Options for autoupdate specific functionality\n */\nexport interface AutoUpdateOptions\n{\n /**\n * Indication whether update position when ancestor scroll changes\n */\n ancestorScroll: boolean;\n\n /**\n * Indication whether update position when ancestor size changes\n */\n ancestorResize: boolean;\n\n /**\n * Indication whether update position when target element changes size\n */\n elementResize: boolean;\n}\n\n/**\n * Defines object which describes offsets for positioned element\n */\nexport interface PositionOffsets\n{\n /**\n * Distance between positioned and reference element.\n */\n mainAxis?: number;\n\n /**\n * Skidding between floating and reference element.\n */\n crossAxis?: number;\n\n /**\n * Works on the same axis as crossAxis but applies only to aligned placements and works logically. The offset is inverted for -end alignments.\n */\n alignmentAxis?: number|null;\n}\n\n/**\n * Stores positioned element and reference element\n */\nexport interface PositionElements<TElement extends Element = Element>\n{\n /**\n * Reference element against which is object positioned\n */\n reference: TElement;\n\n /**\n * Element that is positioned\n */\n floating: TElement;\n}\n\n/**\n * Arguments that are passed during positioning\n */\nexport interface PositionArguments<TElement extends Element = Element>\n{\n /**\n * X coordinate of positioned element\n */\n x: number;\n\n /**\n * Y coordinate of positioned element\n */\n y: number;\n\n /**\n * Elements that are being used during positioning\n */\n elements: PositionElements<TElement>;\n}\n\n/**\n * Options that are passed to position service\n */\nexport interface PositionOptions\n{\n //######################### properties #########################\n\n /**\n * Placement of target element against source element\n */\n placement: PositionPlacement;\n\n /**\n * Offset which allows moving target element along the cross axis of placement, or any chosed direction\n */\n offset: PositionOffsetString|number|PositionOffsets|Func1<number|PositionOffsets, PositionArguments>;\n\n /**\n * Indication whether perform flip in case of collision (with view boundaries)\n */\n flip: boolean;\n\n /**\n * Indication whether set up 'auto updating' of position\n */\n autoUpdate: boolean|AutoUpdateOptions;\n\n /**\n * Mouse event that occured when positioning was called\n */\n mouseEvent?: MouseEvent;\n}\n\n/**\n * Result of positioning process, storing new coordinates\n */\nexport interface PositionResult<TElement extends Element = any>\n{\n /**\n * Target element to be positioned\n */\n target: TElement;\n\n /**\n * X coordinate of position of target\n */\n x: number;\n\n /**\n * Y coordinate of position of target\n */\n y: number;\n\n /**\n * Indication whether there was flip applied\n */\n flip: boolean;\n\n /**\n * Disposes instance of engine used for positioning\n */\n dispose(): void;\n}\n\n/**\n * Service that is used for positioning two elements against each other\n */\nexport interface Position\n{\n //######################### methods #########################\n\n /**\n * Places target element relatively to source element according options and returns result storing information about new position\n * @param target - Target element to be placed\n * @param source - Source element to be placed against\n * @param options - Optional options with informations about new position\n */\n placeElement(target: Element, source: Element, options?: Partial<PositionOptions>): Observable<PositionResult>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"position.types.js","sourceRoot":"","sources":["../../../../src/services/position/position.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,iBA6DX;AA7DD,WAAY,iBAAiB;IAEzB;;OAEG;IACH,uDAAG,CAAA;IAEH;;OAEG;IACH,iEAAQ,CAAA;IAER;;OAEG;IACH,6DAAM,CAAA;IAEN;;OAEG;IACH,yDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAS,CAAA;IAET;;OAEG;IACH,+DAAO,CAAA;IAEP;;OAEG;IACH,2DAAK,CAAA;IAEL;;OAEG;IACH,qEAAU,CAAA;IAEV;;OAEG;IACH,iEAAQ,CAAA;IAER;;OAEG;IACH,6DAAM,CAAA;IAEN;;OAEG;IACH,wEAAW,CAAA;IAEX;;OAEG;IACH,oEAAS,CAAA;AACb,CAAC,EA7DW,iBAAiB,KAAjB,iBAAiB,QA6D5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cA+BX;AA/BD,WAAY,cAAc;IAEtB;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,+DAAU,CAAA;IAEV;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAY,CAAA;IAEZ;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAY,CAAA;AAChB,CAAC,EA/BW,cAAc,KAAd,cAAc,QA+BzB","sourcesContent":["/**\n * Available positions for placement of target element against its source\n */\nexport enum PositionPlacement\n{\n /**\n * Target is placed on the top (above) of source element in the middle of its width\n */\n Top,\n\n /**\n * Target is placed on the top (above) of source element at the start (left) of its width\n */\n TopStart,\n\n /**\n * Target is placed on the top (above) of source element at the end (right) of its width\n */\n TopEnd,\n\n /**\n * Target is placed on the left (before) of source element in the middle of its height\n */\n Left,\n\n /**\n * Target is placed on the left (before) of source element at the start (top) of its height\n */\n LeftStart,\n\n /**\n * Target is placed on the left (before) of source element at the end (bottom) of its height\n */\n LeftEnd,\n\n /**\n * Target is placed on the right (after) of source element in the middle of its height\n */\n Right,\n\n /**\n * Target is placed on the right (after) of source element at the start (top) of its height\n */\n RightStart,\n\n /**\n * Target is placed on the right (after) of source element at the end (bottom) of its height\n */\n RightEnd,\n\n /**\n * Target is placed on the bottom (below) of source element in the middle of its width\n */\n Bottom,\n\n /**\n * Target is placed on the bottom (below) of source element at the start (left) of its width\n */\n BottomStart,\n\n /**\n * Target is placed on the bottom (below) of source element at the end (right) of its width\n */\n BottomEnd\n}\n\n/**\n * Applied offset to position of target in cross axis relative to placement\n */\nexport enum PositionOffset\n{\n /**\n * No offset applied\n */\n None,\n\n /**\n * Offset is calculated at the point where mouse enters source element\n */\n MouseEnter,\n\n /**\n * Positive offset equal to half of size of target\n */\n Half,\n\n /**\n * Negative offset equal to half of size of target\n */\n NegativeHalf,\n\n /**\n * Positive offset equal to full size of target\n */\n Full,\n\n /**\n * Negative offset equal to full size of target\n */\n NegativeFull\n}"]}
1
+ {"version":3,"file":"position.types.js","sourceRoot":"","sources":["../../../../src/services/position/position.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,iBA6DX;AA7DD,WAAY,iBAAiB;IAEzB;;OAEG;IACH,uDAAG,CAAA;IAEH;;OAEG;IACH,iEAAQ,CAAA;IAER;;OAEG;IACH,6DAAM,CAAA;IAEN;;OAEG;IACH,yDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAS,CAAA;IAET;;OAEG;IACH,+DAAO,CAAA;IAEP;;OAEG;IACH,2DAAK,CAAA;IAEL;;OAEG;IACH,qEAAU,CAAA;IAEV;;OAEG;IACH,iEAAQ,CAAA;IAER;;OAEG;IACH,6DAAM,CAAA;IAEN;;OAEG;IACH,wEAAW,CAAA;IAEX;;OAEG;IACH,oEAAS,CAAA;AACb,CAAC,EA7DW,iBAAiB,KAAjB,iBAAiB,QA6D5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cA+BX;AA/BD,WAAY,cAAc;IAEtB;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,+DAAU,CAAA;IAEV;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAY,CAAA;IAEZ;;OAEG;IACH,mDAAI,CAAA;IAEJ;;OAEG;IACH,mEAAY,CAAA;AAChB,CAAC,EA/BW,cAAc,KAAd,cAAc,QA+BzB","sourcesContent":["/**\n * Available positions for placement of target element against its source\n */\nexport enum PositionPlacement\n{\n /**\n * Target is placed on the top (above) of source element in the middle of its width\n */\n Top,\n\n /**\n * Target is placed on the top (above) of source element at the start (left) of its width\n */\n TopStart,\n\n /**\n * Target is placed on the top (above) of source element at the end (right) of its width\n */\n TopEnd,\n\n /**\n * Target is placed on the left (before) of source element in the middle of its height\n */\n Left,\n\n /**\n * Target is placed on the left (before) of source element at the start (top) of its height\n */\n LeftStart,\n\n /**\n * Target is placed on the left (before) of source element at the end (bottom) of its height\n */\n LeftEnd,\n\n /**\n * Target is placed on the right (after) of source element in the middle of its height\n */\n Right,\n\n /**\n * Target is placed on the right (after) of source element at the start (top) of its height\n */\n RightStart,\n\n /**\n * Target is placed on the right (after) of source element at the end (bottom) of its height\n */\n RightEnd,\n\n /**\n * Target is placed on the bottom (below) of source element in the middle of its width\n */\n Bottom,\n\n /**\n * Target is placed on the bottom (below) of source element at the start (left) of its width\n */\n BottomStart,\n\n /**\n * Target is placed on the bottom (below) of source element at the end (right) of its width\n */\n BottomEnd\n}\n\n/**\n * Applied offset to position of target in cross axis relative to placement\n */\nexport enum PositionOffset\n{\n /**\n * No offset applied\n */\n None,\n\n /**\n * Offset is calculated at the point where mouse enters source element\n */\n MouseEnter,\n\n /**\n * Positive offset equal to half of size of target\n */\n Half,\n\n /**\n * Negative offset equal to half of size of target\n */\n NegativeHalf,\n\n /**\n * Positive offset equal to full size of target\n */\n Full,\n\n /**\n * Negative offset equal to full size of target\n */\n NegativeFull\n}\n\n/**\n * Type that represents available names of position offset\n */\nexport type PositionOffsetString = keyof typeof PositionOffset;"]}
@@ -1,6 +1,6 @@
1
1
  import { ApplicationRef, InjectionToken } from '@angular/core';
2
2
  import { enableDebugTools } from '@angular/platform-browser';
3
- import { filter, first } from 'rxjs/operators';
3
+ import { filter, first } from 'rxjs';
4
4
  /**
5
5
  * Method used for extraction of resolve method for promise
6
6
  * @param appStablePromise - Promise which contains resolve method that is going to be extracted
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,gBAA+B;IAEnE,OAAQ,gBAAwB,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IAEnC,IAAI,gBAAgB,CAAC;IACrB,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC;IAEjF,gBAAwB,CAAC,SAAS,GAAG,gBAAgB,CAAC;IAEvD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAkC,IAAI,cAAc,CAAgB,YAAY,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;AAEjK;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAA+C,EAAE,QAAmD,EAAE,eAAyB;IAE/J,eAAe,GAAG,eAAe,IAAI,KAAK,CAAC;IAE3C,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAA+B,EAAE,EAAE;QAEtD,MAAM,MAAM,GAAmB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,QAAQ;aACV,IAAI,CAAC,MAAM,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,EACvC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YAEZ,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAG,eAAe,EAClB;gBACI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;YAED,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEpB,IAAG,gBAAgB,EACnB;gBACI,MAAM,eAAe,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;gBAElE,eAAe,EAAE,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import {NgModuleRef, ApplicationRef, InjectionToken} from '@angular/core';\nimport {enableDebugTools} from '@angular/platform-browser';\nimport {filter, first} from 'rxjs/operators';\n\n/**\n * Method used for extraction of resolve method for promise\n * @param appStablePromise - Promise which contains resolve method that is going to be extracted\n */\nexport function extractAppStableResolve(appStablePromise: Promise<void>): () => void\n{\n return (appStablePromise as any).__resolve;\n}\n\n/**\n * Factory used for creating APP_STABLE promise\n * \n * @internal\n */\nexport function appStablePromiseFactory(): Promise<void>\n{\n let appStableResolve;\n const appStablePromise = new Promise<void>(resolve => appStableResolve = resolve);\n\n (appStablePromise as any).__resolve = appStableResolve;\n\n return appStablePromise;\n}\n\n/**\n * Injection token used for obtaining promise that is resolved when application is first time stable\n */\nexport const APP_STABLE: InjectionToken<Promise<void>> = new InjectionToken<Promise<void>>('APP_STABLE', {providedIn: 'root', factory: appStablePromiseFactory});\n\n/**\n * Runs callback function when angular module is bootstrapped and stable\n * @param moduleRefPromise - Promise for module that was bootstrapped\n * @param callback - Callback that is called\n * @param angularProfiler - Indication that angular profiler should be enabled\n */\nexport function runWhenModuleStable(moduleRefPromise: Promise<NgModuleRef<unknown>>, callback: (moduleRef: NgModuleRef<unknown>) => void, angularProfiler?: boolean): void\n{\n angularProfiler = angularProfiler || false;\n\n moduleRefPromise.then((moduleRef: NgModuleRef<unknown>) => \n {\n const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);\n\n appRef.isStable\n .pipe(filter((isStable: boolean) => isStable),\n first())\n .subscribe(() => \n {\n const appStablePromise = moduleRef.injector.get(APP_STABLE);\n\n if(angularProfiler)\n {\n enableDebugTools(appRef.components[0]);\n }\n\n callback(moduleRef);\n\n if(appStablePromise)\n {\n const resolveAsStable = extractAppStableResolve(appStablePromise);\n\n resolveAsStable();\n }\n });\n });\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,gBAA+B;IAEnE,OAAQ,gBAAwB,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IAEnC,IAAI,gBAAgB,CAAC;IACrB,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC;IAEjF,gBAAwB,CAAC,SAAS,GAAG,gBAAgB,CAAC;IAEvD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAkC,IAAI,cAAc,CAAgB,YAAY,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;AAEjK;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAA+C,EAAE,QAAmD,EAAE,eAAyB;IAE/J,eAAe,GAAG,eAAe,IAAI,KAAK,CAAC;IAE3C,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAA+B,EAAE,EAAE;QAEtD,MAAM,MAAM,GAAmB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,QAAQ;aACV,IAAI,CAAC,MAAM,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,EACvC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YAEZ,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAG,eAAe,EAClB;gBACI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;YAED,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEpB,IAAG,gBAAgB,EACnB;gBACI,MAAM,eAAe,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;gBAElE,eAAe,EAAE,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import {NgModuleRef, ApplicationRef, InjectionToken} from '@angular/core';\nimport {enableDebugTools} from '@angular/platform-browser';\nimport {filter, first} from 'rxjs';\n\n/**\n * Method used for extraction of resolve method for promise\n * @param appStablePromise - Promise which contains resolve method that is going to be extracted\n */\nexport function extractAppStableResolve(appStablePromise: Promise<void>): () => void\n{\n return (appStablePromise as any).__resolve;\n}\n\n/**\n * Factory used for creating APP_STABLE promise\n * \n * @internal\n */\nexport function appStablePromiseFactory(): Promise<void>\n{\n let appStableResolve;\n const appStablePromise = new Promise<void>(resolve => appStableResolve = resolve);\n\n (appStablePromise as any).__resolve = appStableResolve;\n\n return appStablePromise;\n}\n\n/**\n * Injection token used for obtaining promise that is resolved when application is first time stable\n */\nexport const APP_STABLE: InjectionToken<Promise<void>> = new InjectionToken<Promise<void>>('APP_STABLE', {providedIn: 'root', factory: appStablePromiseFactory});\n\n/**\n * Runs callback function when angular module is bootstrapped and stable\n * @param moduleRefPromise - Promise for module that was bootstrapped\n * @param callback - Callback that is called\n * @param angularProfiler - Indication that angular profiler should be enabled\n */\nexport function runWhenModuleStable(moduleRefPromise: Promise<NgModuleRef<unknown>>, callback: (moduleRef: NgModuleRef<unknown>) => void, angularProfiler?: boolean): void\n{\n angularProfiler = angularProfiler || false;\n\n moduleRefPromise.then((moduleRef: NgModuleRef<unknown>) => \n {\n const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);\n\n appRef.isStable\n .pipe(filter((isStable: boolean) => isStable),\n first())\n .subscribe(() => \n {\n const appStablePromise = moduleRef.injector.get(APP_STABLE);\n\n if(angularProfiler)\n {\n enableDebugTools(appRef.components[0]);\n }\n\n callback(moduleRef);\n\n if(appStablePromise)\n {\n const resolveAsStable = extractAppStableResolve(appStablePromise);\n\n resolveAsStable();\n }\n });\n });\n}"]}
@@ -2,6 +2,7 @@ import { Injectable, Inject } from '@angular/core';
2
2
  import { APP_STABLE } from '@anglr/common';
3
3
  import { isPresent } from '@jscrpt/common';
4
4
  import { LogEventLevel } from 'structured-log';
5
+ import { lastValueFrom } from 'rxjs';
5
6
  import { toText, isEnabled } from '../../misc/utils';
6
7
  import { RestSinkConfigService } from './restSinkConfig.service';
7
8
  import { LOGGER_REST_CLIENT } from '../../types/tokens';
@@ -25,9 +26,10 @@ export class RestSinkService {
25
26
  */
26
27
  this._logs = [];
27
28
  isStable.then(() => {
29
+ var _a;
28
30
  this._timer = setInterval(() => {
29
31
  this.flush();
30
- }, this._configSvc.secondsToFlushAfter * 1000);
32
+ }, ((_a = this._configSvc.secondsToFlushAfter) !== null && _a !== void 0 ? _a : 0) * 1000);
31
33
  });
32
34
  }
33
35
  //######################### public methods - implementation of OnDestroy #########################
@@ -85,7 +87,7 @@ export class RestSinkService {
85
87
  return Promise.resolve(null);
86
88
  }
87
89
  try {
88
- promise = this._restClient.log(this._logs).toPromise();
90
+ promise = lastValueFrom(this._restClient.log(this._logs));
89
91
  }
90
92
  catch (e) {
91
93
  console.log(e);
@@ -1 +1 @@
1
- {"version":3,"file":"restSink.service.js","sourceRoot":"","sources":["../../../../../structured-log/src/services/rest/restSink.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {Injectable, Inject} from '@angular/core';\nimport {APP_STABLE} from '@anglr/common';\nimport {isPresent} from '@jscrpt/common';\nimport {Sink, LogEvent, LogEventLevel} from 'structured-log';\n\nimport {toText, isEnabled} from '../../misc/utils';\nimport {RestSinkConfigService} from './restSinkConfig.service';\nimport {LOGGER_REST_CLIENT} from '../../types/tokens';\nimport {LoggerRestClient, RestLog} from '../../types/logger.interface';\n\n/**\n * Sink that is used for storing logs using REST\n */\n@Injectable()\nexport class RestSinkService implements Sink\n{\n //######################### private fields #########################\n\n /**\n * Indication that prototype of MessageTemplate was updated\n */\n private _prototypeUpdated: boolean = false;\n\n /**\n * Array of unflushed logs\n */\n private _logs: RestLog[] = [];\n\n /**\n * Interval timer id\n */\n private _timer: number;\n\n //######################### constructor #########################\n constructor(private _configSvc: RestSinkConfigService,\n @Inject(APP_STABLE) isStable: Promise<void>,\n @Inject(LOGGER_REST_CLIENT) private _restClient: LoggerRestClient)\n {\n isStable.then(() =>\n {\n this._timer = setInterval(() =>\n {\n this.flush();\n }, this._configSvc.secondsToFlushAfter * 1000) as any;\n });\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(isPresent(this._timer))\n {\n clearInterval(this._timer);\n }\n\n this.flush();\n }\n\n //######################### public methods - implementation of Sink #########################\n\n /**\n * Emits events into log\n * @param events - Events to be emitted\n */\n public emit(events: LogEvent[]): void\n {\n if(!events || !events.length)\n {\n return;\n }\n\n let forceFlush = false;\n\n events.forEach(e =>\n {\n if(!this._prototypeUpdated)\n {\n this._updatePrototype(e);\n\n this._prototypeUpdated = true;\n }\n\n if (!isEnabled(this._configSvc.restrictToLevel, e.level))\n {\n return;\n }\n\n const logLevel = LogEventLevel[e.level].toUpperCase();\n const timestamp = e.timestamp;\n const message = e.messageTemplate.render(e.properties);\n\n this._logs.push(\n {\n logLevel,\n message,\n timestamp\n });\n\n if (isEnabled(this._configSvc.immediateFlushMinLevel, e.level))\n {\n forceFlush = true;\n }\n });\n\n //flush if number of records is bigger than max or flush is required\n if(forceFlush || this._logs.length >= this._configSvc.flushAfterNumberOfLogs)\n {\n this.flush();\n }\n }\n\n /**\n * Flushes logs\n */\n public flush(): Promise<void>\n {\n let promise: Promise<void>;\n\n //no logs available\n if(!this._logs.length)\n {\n return Promise.resolve(null);\n }\n\n try\n {\n promise = this._restClient.log(this._logs).toPromise();\n }\n catch(e)\n {\n console.log(e);\n }\n\n this._logs = [];\n\n return promise ?? Promise.resolve(null);\n }\n\n //######################### private methods #########################\n\n /**\n * Updates prototype of MessageTemplate\n */\n private _updatePrototype(e: LogEvent): void\n {\n const messageTemplateInstance = (<any>e.messageTemplate);\n\n if(messageTemplateInstance.constructor && messageTemplateInstance.constructor.prototype && messageTemplateInstance.constructor.prototype.toText)\n {\n messageTemplateInstance.constructor.prototype.toText = toText;\n }\n }\n}"]}
1
+ {"version":3,"file":"restSink.service.js","sourceRoot":"","sources":["../../../../../structured-log/src/services/rest/restSink.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAiB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAC,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAC,MAAM,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;;;AAGtD;;GAEG;AAEH,MAAM,OAAO,eAAe;IAmBxB,iEAAiE;IACjE,YAAoB,UAAiC,EACrB,QAAuB,EACP,WAA6B;QAFzD,eAAU,GAAV,UAAU,CAAuB;QAEL,gBAAW,GAAX,WAAW,CAAkB;QApB7E,oEAAoE;QAEpE;;WAEG;QACK,sBAAiB,GAAY,KAAK,CAAC;QAE3C;;WAEG;QACK,UAAK,GAAc,EAAE,CAAC;QAY1B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;;YAEf,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;gBAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,EAAE,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAQ,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;QAEd,IAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;YACI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,6FAA6F;IAE7F;;;OAGG;IACI,IAAI,CAAC,MAAkB;QAE1B,IAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAC5B;YACI,OAAO;SACV;QAED,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAEf,IAAG,CAAC,IAAI,CAAC,iBAAiB,EAC1B;gBACI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAEzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,EACxD;gBACI,OAAO;aACV;YAED,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAEvD,IAAI,CAAC,KAAK,CAAC,IAAI,CACf;gBACI,QAAQ;gBACR,OAAO;gBACP,SAAS;aACZ,CAAC,CAAC;YAEH,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,EAC9D;gBACI,UAAU,GAAG,IAAI,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAC5E;YACI,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAED;;OAEG;IACI,KAAK;QAER,IAAI,OAAsB,CAAC;QAE3B,mBAAmB;QACnB,IAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EACrB;YACI,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC;QAED,IACA;YACI,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;QACD,OAAM,CAAC,EACP;YACI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;QAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,OAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,qEAAqE;IAErE;;OAEG;IACK,gBAAgB,CAAC,CAAW;QAEhC,MAAM,uBAAuB,GAAS,CAAC,CAAC,eAAgB,CAAC;QAEzD,IAAG,uBAAuB,CAAC,WAAW,IAAI,uBAAuB,CAAC,WAAW,CAAC,SAAS,IAAI,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAC/I;YACI,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;SACjE;IACL,CAAC;;4GA7IQ,eAAe,uDAqBJ,UAAU,aACV,kBAAkB;gHAtB7B,eAAe;2FAAf,eAAe;kBAD3B,UAAU;;0BAsBM,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,kBAAkB","sourcesContent":["import {Injectable, Inject} from '@angular/core';\nimport {APP_STABLE} from '@anglr/common';\nimport {isPresent} from '@jscrpt/common';\nimport {Sink, LogEvent, LogEventLevel} from 'structured-log';\nimport {lastValueFrom} from 'rxjs';\n\nimport {toText, isEnabled} from '../../misc/utils';\nimport {RestSinkConfigService} from './restSinkConfig.service';\nimport {LOGGER_REST_CLIENT} from '../../types/tokens';\nimport {LoggerRestClient, RestLog} from '../../types/logger.interface';\n\n/**\n * Sink that is used for storing logs using REST\n */\n@Injectable()\nexport class RestSinkService implements Sink\n{\n //######################### private fields #########################\n\n /**\n * Indication that prototype of MessageTemplate was updated\n */\n private _prototypeUpdated: boolean = false;\n\n /**\n * Array of unflushed logs\n */\n private _logs: RestLog[] = [];\n\n /**\n * Interval timer id\n */\n private _timer: number|undefined|null;\n\n //######################### constructor #########################\n constructor(private _configSvc: RestSinkConfigService,\n @Inject(APP_STABLE) isStable: Promise<void>,\n @Inject(LOGGER_REST_CLIENT) private _restClient: LoggerRestClient)\n {\n isStable.then(() =>\n {\n this._timer = setInterval(() =>\n {\n this.flush();\n }, (this._configSvc.secondsToFlushAfter ?? 0) * 1000) as any;\n });\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(isPresent(this._timer))\n {\n clearInterval(this._timer);\n }\n\n this.flush();\n }\n\n //######################### public methods - implementation of Sink #########################\n\n /**\n * Emits events into log\n * @param events - Events to be emitted\n */\n public emit(events: LogEvent[]): void\n {\n if(!events || !events.length)\n {\n return;\n }\n\n let forceFlush = false;\n\n events.forEach(e =>\n {\n if(!this._prototypeUpdated)\n {\n this._updatePrototype(e);\n\n this._prototypeUpdated = true;\n }\n\n if (!isEnabled(this._configSvc.restrictToLevel, e.level))\n {\n return;\n }\n\n const logLevel = LogEventLevel[e.level].toUpperCase();\n const timestamp = e.timestamp;\n const message = e.messageTemplate.render(e.properties);\n\n this._logs.push(\n {\n logLevel,\n message,\n timestamp\n });\n\n if (isEnabled(this._configSvc.immediateFlushMinLevel, e.level))\n {\n forceFlush = true;\n }\n });\n\n //flush if number of records is bigger than max or flush is required\n if(forceFlush || this._logs.length >= this._configSvc.flushAfterNumberOfLogs)\n {\n this.flush();\n }\n }\n\n /**\n * Flushes logs\n */\n public flush(): Promise<void>\n {\n let promise: Promise<void>;\n\n //no logs available\n if(!this._logs.length)\n {\n return Promise.resolve(null);\n }\n\n try\n {\n promise = lastValueFrom(this._restClient.log(this._logs));\n }\n catch(e)\n {\n console.log(e);\n }\n\n this._logs = [];\n\n return promise ?? Promise.resolve(null);\n }\n\n //######################### private methods #########################\n\n /**\n * Updates prototype of MessageTemplate\n */\n private _updatePrototype(e: LogEvent): void\n {\n const messageTemplateInstance = (<any>e.messageTemplate);\n\n if(messageTemplateInstance.constructor && messageTemplateInstance.constructor.prototype && messageTemplateInstance.constructor.prototype.toText)\n {\n messageTemplateInstance.constructor.prototype.toText = toText;\n }\n }\n}"]}
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { PositionOffset, PositionPlacement, POSITION } from '@anglr/common';
3
- import { extend, isEmptyObject } from '@jscrpt/common';
3
+ import { extend, isEmptyObject, isFunction, isJsObject, isNumber, nameof } from '@jscrpt/common';
4
4
  import { computePosition, autoUpdate, offset, flip } from '@floating-ui/dom';
5
5
  import { Observable } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
@@ -10,8 +10,8 @@ import * as i0 from "@angular/core";
10
10
  const defaultOptions = {
11
11
  autoUpdate: false,
12
12
  flip: false,
13
- offset: PositionOffset.None,
14
- placement: PositionPlacement.Top
13
+ offset: nameof('None'),
14
+ placement: PositionPlacement.TopStart,
15
15
  };
16
16
  /**
17
17
  * Service that is used for positioning two elements against each other, using floating-ui dom implementation
@@ -31,7 +31,7 @@ export class FloatingUiDomPosition {
31
31
  const runComputation = async () => {
32
32
  const result = await computePosition(source, target, {
33
33
  placement: this._getPlacement(computedOptions),
34
- middleware: middlewares
34
+ middleware: middlewares,
35
35
  });
36
36
  if (computedOptions.autoUpdate) {
37
37
  subscriber.next({
@@ -91,67 +91,85 @@ export class FloatingUiDomPosition {
91
91
  * @param options - Options that contains definition of offset
92
92
  */
93
93
  _setOffset(middlewares, options) {
94
- if (options.offset != PositionOffset.None) {
95
- if (options.offset == PositionOffset.MouseEnter) {
96
- //fallback if not supported placement used
97
- if (options.placement == PositionPlacement.Left ||
98
- options.placement == PositionPlacement.LeftStart ||
99
- options.placement == PositionPlacement.LeftEnd ||
100
- options.placement == PositionPlacement.Right ||
101
- options.placement == PositionPlacement.RightStart ||
102
- options.placement == PositionPlacement.RightEnd ||
103
- options.placement == PositionPlacement.Bottom ||
104
- options.placement == PositionPlacement.BottomEnd ||
105
- options.placement == PositionPlacement.Top ||
106
- options.placement == PositionPlacement.TopEnd) {
107
- options.placement = PositionPlacement.TopStart;
108
- }
94
+ //no offset
95
+ if (options.offset === PositionOffset[PositionOffset.None]) {
96
+ return;
97
+ }
98
+ if (options.offset === PositionOffset[PositionOffset.MouseEnter]) {
99
+ //fallback if not supported placement used
100
+ if (options.placement == PositionPlacement.Left ||
101
+ options.placement == PositionPlacement.LeftStart ||
102
+ options.placement == PositionPlacement.LeftEnd ||
103
+ options.placement == PositionPlacement.Right ||
104
+ options.placement == PositionPlacement.RightStart ||
105
+ options.placement == PositionPlacement.RightEnd ||
106
+ options.placement == PositionPlacement.Bottom ||
107
+ options.placement == PositionPlacement.BottomEnd ||
108
+ options.placement == PositionPlacement.Top ||
109
+ options.placement == PositionPlacement.TopEnd) {
110
+ options.placement = PositionPlacement.TopStart;
109
111
  }
110
- middlewares.push(offset(({ floating, placement }) => {
111
- if (options.offset == PositionOffset.MouseEnter && options.mouseEvent) {
112
- return {
113
- crossAxis: options.mouseEvent.x - options.mouseEvent.target.getBoundingClientRect().x
114
- };
115
- }
116
- let dimension;
117
- if (placement == 'bottom' || placement == 'bottom-start' || placement == 'bottom-end' ||
118
- placement == 'top' || placement == 'top-start' || placement == 'top-end') {
119
- dimension = floating.width;
120
- }
121
- else {
122
- dimension = floating.height;
123
- }
124
- switch (options.offset) {
125
- default:
126
- {
127
- dimension = 0;
128
- break;
129
- }
130
- case PositionOffset.Full:
131
- {
132
- break;
133
- }
134
- case PositionOffset.Half:
135
- {
136
- dimension /= 2;
137
- break;
138
- }
139
- case PositionOffset.NegativeFull:
140
- {
141
- dimension *= -1;
142
- break;
143
- }
144
- case PositionOffset.NegativeHalf:
145
- {
146
- dimension *= -.5;
147
- break;
148
- }
149
- }
112
+ }
113
+ middlewares.push(offset(({ elements, placement, x, y }) => {
114
+ //offset is function
115
+ if (isFunction(options.offset)) {
116
+ return options.offset({ elements, x, y });
117
+ }
118
+ const { floating } = elements;
119
+ if (options.offset === PositionOffset[PositionOffset.MouseEnter] && options.mouseEvent) {
150
120
  return {
151
- crossAxis: dimension
121
+ crossAxis: options.mouseEvent.x - options.mouseEvent.target.getBoundingClientRect().x
152
122
  };
153
- }));
154
- }
123
+ }
124
+ const stringOffset = options.offset;
125
+ //offset is object
126
+ if (isJsObject(options.offset)) {
127
+ return options.offset;
128
+ }
129
+ //offset is skidding number
130
+ if (isNumber(stringOffset)) {
131
+ return {
132
+ crossAxis: stringOffset,
133
+ };
134
+ }
135
+ let dimension;
136
+ if (placement == 'bottom' || placement == 'bottom-start' || placement == 'bottom-end' ||
137
+ placement == 'top' || placement == 'top-start' || placement == 'top-end') {
138
+ dimension = floating.width;
139
+ }
140
+ else {
141
+ dimension = floating.height;
142
+ }
143
+ switch (stringOffset) {
144
+ default:
145
+ {
146
+ dimension = 0;
147
+ break;
148
+ }
149
+ case PositionOffset[PositionOffset.Full]:
150
+ {
151
+ break;
152
+ }
153
+ case PositionOffset[PositionOffset.Half]:
154
+ {
155
+ dimension /= 2;
156
+ break;
157
+ }
158
+ case PositionOffset[PositionOffset.NegativeFull]:
159
+ {
160
+ dimension *= -1;
161
+ break;
162
+ }
163
+ case PositionOffset[PositionOffset.NegativeHalf]:
164
+ {
165
+ dimension *= -.5;
166
+ break;
167
+ }
168
+ }
169
+ return {
170
+ crossAxis: dimension
171
+ };
172
+ }));
155
173
  }
156
174
  /**
157
175
  * Gets floating ui placement from position placement
@@ -1 +1 @@
1
- {"version":3,"file":"floatingUiDomPosition.service.js","sourceRoot":"","sources":["../../../../floating-ui/src/services/floatingUiDomPosition.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {ClassProvider, Injectable} from '@angular/core';\nimport {Position, PositionResult, PositionOptions, PositionOffset, PositionPlacement, AutoUpdateOptions, POSITION} from '@anglr/common';\nimport {extend, isEmptyObject} from '@jscrpt/common';\nimport {computePosition, Placement, autoUpdate, Middleware, offset, flip} from '@floating-ui/dom';\nimport {Observable} from 'rxjs';\n\n/**\n * Default options for `FloatingUiDomPosition` implementation\n */\nconst defaultOptions: PositionOptions =\n{\n autoUpdate: false,\n flip: false,\n offset: PositionOffset.None,\n placement: PositionPlacement.Top\n};\n\n/**\n * Service that is used for positioning two elements against each other, using floating-ui dom implementation\n */\n@Injectable()\nexport class FloatingUiDomPosition implements Position\n{\n //######################### public methods - implementation of Position #########################\n\n /**\n * @inheritdoc\n */\n public placeElement(target: Element, source: Element, options?: Partial<PositionOptions>): Observable<PositionResult>\n {\n return new Observable(subscriber =>\n {\n (async () =>\n {\n const computedOptions = extend({}, defaultOptions, options);\n const middlewares: Middleware[] = [];\n\n this._setOffset(middlewares, computedOptions);\n this._setFlip(middlewares, computedOptions);\n\n const runComputation = async () =>\n {\n const result = await computePosition(source,\n target as HTMLElement,\n {\n placement: this._getPlacement(computedOptions),\n middleware: middlewares\n });\n\n if(computedOptions.autoUpdate)\n {\n subscriber.next(\n {\n target,\n dispose,\n flip: !!result.middlewareData.flip && !isEmptyObject(result.middlewareData.flip),\n x: result.x,\n y: result.y\n });\n }\n\n return result;\n };\n \n let dispose = () => {};\n\n if(computedOptions.autoUpdate)\n {\n let options: AutoUpdateOptions;\n\n if(computedOptions.autoUpdate === true)\n {\n options =\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true\n };\n }\n else\n {\n options = computedOptions.autoUpdate;\n }\n\n dispose = autoUpdate(source,\n target as HTMLElement,\n runComputation,\n options);\n }\n\n const result = await runComputation();\n\n subscriber.next(\n {\n target,\n dispose,\n flip: !!result.middlewareData.flip && !isEmptyObject(result.middlewareData.flip),\n x: result.x,\n y: result.y\n });\n\n if(!computedOptions.autoUpdate)\n {\n subscriber.complete();\n }\n })();\n });\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets flip middleware\n * @param middlewares - Array of middlewares that will set\n * @param options - Options that contains definition of flip\n */\n protected _setFlip(middlewares: Middleware[], options: PositionOptions): void\n {\n if(options.flip)\n {\n middlewares.push(flip());\n }\n }\n\n /**\n * Sets offset middleware\n * @param middlewares - Array of middlewares that will set\n * @param options - Options that contains definition of offset\n */\n protected _setOffset(middlewares: Middleware[], options: PositionOptions): void\n {\n if(options.offset != PositionOffset.None)\n {\n if(options.offset == PositionOffset.MouseEnter)\n {\n //fallback if not supported placement used\n if(options.placement == PositionPlacement.Left ||\n options.placement == PositionPlacement.LeftStart ||\n options.placement == PositionPlacement.LeftEnd ||\n options.placement == PositionPlacement.Right ||\n options.placement == PositionPlacement.RightStart ||\n options.placement == PositionPlacement.RightEnd ||\n options.placement == PositionPlacement.Bottom ||\n options.placement == PositionPlacement.BottomEnd ||\n options.placement == PositionPlacement.Top ||\n options.placement == PositionPlacement.TopEnd)\n {\n options.placement = PositionPlacement.TopStart;\n }\n }\n\n middlewares.push(offset(({floating, placement}) =>\n {\n if(options.offset == PositionOffset.MouseEnter && options.mouseEvent)\n {\n return {\n crossAxis: options.mouseEvent.x - (options.mouseEvent.target as HTMLElement).getBoundingClientRect().x\n };\n }\n\n let dimension: number;\n\n if(placement == 'bottom' || placement == 'bottom-start' || placement == 'bottom-end' ||\n placement == 'top' || placement == 'top-start' || placement == 'top-end')\n {\n dimension = floating.width;\n }\n else\n {\n dimension = floating.height;\n }\n\n switch(options.offset)\n {\n default:\n {\n dimension = 0;\n\n break;\n }\n case PositionOffset.Full:\n {\n break;\n }\n case PositionOffset.Half:\n {\n dimension /= 2;\n\n break;\n }\n case PositionOffset.NegativeFull:\n {\n dimension *= -1;\n\n break;\n }\n case PositionOffset.NegativeHalf:\n {\n dimension *= -.5;\n\n break;\n }\n }\n\n return {\n crossAxis: dimension\n };\n }));\n }\n }\n\n /**\n * Gets floating ui placement from position placement\n * @param options - Options containing position placement\n */\n protected _getPlacement(options: PositionOptions): Placement\n {\n switch(options.placement)\n {\n default:\n // case PositionPlacement.Top:\n {\n return 'top';\n }\n case PositionPlacement.TopStart:\n {\n return 'top-start';\n }\n case PositionPlacement.TopEnd:\n {\n return 'top-end';\n }\n case PositionPlacement.Bottom:\n {\n return 'bottom';\n }\n case PositionPlacement.BottomStart:\n {\n return 'bottom-start';\n }\n case PositionPlacement.BottomEnd:\n {\n return 'bottom-end';\n }\n case PositionPlacement.Left:\n {\n return 'left';\n }\n case PositionPlacement.LeftStart:\n {\n return 'left-start';\n }\n case PositionPlacement.LeftEnd:\n {\n return 'left-end';\n }\n case PositionPlacement.Right:\n {\n return 'right';\n }\n case PositionPlacement.RightStart:\n {\n return 'right-start';\n }\n case PositionPlacement.RightEnd:\n {\n return 'right-end';\n }\n }\n }\n}\n\n/**\n * Provider for floating ui position implementation\n */\nexport const FLOATING_UI_POSITION: ClassProvider =\n{\n provide: POSITION,\n useClass: FloatingUiDomPosition\n};"]}
1
+ {"version":3,"file":"floatingUiDomPosition.service.js","sourceRoot":"","sources":["../../../../floating-ui/src/services/floatingUiDomPosition.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {ClassProvider, Injectable} from '@angular/core';\nimport {Position, PositionResult, PositionOptions, PositionOffset, PositionPlacement, AutoUpdateOptions, POSITION, PositionOffsetString, PositionOffsets} from '@anglr/common';\nimport {extend, isEmptyObject, isFunction, isJsObject, isNumber, nameof} from '@jscrpt/common';\nimport {computePosition, Placement, autoUpdate, Middleware, offset, flip} from '@floating-ui/dom';\nimport {Observable} from 'rxjs';\n\n/**\n * Default options for `FloatingUiDomPosition` implementation\n */\nconst defaultOptions: PositionOptions =\n{\n autoUpdate: false,\n flip: false,\n offset: nameof<typeof PositionOffset>('None') as PositionOffsetString,\n placement: PositionPlacement.TopStart,\n};\n\n/**\n * Service that is used for positioning two elements against each other, using floating-ui dom implementation\n */\n@Injectable()\nexport class FloatingUiDomPosition implements Position\n{\n //######################### public methods - implementation of Position #########################\n\n /**\n * @inheritdoc\n */\n public placeElement(target: Element, source: Element, options?: Partial<PositionOptions>): Observable<PositionResult>\n {\n return new Observable(subscriber =>\n {\n (async () =>\n {\n const computedOptions = extend({}, defaultOptions, options);\n const middlewares: Middleware[] = [];\n\n this._setOffset(middlewares, computedOptions);\n this._setFlip(middlewares, computedOptions);\n\n const runComputation = async () =>\n {\n const result = await computePosition(source,\n target as HTMLElement,\n {\n placement: this._getPlacement(computedOptions),\n middleware: middlewares,\n });\n\n if(computedOptions.autoUpdate)\n {\n subscriber.next(\n {\n target,\n dispose,\n flip: !!result.middlewareData.flip && !isEmptyObject(result.middlewareData.flip),\n x: result.x,\n y: result.y\n });\n }\n\n return result;\n };\n \n let dispose = () => {};\n\n if(computedOptions.autoUpdate)\n {\n let options: AutoUpdateOptions;\n\n if(computedOptions.autoUpdate === true)\n {\n options =\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true\n };\n }\n else\n {\n options = computedOptions.autoUpdate;\n }\n\n dispose = autoUpdate(source,\n target as HTMLElement,\n runComputation,\n options);\n }\n\n const result = await runComputation();\n\n subscriber.next(\n {\n target,\n dispose,\n flip: !!result.middlewareData.flip && !isEmptyObject(result.middlewareData.flip),\n x: result.x,\n y: result.y\n });\n\n if(!computedOptions.autoUpdate)\n {\n subscriber.complete();\n }\n })();\n });\n }\n\n //######################### protected methods #########################\n\n /**\n * Sets flip middleware\n * @param middlewares - Array of middlewares that will set\n * @param options - Options that contains definition of flip\n */\n protected _setFlip(middlewares: Middleware[], options: PositionOptions): void\n {\n if(options.flip)\n {\n middlewares.push(flip());\n }\n }\n\n /**\n * Sets offset middleware\n * @param middlewares - Array of middlewares that will set\n * @param options - Options that contains definition of offset\n */\n protected _setOffset(middlewares: Middleware[], options: PositionOptions): void\n {\n //no offset\n if(options.offset === PositionOffset[PositionOffset.None])\n {\n return;\n }\n\n if(options.offset === PositionOffset[PositionOffset.MouseEnter])\n {\n //fallback if not supported placement used\n if(options.placement == PositionPlacement.Left ||\n options.placement == PositionPlacement.LeftStart ||\n options.placement == PositionPlacement.LeftEnd ||\n options.placement == PositionPlacement.Right ||\n options.placement == PositionPlacement.RightStart ||\n options.placement == PositionPlacement.RightEnd ||\n options.placement == PositionPlacement.Bottom ||\n options.placement == PositionPlacement.BottomEnd ||\n options.placement == PositionPlacement.Top ||\n options.placement == PositionPlacement.TopEnd)\n {\n options.placement = PositionPlacement.TopStart;\n }\n }\n\n middlewares.push(offset(({elements, placement, x, y}) =>\n {\n //offset is function\n if(isFunction(options.offset))\n {\n return options.offset({elements, x, y});\n }\n\n const {floating} = elements;\n\n if(options.offset === PositionOffset[PositionOffset.MouseEnter] && options.mouseEvent)\n {\n return {\n crossAxis: options.mouseEvent.x - (options.mouseEvent.target as HTMLElement).getBoundingClientRect().x\n };\n }\n\n const stringOffset = options.offset as PositionOffsetString|number;\n\n //offset is object\n if(isJsObject(options.offset))\n {\n return options.offset as PositionOffsets;\n }\n\n //offset is skidding number\n if(isNumber(stringOffset))\n {\n return {\n crossAxis: stringOffset,\n };\n }\n\n let dimension: number;\n\n if(placement == 'bottom' || placement == 'bottom-start' || placement == 'bottom-end' ||\n placement == 'top' || placement == 'top-start' || placement == 'top-end')\n {\n dimension = floating.width;\n }\n else\n {\n dimension = floating.height;\n }\n\n switch(stringOffset)\n {\n default:\n {\n dimension = 0;\n\n break;\n }\n case PositionOffset[PositionOffset.Full]:\n {\n break;\n }\n case PositionOffset[PositionOffset.Half]:\n {\n dimension /= 2;\n\n break;\n }\n case PositionOffset[PositionOffset.NegativeFull]:\n {\n dimension *= -1;\n\n break;\n }\n case PositionOffset[PositionOffset.NegativeHalf]:\n {\n dimension *= -.5;\n\n break;\n }\n }\n\n return {\n crossAxis: dimension\n };\n }));\n }\n\n /**\n * Gets floating ui placement from position placement\n * @param options - Options containing position placement\n */\n protected _getPlacement(options: PositionOptions): Placement\n {\n switch(options.placement)\n {\n default:\n // case PositionPlacement.Top:\n {\n return 'top';\n }\n case PositionPlacement.TopStart:\n {\n return 'top-start';\n }\n case PositionPlacement.TopEnd:\n {\n return 'top-end';\n }\n case PositionPlacement.Bottom:\n {\n return 'bottom';\n }\n case PositionPlacement.BottomStart:\n {\n return 'bottom-start';\n }\n case PositionPlacement.BottomEnd:\n {\n return 'bottom-end';\n }\n case PositionPlacement.Left:\n {\n return 'left';\n }\n case PositionPlacement.LeftStart:\n {\n return 'left-start';\n }\n case PositionPlacement.LeftEnd:\n {\n return 'left-end';\n }\n case PositionPlacement.Right:\n {\n return 'right';\n }\n case PositionPlacement.RightStart:\n {\n return 'right-start';\n }\n case PositionPlacement.RightEnd:\n {\n return 'right-end';\n }\n }\n }\n}\n\n/**\n * Provider for floating ui position implementation\n */\nexport const FLOATING_UI_POSITION: ClassProvider =\n{\n provide: POSITION,\n useClass: FloatingUiDomPosition\n};"]}
@@ -1,4 +1,5 @@
1
1
  import { Directive, Input, EventEmitter, Output, HostListener } from '@angular/core';
2
+ import { lastValueFrom } from 'rxjs';
2
3
  import { TitledDialogService } from '../../services/titledDialog/titledDialog.service';
3
4
  import { ConfirmationDialogComponent } from '../../components/confirmationDialog/confirmationDialog.component';
4
5
  import * as i0 from "@angular/core";
@@ -58,16 +59,16 @@ export class ConfirmationDialogDirective {
58
59
  this.confirm.emit();
59
60
  return;
60
61
  }
61
- const result = await this._dialog.open(ConfirmationDialogComponent, {
62
+ const result = await lastValueFrom(this._dialog.open(ConfirmationDialogComponent, {
62
63
  title: this.confirmationTitle,
63
64
  width: '33vw',
64
65
  data: {
65
66
  confirmationText: this.confirmationText || undefined,
66
- dialogCancelText: this.confirmationCancel,
67
- dialogConfirmText: this.confirmationConfirm,
68
- cssClasses: this.confirmationCssClasses,
67
+ dialogCancelText: this.confirmationCancel ?? '',
68
+ dialogConfirmText: this.confirmationConfirm ?? '',
69
+ cssClasses: this.confirmationCssClasses ?? {},
69
70
  }
70
- }).afterClosed().toPromise();
71
+ }).afterClosed());
71
72
  if (result) {
72
73
  this.confirm.emit();
73
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"confirmationDialog.directive.js","sourceRoot":"","sources":["../../../../../material/src/directives/confirmationDialog/confirmationDialog.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAC,mBAAmB,EAAC,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAC,2BAA2B,EAAC,MAAM,kEAAkE,CAAC;;;AAG7G;;GAEG;AAKH,MAAM,OAAO,2BAA2B;IAsDpC,iEAAiE;IACjE,YAAoB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QArDhD,gFAAgF;QAEhF;;WAEG;QAEI,qBAAgB,GAAW,SAAS,CAAC;QAE5C;;WAEG;QAEI,sBAAiB,GAAW,cAAc,CAAC;QAElD;;WAEG;QAEI,wBAAmB,GAAW,SAAS,CAAC;QAE/C;;WAEG;QAEI,uBAAkB,GAAW,SAAS,CAAC;QAE9C;;WAEG;QAEI,2BAAsB,GAAiC,SAAS,CAAC;QAExE;;WAEG;QAEI,qBAAgB,GAAY,KAAK,CAAC;QAEzC;;WAEG;QAEI,kCAA6B,GAAY,IAAI,CAAC;QAErD,iFAAiF;QAEjF;;WAEG;QAEI,YAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;IAK9D,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IAEI,KAAK,CAAC,KAAK,CAAC,KAAiB;QAEhC,IAAG,IAAI,CAAC,6BAA6B,EACrC;YACI,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,IAAG,IAAI,CAAC,gBAAgB,EACxB;YACI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB,OAAO;SACV;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAkE,2BAA2B,EACnI;YACI,KAAK,EAAE,IAAI,CAAC,iBAAiB;YAC7B,KAAK,EAAE,MAAM;YACb,IAAI,EACJ;gBACI,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,SAAS;gBACpD,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;gBACzC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB;gBAC3C,UAAU,EAAE,IAAI,CAAC,sBAAsB;aAC1C;SACJ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;QAE7B,IAAG,MAAM,EACT;YACI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACvB;IACL,CAAC;;wHAjGQ,2BAA2B;4GAA3B,2BAA2B;2FAA3B,2BAA2B;kBAJvC,SAAS;mBACV;oBACI,QAAQ,EAAE,gBAAgB;iBAC7B;0GASU,gBAAgB;sBADtB,KAAK;uBAAC,cAAc;gBAOd,iBAAiB;sBADvB,KAAK;gBAOC,mBAAmB;sBADzB,KAAK;gBAOC,kBAAkB;sBADxB,KAAK;gBAOC,sBAAsB;sBAD5B,KAAK;gBAOC,gBAAgB;sBADtB,KAAK;gBAOC,6BAA6B;sBADnC,KAAK;gBASC,OAAO;sBADb,MAAM;gBAcM,KAAK;sBADjB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {Directive, Input, EventEmitter, Output, HostListener} from '@angular/core';\n\nimport {TitledDialogService} from '../../services/titledDialog/titledDialog.service';\nimport {ConfirmationDialogComponent} from '../../components/confirmationDialog/confirmationDialog.component';\nimport {ConfirmationDialogOptions, ConfirmationDialogCssClasses} from '../../misc/interfaces/confirmationDialog.interface';\n\n/**\n * Directive that enables confirmation dialog on click\n */\n@Directive(\n{\n selector: '[confirmation]'\n})\nexport class ConfirmationDialogDirective\n{\n //######################### public properties - inputs #########################\n\n /**\n * Confirmation text that is displayed in dialog\n */\n @Input('confirmation')\n public confirmationText: string = undefined;\n\n /**\n * Title for confirmation dialog\n */\n @Input()\n public confirmationTitle: string = 'Confirmation';\n\n /**\n * Text for confirm confirmation button\n */\n @Input()\n public confirmationConfirm: string = undefined;\n\n /**\n * Text for cancel confirmation button\n */\n @Input()\n public confirmationCancel: string = undefined;\n\n /**\n * Object with css classes to be applied to confirmation dialog component\n */\n @Input()\n public confirmationCssClasses: ConfirmationDialogCssClasses = undefined;\n\n /**\n * Condidition that determines whether display confirmation dialog or skip it and run confirm directly\n */\n @Input()\n public skipConfirmation: boolean = false;\n\n /**\n * Indication whether prevent default and stop propagation of click event, defaults to true\n */\n @Input()\n public preventDefaultsAndPropagation: boolean = true;\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when user confirms confirmation\n */\n @Output()\n public confirm: EventEmitter<void> = new EventEmitter<void>();\n\n //######################### constructor #########################\n constructor(private _dialog: TitledDialogService)\n {\n }\n\n //######################### public methods - host #########################\n\n /**\n * Method called when user clicks on element\n */\n @HostListener('click', ['$event'])\n public async click(event: MouseEvent): Promise<void>\n {\n if(this.preventDefaultsAndPropagation)\n {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if(this.skipConfirmation)\n {\n this.confirm.emit();\n\n return;\n }\n\n const result = await this._dialog.open<ConfirmationDialogComponent, ConfirmationDialogOptions, boolean>(ConfirmationDialogComponent,\n {\n title: this.confirmationTitle,\n width: '33vw',\n data:\n {\n confirmationText: this.confirmationText || undefined,\n dialogCancelText: this.confirmationCancel,\n dialogConfirmText: this.confirmationConfirm,\n cssClasses: this.confirmationCssClasses,\n }\n }).afterClosed().toPromise();\n\n if(result)\n {\n this.confirm.emit();\n }\n }\n}"]}
1
+ {"version":3,"file":"confirmationDialog.directive.js","sourceRoot":"","sources":["../../../../../material/src/directives/confirmationDialog/confirmationDialog.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACnF,OAAO,EAAC,aAAa,EAAC,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAC,mBAAmB,EAAC,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAC,2BAA2B,EAAC,MAAM,kEAAkE,CAAC;;;AAG7G;;GAEG;AAKH,MAAM,OAAO,2BAA2B;IAsDpC,iEAAiE;IACjE,YAAoB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QArDhD,gFAAgF;QAEhF;;WAEG;QAEI,qBAAgB,GAA0B,SAAS,CAAC;QAE3D;;WAEG;QAEI,sBAAiB,GAAW,cAAc,CAAC;QAElD;;WAEG;QAEI,wBAAmB,GAA0B,SAAS,CAAC;QAE9D;;WAEG;QAEI,uBAAkB,GAA0B,SAAS,CAAC;QAE7D;;WAEG;QAEI,2BAAsB,GAAgD,SAAS,CAAC;QAEvF;;WAEG;QAEI,qBAAgB,GAAY,KAAK,CAAC;QAEzC;;WAEG;QAEI,kCAA6B,GAAY,IAAI,CAAC;QAErD,iFAAiF;QAEjF;;WAEG;QAEI,YAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;IAK9D,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IAEI,KAAK,CAAC,KAAK,CAAC,KAAiB;QAEhC,IAAG,IAAI,CAAC,6BAA6B,EACrC;YACI,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,IAAG,IAAI,CAAC,gBAAgB,EACxB;YACI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB,OAAO;SACV;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAkE,2BAA2B,EACjJ;YACI,KAAK,EAAE,IAAI,CAAC,iBAAiB;YAC7B,KAAK,EAAE,MAAM;YACb,IAAI,EACJ;gBACI,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,SAAS;gBACpD,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,IAAI,EAAE;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE;gBACjD,UAAU,EAAE,IAAI,CAAC,sBAAsB,IAAI,EAAE;aAChD;SACJ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAElB,IAAG,MAAM,EACT;YACI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACvB;IACL,CAAC;;wHAjGQ,2BAA2B;4GAA3B,2BAA2B;2FAA3B,2BAA2B;kBAJvC,SAAS;mBACV;oBACI,QAAQ,EAAE,gBAAgB;iBAC7B;0GASU,gBAAgB;sBADtB,KAAK;uBAAC,cAAc;gBAOd,iBAAiB;sBADvB,KAAK;gBAOC,mBAAmB;sBADzB,KAAK;gBAOC,kBAAkB;sBADxB,KAAK;gBAOC,sBAAsB;sBAD5B,KAAK;gBAOC,gBAAgB;sBADtB,KAAK;gBAOC,6BAA6B;sBADnC,KAAK;gBASC,OAAO;sBADb,MAAM;gBAcM,KAAK;sBADjB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {Directive, Input, EventEmitter, Output, HostListener} from '@angular/core';\nimport {lastValueFrom} from 'rxjs';\n\nimport {TitledDialogService} from '../../services/titledDialog/titledDialog.service';\nimport {ConfirmationDialogComponent} from '../../components/confirmationDialog/confirmationDialog.component';\nimport {ConfirmationDialogOptions, ConfirmationDialogCssClasses} from '../../misc/interfaces/confirmationDialog.interface';\n\n/**\n * Directive that enables confirmation dialog on click\n */\n@Directive(\n{\n selector: '[confirmation]'\n})\nexport class ConfirmationDialogDirective\n{\n //######################### public properties - inputs #########################\n\n /**\n * Confirmation text that is displayed in dialog\n */\n @Input('confirmation')\n public confirmationText: string|undefined|null = undefined;\n\n /**\n * Title for confirmation dialog\n */\n @Input()\n public confirmationTitle: string = 'Confirmation';\n\n /**\n * Text for confirm confirmation button\n */\n @Input()\n public confirmationConfirm: string|undefined|null = undefined;\n\n /**\n * Text for cancel confirmation button\n */\n @Input()\n public confirmationCancel: string|undefined|null = undefined;\n\n /**\n * Object with css classes to be applied to confirmation dialog component\n */\n @Input()\n public confirmationCssClasses: ConfirmationDialogCssClasses|undefined|null = undefined;\n\n /**\n * Condidition that determines whether display confirmation dialog or skip it and run confirm directly\n */\n @Input()\n public skipConfirmation: boolean = false;\n\n /**\n * Indication whether prevent default and stop propagation of click event, defaults to true\n */\n @Input()\n public preventDefaultsAndPropagation: boolean = true;\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when user confirms confirmation\n */\n @Output()\n public confirm: EventEmitter<void> = new EventEmitter<void>();\n\n //######################### constructor #########################\n constructor(private _dialog: TitledDialogService)\n {\n }\n\n //######################### public methods - host #########################\n\n /**\n * Method called when user clicks on element\n */\n @HostListener('click', ['$event'])\n public async click(event: MouseEvent): Promise<void>\n {\n if(this.preventDefaultsAndPropagation)\n {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if(this.skipConfirmation)\n {\n this.confirm.emit();\n\n return;\n }\n\n const result = await lastValueFrom(this._dialog.open<ConfirmationDialogComponent, ConfirmationDialogOptions, boolean>(ConfirmationDialogComponent,\n {\n title: this.confirmationTitle,\n width: '33vw',\n data:\n {\n confirmationText: this.confirmationText || undefined,\n dialogCancelText: this.confirmationCancel ?? '',\n dialogConfirmText: this.confirmationConfirm ?? '',\n cssClasses: this.confirmationCssClasses ?? {},\n }\n }).afterClosed());\n\n if(result)\n {\n this.confirm.emit();\n }\n }\n}"]}