@veltdev/sdk-dev 6.0.0-beta.1 → 6.0.0-beta.10

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 (61) hide show
  1. package/app/models/data/comment-annotation.data.model.d.ts +7 -0
  2. package/app/models/data/comment-events.data.model.d.ts +29 -0
  3. package/app/models/data/comment-resolver.data.model.d.ts +15 -3
  4. package/app/models/data/resolver.data.model.d.ts +26 -1
  5. package/app/utils/enums.d.ts +29 -0
  6. package/{chunk-HPCLPNY3.js → chunk-3BBCVKQ5.js} +1 -1
  7. package/{chunk-FKZM4T63.js → chunk-3NQO7KT2.js} +1 -1
  8. package/{chunk-P2263MG2.js → chunk-4ICELJP6.js} +1 -1
  9. package/{chunk-2MCCXRU6.js → chunk-4ZCY365X.js} +1 -1
  10. package/{chunk-X453UEMY.js → chunk-5WUV64V6.js} +1 -1
  11. package/{chunk-3KN3NYZR.js → chunk-5Y3GWVF6.js} +1 -1
  12. package/{chunk-LXSCD43J.js → chunk-AHFE2P66.js} +1 -1
  13. package/{chunk-JNJEOJET.js → chunk-B53CSXPI.js} +1 -1
  14. package/{chunk-UZJTB2H6.js → chunk-D5GNGKKF.js} +1 -1
  15. package/{chunk-4HGZF7YE.js → chunk-DNCQDV54.js} +1 -1
  16. package/{chunk-YD4VUEL4.js → chunk-DVSWAW3V.js} +1 -1
  17. package/{chunk-5ZWGZNCN.js → chunk-FGJMQQP7.js} +1 -1
  18. package/{chunk-S4AU5GVL.js → chunk-JBQSOLQ4.js} +1 -1
  19. package/{chunk-IYJWYBXI.js → chunk-K2RBYFUJ.js} +1 -1
  20. package/{chunk-NVFQYVI5.js → chunk-LE6ADPBN.js} +1 -1
  21. package/{chunk-BRIJGI4O.js → chunk-LHFXU553.js} +1 -1
  22. package/chunk-M3Z3OPKG.js +193 -0
  23. package/{chunk-OQBVT36K.js → chunk-MTS7WSOI.js} +1 -1
  24. package/{chunk-3RQKSLIV.js → chunk-NRZ34IWA.js} +1 -1
  25. package/{chunk-X3GYH6JJ.js → chunk-OPFSWVO4.js} +1 -1
  26. package/{chunk-G46CTA6V.js → chunk-PFQD3ZHE.js} +1 -1
  27. package/{chunk-PROSLKM3.js → chunk-PLHC4BWM.js} +1 -1
  28. package/{chunk-V2COGSFG.js → chunk-PRJU4HJ5.js} +1 -1
  29. package/{chunk-KFXLOTXX.js → chunk-QJJZ7GBM.js} +1 -1
  30. package/{chunk-P7SXN2XF.js → chunk-QMH32YWC.js} +1 -1
  31. package/{chunk-ZI5OOBWM.js → chunk-S6JEPTGO.js} +1 -1
  32. package/{chunk-6NYVF3UW.js → chunk-S7XRWLIA.js} +1 -1
  33. package/{chunk-PTTRYFYB.js → chunk-SYNPZ2XP.js} +1 -1
  34. package/{chunk-2BDYFELB.js → chunk-TMURKDBH.js} +1 -1
  35. package/{chunk-WYMNU2Q5.js → chunk-TO3QMX6L.js} +1 -1
  36. package/{chunk-C63JXSXB.js → chunk-TV5S4EJP.js} +1 -1
  37. package/{chunk-RFW75IKO.js → chunk-X7A6MBGM.js} +1 -1
  38. package/chunk-YTPDG6FY.js +167 -0
  39. package/package.json +1 -1
  40. package/velt-activity-log.js +1 -1
  41. package/velt-area.js +1 -1
  42. package/velt-arrow.js +1 -1
  43. package/velt-comment.js +8 -8
  44. package/velt-crdt.js +1 -1
  45. package/velt-cursor.js +1 -1
  46. package/velt-huddle.js +1 -1
  47. package/velt-live-state-sync.js +1 -1
  48. package/velt-notification.js +1 -1
  49. package/velt-presence.js +1 -1
  50. package/velt-reaction.js +1 -1
  51. package/velt-recorder.js +1 -1
  52. package/velt-rewriter.js +1 -1
  53. package/velt-selection.js +1 -1
  54. package/velt-tag.js +1 -1
  55. package/velt-user-invite.js +1 -1
  56. package/velt-user-request.js +1 -1
  57. package/velt-video-player.js +1 -1
  58. package/velt-views.js +1 -1
  59. package/velt.js +9 -11
  60. package/chunk-GD4JQQR2.js +0 -167
  61. package/chunk-MEV4PQAP.js +0 -193
@@ -15,6 +15,13 @@ import { CommentAnnotationViews } from "./views.data.model";
15
15
  export interface CommentAnnotationVisibilityConfig {
16
16
  type: CommentVisibilityType;
17
17
  organizationId?: string;
18
+ /** Organization IDs for 'organizationPrivate' visibility — mirrors CommentVisibilityConfig.organizationIds (display-only). */
19
+ organizationIds?: string[];
20
+ /**
21
+ * User IDs that can see the comment (display-only mirror of the self tokens in
22
+ * `context.accessFields`). For non-public comments this ALWAYS includes the author's
23
+ * userId, reflecting the author self-token invariant (AC-002).
24
+ */
18
25
  userIds?: string[];
19
26
  }
20
27
  /**
@@ -89,6 +89,10 @@ export type CommentEventTypesMap = {
89
89
  [CommentEventTypes.COMMENT_TOOL_CLICKED]: CommentToolClickedEvent;
90
90
  [CommentEventTypes.SIDEBAR_BUTTON_CLICK]: SidebarButtonClickEvent;
91
91
  [CommentEventTypes.SIDEBAR_BUTTON_CLICKED]: SidebarButtonClickedEvent;
92
+ [CommentEventTypes.SIDEBAR_OPEN]: SidebarOpenEvent;
93
+ [CommentEventTypes.SIDEBAR_CLOSE]: SidebarCloseEvent;
94
+ [CommentEventTypes.COMMENT_CLICK]: CommentClickEvent;
95
+ [CommentEventTypes.COMMENT_NAVIGATION_BUTTON_CLICK]: CommentNavigationButtonClickEvent;
92
96
  [CommentEventTypes.ATTACHMENT_DOWNLOAD_CLICKED]: AttachmentDownloadClickedEvent;
93
97
  [CommentEventTypes.COMMENT_SAVED]: CommentSavedEvent;
94
98
  [CommentEventTypes.COMMENT_SAVE_TRIGGERED]: CommentSaveTriggeredEvent;
@@ -347,6 +351,31 @@ export interface SidebarButtonClickEvent {
347
351
  }
348
352
  export interface SidebarButtonClickedEvent extends SidebarButtonClickEvent {
349
353
  }
354
+ /** Fired when the comment sidebar opens. Subscribe via `commentElement.on('sidebarOpen')`. */
355
+ export interface SidebarOpenEvent {
356
+ metadata?: VeltEventMetadata;
357
+ }
358
+ /** Fired when the comment sidebar closes. Subscribe via `commentElement.on('sidebarClose')`. */
359
+ export interface SidebarCloseEvent {
360
+ metadata?: VeltEventMetadata;
361
+ }
362
+ /** Fired when a comment is clicked in the sidebar list. Subscribe via `commentElement.on('commentClick')`. */
363
+ export interface CommentClickEvent {
364
+ documentId?: string | null;
365
+ location?: Location | null;
366
+ targetElementId?: string | null;
367
+ context?: {
368
+ [key: string]: any;
369
+ };
370
+ annotation?: CommentAnnotation;
371
+ metadata?: VeltEventMetadata;
372
+ }
373
+ /**
374
+ * Fired when the navigation ("go to") button on a sidebar comment is clicked.
375
+ * Subscribe via `commentElement.on('commentNavigationButtonClick')`.
376
+ */
377
+ export interface CommentNavigationButtonClickEvent extends CommentClickEvent {
378
+ }
350
379
  export interface AttachmentDownloadClickedEvent {
351
380
  annotationId: string;
352
381
  commentAnnotation: CommentAnnotation;
@@ -1,4 +1,4 @@
1
- import { ResolverActions } from "../../utils/enums";
1
+ import { ResolverActions, CommentResolverSaveEvent } from "../../utils/enums";
2
2
  import { PartialAttachment } from "./attachment-resolver.data.model";
3
3
  import { BaseMetadata } from "./base-metadata.data.model";
4
4
  import { CommentAnnotation } from "./comment-annotation.data.model";
@@ -25,9 +25,21 @@ export interface SaveCommentResolverRequest {
25
25
  commentAnnotation: {
26
26
  [key: string]: PartialCommentAnnotation;
27
27
  };
28
- event?: ResolverActions;
28
+ /**
29
+ * The save event. One of the 4 core PII events (`ResolverActions`) or, when the customer
30
+ * opts in via `ResolverConfig.additionalSaveEvents`, a non-core annotation-level event
31
+ * (`CommentResolverSaveEvent`). See specs/comment-resolver iteration-2.
32
+ */
33
+ event?: ResolverActions | CommentResolverSaveEvent;
29
34
  metadata?: BaseMetadata;
30
35
  commentId?: string;
36
+ /**
37
+ * The comment the action occurred on, resolved from `commentId` against the
38
+ * payload's `commentAnnotation[*].comments` map. Convenience field so the
39
+ * customer backend does not have to re-derive the target comment from
40
+ * `commentId`. Omitted when `commentId` is absent or no matching comment is found.
41
+ */
42
+ targetComment?: PartialComment;
31
43
  }
32
44
  export interface PartialUser {
33
45
  userId: string;
@@ -53,7 +65,7 @@ export interface PartialCommentAnnotationResult {
53
65
  [annotationId: string]: PartialCommentAnnotation;
54
66
  } | null;
55
67
  originalData: CommentAnnotation | null;
56
- eventType?: ResolverActions;
68
+ eventType?: ResolverActions | CommentResolverSaveEvent;
57
69
  }
58
70
  export interface PartialTargetTextRange {
59
71
  text: string;
@@ -1,6 +1,20 @@
1
+ import { CommentResolverSaveEvent } from "../../utils/enums";
1
2
  export interface ResolverEndpointConfig {
2
3
  url: string;
3
- headers?: Record<string, string>;
4
+ /**
5
+ * Request headers. Either a static object (captured once) OR an async function
6
+ * resolved on EVERY request — use the function form to forward a short-lived
7
+ * per-user token (re-evaluated per retry attempt, so each retry gets a fresh token).
8
+ */
9
+ headers?: Record<string, string> | (() => Promise<Record<string, string>>);
10
+ /**
11
+ * Forwarded to `fetch()` so cookie/session auth works for resolver endpoints.
12
+ * When unset the `credentials` key is omitted from the request, so `fetch` keeps
13
+ * its browser default of `'same-origin'` — byte-identical to the prior behavior
14
+ * (same-origin cookies are still sent). Set `'include'` for cross-origin cookie/
15
+ * session auth, or `'omit'` to explicitly suppress credentials.
16
+ */
17
+ credentials?: 'include' | 'same-origin' | 'omit';
4
18
  }
5
19
  export interface ResolverConfig {
6
20
  resolveTimeout?: number;
@@ -10,10 +24,21 @@ export interface ResolverConfig {
10
24
  resolveUsersConfig?: ResolveUsersConfig;
11
25
  fieldsToRemove?: string[];
12
26
  additionalFields?: string[];
27
+ /**
28
+ * Opt-in list of additional (non-core) annotation-level save events the customer
29
+ * wants delivered to the existing save endpoint, beyond the 4 core PII events
30
+ * (add/update/delete). Each entry's `event` is a `CommentResolverSaveEvent`.
31
+ * Array-of-objects for forward-extensibility. Absent/empty ⇒ iteration-1 behavior
32
+ * (no extra events) — see specs/comment-resolver iteration-2.
33
+ */
34
+ additionalSaveEvents?: AdditionalSaveEventConfig[];
13
35
  getConfig?: ResolverEndpointConfig;
14
36
  saveConfig?: ResolverEndpointConfig;
15
37
  deleteConfig?: ResolverEndpointConfig;
16
38
  }
39
+ export interface AdditionalSaveEventConfig {
40
+ event: CommentResolverSaveEvent;
41
+ }
17
42
  export interface ResolveUsersConfig {
18
43
  organization?: boolean;
19
44
  folder?: boolean;
@@ -33,6 +33,31 @@ export declare enum ResolverActions {
33
33
  RECORDER_ANNOTATION_DELETE = "recorder_annotation.delete",
34
34
  ACTIVITY_SAVE = "activity.save"
35
35
  }
36
+ /**
37
+ * Opt-in additional (non-core) comment save events for the Comment Annotations Resolver
38
+ * (specs/comment-resolver iteration-2). Values mirror the non-core `CommentActivityActionTypes`
39
+ * (single source of truth — enforced by a unit test). A self-hosting customer lists these in
40
+ * `ResolverConfig.additionalSaveEvents` to also receive annotation-level events (status change,
41
+ * priority change, assign, …) on the existing save endpoint. The 4 core events keep using
42
+ * `ResolverActions`. Kept in enums.ts (a leaf module) to avoid a
43
+ * resolver.data.model ↔ comment-resolver.data.model import cycle.
44
+ */
45
+ export declare enum CommentResolverSaveEvent {
46
+ STATUS_CHANGE = "comment_annotation.status_change",
47
+ PRIORITY_CHANGE = "comment_annotation.priority_change",
48
+ ASSIGN = "comment_annotation.assign",
49
+ ACCESS_MODE_CHANGE = "comment_annotation.access_mode_change",
50
+ CUSTOM_LIST_CHANGE = "comment_annotation.custom_list_change",
51
+ APPROVE = "comment_annotation.approve",
52
+ ACCEPT = "comment.accept",
53
+ REJECT = "comment.reject",
54
+ SUGGESTION_ACCEPT = "comment_annotation.suggestion_accept",
55
+ SUGGESTION_REJECT = "comment_annotation.suggestion_reject",
56
+ REACTION_ADD = "comment.reaction_add",
57
+ REACTION_DELETE = "comment.reaction_delete",
58
+ SUBSCRIBE = "comment_annotation.subscribe",
59
+ UNSUBSCRIBE = "comment_annotation.unsubscribe"
60
+ }
36
61
  export declare const CommentEventTypes: {
37
62
  readonly ADD_COMMENT_ANNOTATION: "addCommentAnnotation";
38
63
  readonly ADD_COMMENT_ANNOTATION_DRAFT: "addCommentAnnotationDraft";
@@ -70,6 +95,10 @@ export declare const CommentEventTypes: {
70
95
  readonly COMMENT_TOOL_CLICKED: "commentToolClicked";
71
96
  readonly SIDEBAR_BUTTON_CLICK: "sidebarButtonClick";
72
97
  readonly SIDEBAR_BUTTON_CLICKED: "sidebarButtonClicked";
98
+ readonly SIDEBAR_OPEN: "sidebarOpen";
99
+ readonly SIDEBAR_CLOSE: "sidebarClose";
100
+ readonly COMMENT_CLICK: "commentClick";
101
+ readonly COMMENT_NAVIGATION_BUTTON_CLICK: "commentNavigationButtonClick";
73
102
  readonly ATTACHMENT_DOWNLOAD_CLICKED: "attachmentDownloadClicked";
74
103
  readonly COMMENT_SAVED: "commentSaved";
75
104
  readonly COMMENT_SAVE_TRIGGERED: "commentSaveTriggered";
@@ -1,2 +1,2 @@
1
- import{b as L}from"./chunk-LXSCD43J.js";import{ea as z,ga as B}from"./chunk-2BDYFELB.js";import{Fa as r,Ga as S,Gc as N,Kb as T,Nb as f,Ob as D,Pa as s,Qb as h,Ua as I,Ya as O,_a as m,a as y,b as u,ha as w,ia as _,kc as v,lb as p,lc as g,mb as a,nb as d,oi as j,qa as C,sb as E,tb as k,ti as V,vb as F,wa as b,xb as x,zb as c}from"./chunk-GD4JQQR2.js";function A(t,i){if(t&1&&(a(0,"span",6),f(1),v(2,"translate"),d()),t&2){let o=c(2).ngIf;r(),h("",g(2,2,"You are following")," ",o.leaderName)}}function P(t,i){t&1&&(a(0,"span",6),f(1),v(2,"translate"),d()),t&2&&(r(),D(g(2,1,"You are leading.")))}function R(t,i){if(t&1){let o=F();a(0,"div",2),x("click",function(){w(o);let e=c().ngIf,l=c();return _(e.type==="following"?l.closeOverlay():void 0)}),a(1,"div",3),m(2,A,3,4,"span",4)(3,P,3,3,"span",4),a(4,"button",5),x("click",function(){w(o);let e=c(2);return _(e.closeOverlay())}),f(5),v(6,"translate"),v(7,"translate"),d()()()}if(t&2){let o=c().ngIf;T("no-pointer",o.type==="leading"),r(2),p("ngIf",o.type==="following"),r(),p("ngIf",o.type==="leading"),r(2),h("",g(6,6,"Stop")," ",g(7,8,o.type))}}function Y(t,i){if(t&1&&(E(0),m(1,R,8,10,"div",1),k()),t&2){let o=i.ngIf;r(),p("ngIf",o.leaderName!==""||o.type==="leading")}}var te=(()=>{let i=class i extends B{closeOverlay(){this.closeOverlayEvent.emit()}constructor(n,e,l,M){super(e,l),this.loggingService=n,this.elementRef=e,this.themeService=l,this.domService=M,this.closeOverlayEvent=new S,this.componentConfigSignal=C({leaderName:"",type:"following"})}ngOnInit(){}ngAfterViewInit(){try{this.customCssSubscription=this.domService.subscribeInjectCustomCss(this.elementRef)}catch(n){this.loggingService.catch("Error in FollowOverlayComponent ngAfterViewInit: ",n)}}setLeaderName(n){try{this.componentConfigSignal.update(e=>(e=u(y({},e),{leaderName:n}),e))}catch(e){this.loggingService.catch("Error in FollowOverlayComponent setLeaderName: ",e)}}getLeaderName(){return this.componentConfigSignal().leaderName}setType(n){try{this.componentConfigSignal.update(e=>(e=u(y({},e),{type:n}),e))}catch(e){this.loggingService.catch("Error in FollowOverlayComponent setType: ",e)}}ngOnDestroy(){try{super.ngOnDestroy(),this.customCssSubscription?.unsubscribe()}catch(n){this.loggingService.catch("Error in FollowOverlayComponent ngOnDestroy: ",n)}}};i.\u0275fac=function(e){return new(e||i)(s(j),s(b),s(z),s(V))},i.\u0275cmp=I({type:i,selectors:[["snippyly-follow-overlay"]],outputs:{closeOverlayEvent:"closeOverlayEvent"},standalone:!1,features:[O],decls:1,vars:1,consts:[[4,"ngIf"],["data-velt-ignore","","class","follow-overlay-container",3,"no-pointer","click",4,"ngIf"],["data-velt-ignore","",1,"follow-overlay-container",3,"click"],["data-velt-ignore","",1,"follow-dialog"],["data-velt-ignore","","class","follow-text",4,"ngIf"],["data-velt-ignore","",1,"follow-btn",3,"click"],["data-velt-ignore","",1,"follow-text"]],template:function(e,l){e&1&&m(0,Y,2,1,"ng-container",0),e&2&&p("ngIf",l.componentConfigSignal())},dependencies:[N,L],styles:[`html{--velt-base-rem-unit: 1}*[data-snippyly-element=true],*[data-velt-element=true]{font-family:var(--velt-default-font-family)}velt-wireframe{display:none!important}body.velt-pin-dragging iframe{pointer-events:none!important}.follow-overlay-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;z-index:var(--velt-follow-mode-overlay-z-index);display:flex;justify-content:center;align-items:flex-end}.follow-overlay-container .follow-dialog{background-color:var(--legacy-velt-follow-overlay-bg-color);color:var(--legacy-velt-follow-overlay-text-color);font-size:12px;display:flex;justify-content:center;align-items:center;gap:calc((1.2rem + 0px) * var(--velt-base-rem-unit));padding:calc((.9rem + 0px) * var(--velt-base-rem-unit)) calc((1.1rem + 0px) * var(--velt-base-rem-unit));border-radius:90px;margin-bottom:calc((2rem + 0px) * var(--velt-base-rem-unit));box-shadow:0 8px 16px -8px #0f0f0f1a;border:1px solid var(--legacy-velt-follow-overlay-border-color)}.follow-overlay-container .follow-dialog .follow-btn{background-color:var(--legacy-velt-follow-overlay-btn-color);padding:8px 12px;border-radius:90px;display:inline-flex;justify-content:center;align-items:center;border:none;font-weight:600;font-size:14px;cursor:pointer;pointer-events:all}.follow-overlay-container .follow-dialog .follow-btn:hover{transition:background-color .5s;background-color:var(--legacy-velt-follow-overlay-btn-hover-color)}.follow-overlay-container.no-pointer{pointer-events:none}
1
+ import{b as L}from"./chunk-AHFE2P66.js";import{ea as z,ga as B}from"./chunk-TMURKDBH.js";import{Fa as r,Ga as S,Gc as N,Kb as T,Nb as f,Ob as D,Pa as s,Qb as h,Ua as I,Ya as O,_a as m,a as y,b as u,ha as w,ia as _,kc as v,lb as p,lc as g,mb as a,nb as d,pi as j,qa as C,sb as E,tb as k,ui as V,vb as F,wa as b,xb as x,zb as c}from"./chunk-YTPDG6FY.js";function A(t,i){if(t&1&&(a(0,"span",6),f(1),v(2,"translate"),d()),t&2){let o=c(2).ngIf;r(),h("",g(2,2,"You are following")," ",o.leaderName)}}function P(t,i){t&1&&(a(0,"span",6),f(1),v(2,"translate"),d()),t&2&&(r(),D(g(2,1,"You are leading.")))}function R(t,i){if(t&1){let o=F();a(0,"div",2),x("click",function(){w(o);let e=c().ngIf,l=c();return _(e.type==="following"?l.closeOverlay():void 0)}),a(1,"div",3),m(2,A,3,4,"span",4)(3,P,3,3,"span",4),a(4,"button",5),x("click",function(){w(o);let e=c(2);return _(e.closeOverlay())}),f(5),v(6,"translate"),v(7,"translate"),d()()()}if(t&2){let o=c().ngIf;T("no-pointer",o.type==="leading"),r(2),p("ngIf",o.type==="following"),r(),p("ngIf",o.type==="leading"),r(2),h("",g(6,6,"Stop")," ",g(7,8,o.type))}}function Y(t,i){if(t&1&&(E(0),m(1,R,8,10,"div",1),k()),t&2){let o=i.ngIf;r(),p("ngIf",o.leaderName!==""||o.type==="leading")}}var te=(()=>{let i=class i extends B{closeOverlay(){this.closeOverlayEvent.emit()}constructor(n,e,l,M){super(e,l),this.loggingService=n,this.elementRef=e,this.themeService=l,this.domService=M,this.closeOverlayEvent=new S,this.componentConfigSignal=C({leaderName:"",type:"following"})}ngOnInit(){}ngAfterViewInit(){try{this.customCssSubscription=this.domService.subscribeInjectCustomCss(this.elementRef)}catch(n){this.loggingService.catch("Error in FollowOverlayComponent ngAfterViewInit: ",n)}}setLeaderName(n){try{this.componentConfigSignal.update(e=>(e=u(y({},e),{leaderName:n}),e))}catch(e){this.loggingService.catch("Error in FollowOverlayComponent setLeaderName: ",e)}}getLeaderName(){return this.componentConfigSignal().leaderName}setType(n){try{this.componentConfigSignal.update(e=>(e=u(y({},e),{type:n}),e))}catch(e){this.loggingService.catch("Error in FollowOverlayComponent setType: ",e)}}ngOnDestroy(){try{super.ngOnDestroy(),this.customCssSubscription?.unsubscribe()}catch(n){this.loggingService.catch("Error in FollowOverlayComponent ngOnDestroy: ",n)}}};i.\u0275fac=function(e){return new(e||i)(s(j),s(b),s(z),s(V))},i.\u0275cmp=I({type:i,selectors:[["snippyly-follow-overlay"]],outputs:{closeOverlayEvent:"closeOverlayEvent"},standalone:!1,features:[O],decls:1,vars:1,consts:[[4,"ngIf"],["data-velt-ignore","","class","follow-overlay-container",3,"no-pointer","click",4,"ngIf"],["data-velt-ignore","",1,"follow-overlay-container",3,"click"],["data-velt-ignore","",1,"follow-dialog"],["data-velt-ignore","","class","follow-text",4,"ngIf"],["data-velt-ignore","",1,"follow-btn",3,"click"],["data-velt-ignore","",1,"follow-text"]],template:function(e,l){e&1&&m(0,Y,2,1,"ng-container",0),e&2&&p("ngIf",l.componentConfigSignal())},dependencies:[N,L],styles:[`html{--velt-base-rem-unit: 1}*[data-snippyly-element=true],*[data-velt-element=true]{font-family:var(--velt-default-font-family)}velt-wireframe{display:none!important}body.velt-pin-dragging iframe{pointer-events:none!important}.follow-overlay-container{position:fixed;top:0;left:0;width:100%;height:100%;background-color:transparent;z-index:var(--velt-follow-mode-overlay-z-index);display:flex;justify-content:center;align-items:flex-end}.follow-overlay-container .follow-dialog{background-color:var(--legacy-velt-follow-overlay-bg-color);color:var(--legacy-velt-follow-overlay-text-color);font-size:12px;display:flex;justify-content:center;align-items:center;gap:calc((1.2rem + 0px) * var(--velt-base-rem-unit));padding:calc((.9rem + 0px) * var(--velt-base-rem-unit)) calc((1.1rem + 0px) * var(--velt-base-rem-unit));border-radius:90px;margin-bottom:calc((2rem + 0px) * var(--velt-base-rem-unit));box-shadow:0 8px 16px -8px #0f0f0f1a;border:1px solid var(--legacy-velt-follow-overlay-border-color)}.follow-overlay-container .follow-dialog .follow-btn{background-color:var(--legacy-velt-follow-overlay-btn-color);padding:8px 12px;border-radius:90px;display:inline-flex;justify-content:center;align-items:center;border:none;font-weight:600;font-size:14px;cursor:pointer;pointer-events:all}.follow-overlay-container .follow-dialog .follow-btn:hover{transition:background-color .5s;background-color:var(--legacy-velt-follow-overlay-btn-hover-color)}.follow-overlay-container.no-pointer{pointer-events:none}
2
2
  `],encapsulation:3,changeDetection:0});let t=i;return t})();export{te as a};
@@ -1 +1 @@
1
- import{da as I,ea as D,ga as E}from"./chunk-2BDYFELB.js";import{Ua as f,Ya as m,Yh as v,a as s,b as g,da as n,mi as C,oi as y,qa as S,vc as d,wa as u,xc as p}from"./chunk-GD4JQQR2.js";var B=(()=>{let r=class r extends E{set parentLocalUIState(e){try{e&&(this.localUIStateSignal=e,this.isLocalUIStateOwner=!1)}catch{}}get elementRef(){try{return this.hostElementRef}catch{return null}}getServiceComponentConfigSignal(){}constructor(){let e=n(u),t=n(D),o=n(p),l=n(C).get(v),h=n(I),c=n(y);super(e,t,o,l??void 0,void 0,h,c),this.defaultCondition=d(!0,{transform:i=>{try{return typeof i=="string"?i==="true"||i==="":i}catch{return!0}}}),this.isLocalUIStateOwner=!1;try{this.hostElementRef=e,this.themeService=t,this.dynamicDataService=h,this.loggingService=c,this.cd=o,this.commentService=l??void 0,this.initializeLocalUIState()}catch(i){this.loggingService=this.loggingService||c,this.loggingService?.catch?.("Error in V2PrimitiveThemedBase constructor:",i)}}initializeLocalUIState(){this.localUIStateSignal=S(this.getDefaultLocalUIState()),this.isLocalUIStateOwner=!0}getConditionalClassesContext(){return{componentConfigSignal:this.componentConfigSignal}}ngOnInit(){try{this.connectToServiceSignalIfStandalone(),this.dynamicDataService.applyConditionalClasses(this.hostElementRef?.nativeElement,this.getConditionalClassesContext()),this.setupA11yAttributes(),this.isLocalUIStateOwner&&this.setupDarkModeSync()}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase ngOnInit:",e)}}connectToServiceSignalIfStandalone(){try{let e=this.componentConfigSignal();if(!e||!e?.uiState){let t=this.getServiceComponentConfigSignal();t&&(this.componentConfigSignal=t)}}catch(e){this.loggingService.catch("Error connecting to service signal:",e)}}ngOnDestroy(){try{this.darkModeConfigSyncSubscription&&this.darkModeConfigSyncSubscription.unsubscribe(),super.ngOnDestroy()}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase ngOnDestroy:",e)}}setupA11yAttributes(){}setupDarkModeSync(){try{this.darkModeConfigSyncSubscription=this.onDarkModeChange().subscribe(e=>{try{if(this.componentConfigSignal&&typeof this.componentConfigSignal=="function"){let t=this.componentConfigSignal();t&&t.uiState&&t.uiState.darkMode!==e&&this.componentConfigSignal.update(o=>g(s({},o),{uiState:g(s({},o.uiState),{darkMode:e})}))}}catch(t){this.loggingService.catch("Error in darkMode sync subscription:",t)}})}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase setupDarkModeSync:",e)}}};r.\u0275fac=function(t){return new(t||r)},r.\u0275cmp=f({type:r,selectors:[["app-v2-primitive-themed-base"]],inputs:{defaultCondition:[1,"defaultCondition"],parentLocalUIState:"parentLocalUIState"},standalone:!1,features:[m],decls:0,vars:0,template:function(t,o){},encapsulation:2});let a=r;return a})();export{B as a};
1
+ import{da as I,ea as D,ga as E}from"./chunk-TMURKDBH.js";import{Ua as f,Ya as m,Zh as v,a as s,b as g,da as n,ni as C,pi as y,qa as S,vc as d,wa as u,xc as p}from"./chunk-YTPDG6FY.js";var B=(()=>{let r=class r extends E{set parentLocalUIState(e){try{e&&(this.localUIStateSignal=e,this.isLocalUIStateOwner=!1)}catch{}}get elementRef(){try{return this.hostElementRef}catch{return null}}getServiceComponentConfigSignal(){}constructor(){let e=n(u),t=n(D),o=n(p),l=n(C).get(v),h=n(I),c=n(y);super(e,t,o,l??void 0,void 0,h,c),this.defaultCondition=d(!0,{transform:i=>{try{return typeof i=="string"?i==="true"||i==="":i}catch{return!0}}}),this.isLocalUIStateOwner=!1;try{this.hostElementRef=e,this.themeService=t,this.dynamicDataService=h,this.loggingService=c,this.cd=o,this.commentService=l??void 0,this.initializeLocalUIState()}catch(i){this.loggingService=this.loggingService||c,this.loggingService?.catch?.("Error in V2PrimitiveThemedBase constructor:",i)}}initializeLocalUIState(){this.localUIStateSignal=S(this.getDefaultLocalUIState()),this.isLocalUIStateOwner=!0}getConditionalClassesContext(){return{componentConfigSignal:this.componentConfigSignal}}ngOnInit(){try{this.connectToServiceSignalIfStandalone(),this.dynamicDataService.applyConditionalClasses(this.hostElementRef?.nativeElement,this.getConditionalClassesContext()),this.setupA11yAttributes(),this.isLocalUIStateOwner&&this.setupDarkModeSync()}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase ngOnInit:",e)}}connectToServiceSignalIfStandalone(){try{let e=this.componentConfigSignal();if(!e||!e?.uiState){let t=this.getServiceComponentConfigSignal();t&&(this.componentConfigSignal=t)}}catch(e){this.loggingService.catch("Error connecting to service signal:",e)}}ngOnDestroy(){try{this.darkModeConfigSyncSubscription&&this.darkModeConfigSyncSubscription.unsubscribe(),super.ngOnDestroy()}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase ngOnDestroy:",e)}}setupA11yAttributes(){}setupDarkModeSync(){try{this.darkModeConfigSyncSubscription=this.onDarkModeChange().subscribe(e=>{try{if(this.componentConfigSignal&&typeof this.componentConfigSignal=="function"){let t=this.componentConfigSignal();t&&t.uiState&&t.uiState.darkMode!==e&&this.componentConfigSignal.update(o=>g(s({},o),{uiState:g(s({},o.uiState),{darkMode:e})}))}}catch(t){this.loggingService.catch("Error in darkMode sync subscription:",t)}})}catch(e){this.loggingService.catch("Error in V2PrimitiveThemedBase setupDarkModeSync:",e)}}};r.\u0275fac=function(t){return new(t||r)},r.\u0275cmp=f({type:r,selectors:[["app-v2-primitive-themed-base"]],inputs:{defaultCondition:[1,"defaultCondition"],parentLocalUIState:"parentLocalUIState"},standalone:!1,features:[m],decls:0,vars:0,template:function(t,o){},encapsulation:2});let a=r;return a})();export{B as a};
@@ -1,2 +1,2 @@
1
- import{Ab as a,Bb as h,Pa as o,Ua as c,db as m,oi as g,ti as l,wa as s}from"./chunk-GD4JQQR2.js";var d=["*"],C=(()=>{let i=class i{constructor(t,e,n){this.elementRef=t,this.domService=e,this.loggingService=n,this.veltElement=!0}ngAfterViewInit(){try{this.customCssSubscription=this.domService.subscribeInjectCustomCss(this.elementRef)}catch(t){this.loggingService.catch("Error in ShadowDomComponent ngAfterViewInit: ",t)}}ngOnDestroy(){try{this.customCssSubscription?.unsubscribe()}catch(t){this.loggingService.catch("Error in ShadowDomComponent ngOnDestroy: ",t)}}};i.\u0275fac=function(e){return new(e||i)(o(s),o(l),o(g))},i.\u0275cmp=c({type:i,selectors:[["velt-shadow-dom-internal"]],hostVars:1,hostBindings:function(e,n){e&2&&m("data-velt-element",n.veltElement)},ngContentSelectors:d,decls:1,vars:0,template:function(e,n){e&1&&(a(),h(0))},styles:[`:host{width:100%}
1
+ import{Ab as a,Bb as h,Pa as o,Ua as c,db as m,pi as g,ui as l,wa as s}from"./chunk-YTPDG6FY.js";var d=["*"],C=(()=>{let i=class i{constructor(t,e,n){this.elementRef=t,this.domService=e,this.loggingService=n,this.veltElement=!0}ngAfterViewInit(){try{this.customCssSubscription=this.domService.subscribeInjectCustomCss(this.elementRef)}catch(t){this.loggingService.catch("Error in ShadowDomComponent ngAfterViewInit: ",t)}}ngOnDestroy(){try{this.customCssSubscription?.unsubscribe()}catch(t){this.loggingService.catch("Error in ShadowDomComponent ngOnDestroy: ",t)}}};i.\u0275fac=function(e){return new(e||i)(o(s),o(l),o(g))},i.\u0275cmp=c({type:i,selectors:[["velt-shadow-dom-internal"]],hostVars:1,hostBindings:function(e,n){e&2&&m("data-velt-element",n.veltElement)},ngContentSelectors:d,decls:1,vars:0,template:function(e,n){e&1&&(a(),h(0))},styles:[`:host{width:100%}
2
2
  `],encapsulation:3,changeDetection:0});let r=i;return r})();export{C as a};