@rolatech/angular-services 20.0.0-beta.8 → 20.0.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.
package/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Component, OnInit, OnDestroy, ViewContainerRef, EventEmitter, Provider, EnvironmentProviders } from '@angular/core';
3
3
  import { MatDialogRef, MatDialog } from '@angular/material/dialog';
4
4
  import * as rxjs from 'rxjs';
5
- import { Observable, BehaviorSubject } from 'rxjs';
5
+ import { Observable, BehaviorSubject, Subject } from 'rxjs';
6
6
  import { HttpClient, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
7
7
  import { Location } from '@angular/common';
8
8
  import { Router, ActivatedRoute } from '@angular/router';
@@ -173,9 +173,14 @@ declare class MediaService extends BaseService {
173
173
  }
174
174
 
175
175
  declare class LayoutService {
176
- private breakpointObserver;
176
+ breakpointObserver: BreakpointObserver;
177
+ route: ActivatedRoute;
178
+ router: Router;
177
179
  isHandset$: Observable<boolean>;
178
- constructor(breakpointObserver: BreakpointObserver);
180
+ private _hideFooter;
181
+ hideFooter: i0.Signal<boolean>;
182
+ constructor();
183
+ setHideFooter(v: boolean): void;
179
184
  static ɵfac: i0.ɵɵFactoryDeclaration<LayoutService, never>;
180
185
  static ɵprov: i0.ɵɵInjectableDeclaration<LayoutService>;
181
186
  }
@@ -459,6 +464,10 @@ declare class PropertyService extends BaseService {
459
464
  submitForReview(propertyId: string): Observable<any>;
460
465
  reviewApprove(id: string): Observable<any>;
461
466
  reviewReject(id: string, data: any): Observable<any>;
467
+ export(): Observable<{
468
+ blob: Blob;
469
+ filename: string;
470
+ }>;
462
471
  archived(propertyId: string): Observable<any>;
463
472
  findWishlist(options: any): Observable<Object>;
464
473
  addToWishlist(propertyId: string): Observable<Object>;
@@ -521,6 +530,12 @@ declare class PropertyService extends BaseService {
521
530
  createTenant<T>(data: any): Observable<T>;
522
531
  updateTenant<T>(id: string, data: any): Observable<T>;
523
532
  deleteTenant<T>(id: string): Observable<T>;
533
+ uploadVideoTourInit(propertyId: string, data: any): Observable<any>;
534
+ uploadVideoTourPartsToProperty(propertyId: string, data: FormData): Observable<any>;
535
+ completePartUpload(propertyId: string, data: any): Observable<any>;
536
+ uploadVideoToProperty(propertyId: string, data: any): Observable<any>;
537
+ deletePropertyVideo(propertyId: string, videoId: any): Observable<any>;
538
+ uploadPropertyVideoThumbnail(videoId: any, data: FormData): Observable<any>;
524
539
  static ɵfac: i0.ɵɵFactoryDeclaration<PropertyService, never>;
525
540
  static ɵprov: i0.ɵɵInjectableDeclaration<PropertyService>;
526
541
  }
@@ -641,6 +656,99 @@ declare class CategoryService extends BaseService {
641
656
  static ɵprov: i0.ɵɵInjectableDeclaration<CategoryService>;
642
657
  }
643
658
 
659
+ interface GroupEvent {
660
+ type: 'group';
661
+ id: string;
662
+ title: string;
663
+ mediaUrl?: string;
664
+ link?: string;
665
+ price?: number;
666
+ }
667
+ interface ToolEvent {
668
+ type: 'tool';
669
+ tool: string;
670
+ args: Record<string, unknown>;
671
+ results?: unknown;
672
+ }
673
+
674
+ /** Ordered assistant turn segments (preserve exact server order). */
675
+ type AssistantSegment = {
676
+ kind: 'text';
677
+ text: string;
678
+ } | {
679
+ kind: 'group';
680
+ item: GroupEvent;
681
+ } | {
682
+ kind: 'json';
683
+ data: unknown;
684
+ } | {
685
+ kind: 'tool';
686
+ tool: ToolEvent;
687
+ };
688
+ interface ChatMessage {
689
+ id: string;
690
+ role: 'user' | 'assistant';
691
+ text?: string;
692
+ segments?: AssistantSegment[];
693
+ error?: string;
694
+ done?: boolean;
695
+ createdAt: number;
696
+ }
697
+ declare class ConversationService {
698
+ private assistant;
699
+ private conversationId?;
700
+ private readonly _messages$;
701
+ readonly messages$: rxjs.Observable<ChatMessage[]>;
702
+ private readonly _typing$;
703
+ readonly typing$: rxjs.Observable<boolean>;
704
+ private readonly _streaming$;
705
+ readonly streaming$: rxjs.Observable<boolean>;
706
+ private streamSub?;
707
+ private currentAssistantMsgId?;
708
+ private pendingDelta;
709
+ private rafId;
710
+ private timeoutId;
711
+ private readonly strictMessageSegmentation;
712
+ readonly events$: Subject<{
713
+ kind: "error" | "info";
714
+ text: string;
715
+ }>;
716
+ /** Set known conversationId id (optional). */
717
+ setConversationId(conversationId?: string): void;
718
+ /** Clear current conversation state. */
719
+ dispose(): void;
720
+ /** Stop current stream (e.g., user pressed Stop). */
721
+ cancel(): void;
722
+ /** Send a user message and start streaming an assistant response. */
723
+ send(message: string): void;
724
+ private handleStreamEvent;
725
+ private ensureAssistantMessage;
726
+ private withCurrentAssistant;
727
+ private pushAssistantSegment;
728
+ private appendToLastTextSegment;
729
+ private bufferAssistantMessage;
730
+ private bufferAssistantDelta;
731
+ private scheduleFlush;
732
+ private clearSchedulers;
733
+ private flushPending;
734
+ private pushAssistantError;
735
+ private markAssistantDone;
736
+ private nextId;
737
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationService, never>;
738
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationService>;
739
+ }
740
+
741
+ interface ConversationInitResponse {
742
+ conversationId: string;
743
+ }
744
+ declare class ConversationInitService {
745
+ protected environment: any;
746
+ private http;
747
+ init(message: string): Promise<ConversationInitResponse>;
748
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationInitService, never>;
749
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationInitService>;
750
+ }
751
+
644
752
  declare class LoadingInterceptor {
645
753
  private loadingService;
646
754
  activeRequests: number;
@@ -650,6 +758,14 @@ declare class LoadingInterceptor {
650
758
  static ɵprov: i0.ɵɵInjectableDeclaration<LoadingInterceptor>;
651
759
  }
652
760
 
761
+ declare class HideFooterDirective implements OnInit, OnDestroy {
762
+ private layout;
763
+ ngOnInit(): void;
764
+ ngOnDestroy(): void;
765
+ static ɵfac: i0.ɵɵFactoryDeclaration<HideFooterDirective, never>;
766
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HideFooterDirective, "[rolatechHideFooter]", never, {}, {}, never, never, true, never>;
767
+ }
768
+
653
769
  declare class BackButtonDirective {
654
770
  navigation: NavigationService;
655
771
  constructor();
@@ -662,5 +778,5 @@ declare const SERVICE_DIRECTIVES: Provider[];
662
778
 
663
779
  declare function provideAngularServices(): EnvironmentProviders;
664
780
 
665
- export { AmenityService, BackButtonDirective, BaseService, BookingService, BreadcrumbService, CartEventType, CartService, CategoryService, DialogComponent, DialogService, FacilityService, FeatureService, FulfillmentService, InventoryService, LayoutService, LoadingInterceptor, LoadingService, MediaService, MembershipService, NavigationService, NotificationService, NotificationStore, NotificationTemplateService, OfferingService, OrderPayoutService, OrderService, PaymentService, PostService, ProductCategoryService, ProductService, PropertyService, ResourceCategoryService, ResourceService, SERVICE_DIRECTIVES, SidenavService, SnackBarService, SupportService, ThemeService, TitleService, provideAngularServices };
666
- export type { DialogData, IDynamicDialogConfig };
781
+ export { AmenityService, BackButtonDirective, BaseService, BookingService, BreadcrumbService, CartEventType, CartService, CategoryService, ConversationInitService, ConversationService, DialogComponent, DialogService, FacilityService, FeatureService, FulfillmentService, HideFooterDirective, InventoryService, LayoutService, LoadingInterceptor, LoadingService, MediaService, MembershipService, NavigationService, NotificationService, NotificationStore, NotificationTemplateService, OfferingService, OrderPayoutService, OrderService, PaymentService, PostService, ProductCategoryService, ProductService, PropertyService, ResourceCategoryService, ResourceService, SERVICE_DIRECTIVES, SidenavService, SnackBarService, SupportService, ThemeService, TitleService, provideAngularServices };
782
+ export type { ChatMessage, ConversationInitResponse, DialogData, IDynamicDialogConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-services",
3
- "version": "20.0.0-beta.8",
3
+ "version": "20.0.1",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
@@ -12,7 +12,7 @@
12
12
  "rxjs": "^6.5.3 || ^7.4.0"
13
13
  },
14
14
  "dependencies": {
15
- "@rolatech/angular-common": "20.0.0-beta.8",
15
+ "@rolatech/angular-common": "20.0.1",
16
16
  "tslib": "^2.3.0"
17
17
  },
18
18
  "repository": {
@@ -1 +1 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.fixed{position:fixed}.w-20{width:5rem}.min-w-\[320px\]{min-width:320px}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.text-xl{font-size:1.25rem;line-height:1.75rem}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}html{line-height:normal}
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.fixed{position:fixed}.block{display:block}.w-20{width:5rem}.min-w-\[320px\]{min-width:320px}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.text-xl{font-size:1.25rem;line-height:1.75rem}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}html{line-height:normal}