@arbidocs/blocks 0.4.110 → 0.4.111

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 (94) hide show
  1. package/dist/{NativeDocxEditor-WODZAURG.cjs → NativeDocxEditor-AQKRZBIU.cjs} +7 -7
  2. package/dist/{NativeDocxEditor-WODZAURG.cjs.map → NativeDocxEditor-AQKRZBIU.cjs.map} +1 -1
  3. package/dist/{NativeDocxEditor-4PY4YZYC.js → NativeDocxEditor-IN2HEO5I.js} +3 -3
  4. package/dist/{NativeDocxEditor-4PY4YZYC.js.map → NativeDocxEditor-IN2HEO5I.js.map} +1 -1
  5. package/dist/agents/index.cjs +207 -207
  6. package/dist/agents/index.js +2 -2
  7. package/dist/calendar/EventEditor.d.ts +1 -1
  8. package/dist/calendar/draft.d.ts +7 -1
  9. package/dist/calendar/index.cjs +58 -10
  10. package/dist/calendar/index.cjs.map +1 -1
  11. package/dist/calendar/index.d.ts +1 -1
  12. package/dist/calendar/index.js +56 -11
  13. package/dist/calendar/index.js.map +1 -1
  14. package/dist/calendar/types.d.ts +20 -0
  15. package/dist/calls/CallSidePanel.d.ts +16 -1
  16. package/dist/calls/ControlBar.d.ts +25 -3
  17. package/dist/calls/PreJoin.d.ts +6 -2
  18. package/dist/calls/cards.d.ts +6 -2
  19. package/dist/calls/index.cjs +1078 -47
  20. package/dist/calls/index.cjs.map +1 -1
  21. package/dist/calls/index.d.ts +4 -3
  22. package/dist/calls/index.js +1067 -51
  23. package/dist/calls/index.js.map +1 -1
  24. package/dist/calls/panels.d.ts +11 -0
  25. package/dist/calls/webinar/ChatPermissionSetting.d.ts +18 -0
  26. package/dist/calls/webinar/OnStageCheck.d.ts +23 -0
  27. package/dist/calls/webinar/QAPanel.d.ts +56 -0
  28. package/dist/calls/webinar/RaiseHandButton.d.ts +14 -0
  29. package/dist/calls/webinar/WebinarAudiencePanel.d.ts +23 -0
  30. package/dist/calls/webinar/WebinarViewer.d.ts +39 -0
  31. package/dist/calls/webinar/WebinarWaiting.d.ts +19 -0
  32. package/dist/calls/webinar/hooks.d.ts +13 -0
  33. package/dist/calls/webinar/index.d.ts +14 -0
  34. package/dist/calls/webinar/live.d.ts +43 -0
  35. package/dist/calls/webinar/types.d.ts +49 -0
  36. package/dist/{chunk-GKDWQLVU.js → chunk-2C7TCVQZ.js} +172 -121
  37. package/dist/chunk-2C7TCVQZ.js.map +1 -0
  38. package/dist/{chunk-54WBIVHV.cjs → chunk-2WO5L7YT.cjs} +5 -5
  39. package/dist/{chunk-54WBIVHV.cjs.map → chunk-2WO5L7YT.cjs.map} +1 -1
  40. package/dist/{chunk-A35KT2II.js → chunk-6Z7DLJU2.js} +3 -3
  41. package/dist/{chunk-A35KT2II.js.map → chunk-6Z7DLJU2.js.map} +1 -1
  42. package/dist/{chunk-VZKBI2KJ.cjs → chunk-FXUQZFAN.cjs} +3 -3
  43. package/dist/{chunk-VZKBI2KJ.cjs.map → chunk-FXUQZFAN.cjs.map} +1 -1
  44. package/dist/{chunk-SQNAJPNR.js → chunk-GFYGYME3.js} +3 -3
  45. package/dist/{chunk-SQNAJPNR.js.map → chunk-GFYGYME3.js.map} +1 -1
  46. package/dist/chunk-GICUGQNN.cjs +76 -0
  47. package/dist/chunk-GICUGQNN.cjs.map +1 -0
  48. package/dist/chunk-JJLMCV3T.js +73 -0
  49. package/dist/chunk-JJLMCV3T.js.map +1 -0
  50. package/dist/{chunk-W7ZDBPJ3.cjs → chunk-OR4CO743.cjs} +3 -3
  51. package/dist/{chunk-W7ZDBPJ3.cjs.map → chunk-OR4CO743.cjs.map} +1 -1
  52. package/dist/{chunk-PEHLUB52.js → chunk-Q6B77ZWZ.js} +3 -3
  53. package/dist/{chunk-PEHLUB52.js.map → chunk-Q6B77ZWZ.js.map} +1 -1
  54. package/dist/{chunk-ELDUWTRR.cjs → chunk-TF47ATYS.cjs} +4 -4
  55. package/dist/{chunk-ELDUWTRR.cjs.map → chunk-TF47ATYS.cjs.map} +1 -1
  56. package/dist/{chunk-JB32KYAH.js → chunk-WTM65ZNG.js} +3 -3
  57. package/dist/{chunk-JB32KYAH.js.map → chunk-WTM65ZNG.js.map} +1 -1
  58. package/dist/{chunk-2NIL2ASF.cjs → chunk-XIGWUDOD.cjs} +170 -119
  59. package/dist/chunk-XIGWUDOD.cjs.map +1 -0
  60. package/dist/collaboration/index.cjs +1 -1
  61. package/dist/collaboration/index.js +1 -1
  62. package/dist/connect/docx.cjs +6 -6
  63. package/dist/connect/docx.js +4 -4
  64. package/dist/connect/index.cjs +31 -31
  65. package/dist/connect/index.js +7 -7
  66. package/dist/docx/AgentUndo.d.ts +4 -0
  67. package/dist/docx/index.cjs +46 -46
  68. package/dist/docx/index.js +3 -3
  69. package/dist/files/index.cjs +1 -1
  70. package/dist/files/index.js +1 -1
  71. package/dist/index.cjs +332 -332
  72. package/dist/index.js +6 -6
  73. package/dist/settings/index.cjs +48 -102
  74. package/dist/settings/index.cjs.map +1 -1
  75. package/dist/settings/index.js +10 -70
  76. package/dist/settings/index.js.map +1 -1
  77. package/dist/workflow-canvas/index.cjs +9 -9
  78. package/dist/workflow-canvas/index.js +2 -2
  79. package/node_modules/@arbidocs/coedit/dist/commands.cjs +179 -9
  80. package/node_modules/@arbidocs/coedit/dist/commands.cjs.map +1 -1
  81. package/node_modules/@arbidocs/coedit/dist/commands.d.cts +81 -1
  82. package/node_modules/@arbidocs/coedit/dist/commands.d.ts +81 -1
  83. package/node_modules/@arbidocs/coedit/dist/commands.js +173 -11
  84. package/node_modules/@arbidocs/coedit/dist/commands.js.map +1 -1
  85. package/node_modules/@arbidocs/coedit/dist/server.cjs +58 -2
  86. package/node_modules/@arbidocs/coedit/dist/server.cjs.map +1 -1
  87. package/node_modules/@arbidocs/coedit/dist/server.d.cts +29 -1
  88. package/node_modules/@arbidocs/coedit/dist/server.d.ts +29 -1
  89. package/node_modules/@arbidocs/coedit/dist/server.js +58 -3
  90. package/node_modules/@arbidocs/coedit/dist/server.js.map +1 -1
  91. package/node_modules/@arbidocs/coedit/package.json +1 -1
  92. package/package.json +4 -4
  93. package/dist/chunk-2NIL2ASF.cjs.map +0 -1
  94. package/dist/chunk-GKDWQLVU.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from '../chunk-A35KT2II.js';
2
+ export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from '../chunk-6Z7DLJU2.js';
3
3
  import '../chunk-P5ST47VY.js';
4
4
  import '../chunk-4XJZ6AAY.js';
5
5
  import '../chunk-P6GHJSLR.js';
@@ -11,11 +11,11 @@ import '../chunk-5LXQPP2K.js';
11
11
  import '../chunk-S7PSMMRG.js';
12
12
  import '../chunk-EVUEIBNU.js';
13
13
  import '../chunk-AUS3KBHJ.js';
14
- import '../chunk-TX2ZICS7.js';
15
14
  import '../chunk-NUNKSZKU.js';
16
15
  import '../chunk-YU2KUMGE.js';
17
16
  import '../chunk-N5YEF3LC.js';
18
17
  import '../chunk-4WWM3GQ5.js';
18
+ import '../chunk-TX2ZICS7.js';
19
19
  import '../chunk-HOXKR26S.js';
20
20
  import '../chunk-AA3PT6KR.js';
21
21
  import '../chunk-SLSBJRWW.js';
@@ -1,2 +1,2 @@
1
1
  import type { EventEditorProps } from './types';
2
- export declare function EventEditor({ value, onChange, onSave, onCancel, onDelete, calendars, mode, canAddCall, onAddCall, defaultTimeZone, schedulingSlot, attendeeSuggestions, onAttendeeQueryChange, saving, error, labels: labelOverrides, zones, className, }: EventEditorProps): import("react").JSX.Element;
2
+ export declare function EventEditor({ value, onChange, onSave, onCancel, onDelete, calendars, mode, canAddCall, onAddCall, canAddWebinar, isWebinarAttendee, defaultTimeZone, schedulingSlot, attendeeSuggestions, onAttendeeQueryChange, saving, error, labels: labelOverrides, zones, className, }: EventEditorProps): import("react").JSX.Element;
@@ -2,7 +2,7 @@
2
2
  * Pure helpers over `EventDraft`: start/end edits that keep the duration, the all-day toggle,
3
3
  * a draft from a grid selection, validation. Zone math goes through ./zone (Temporal).
4
4
  */
5
- import type { DateTimeSpec, EventDraft, SlotSelection } from './types';
5
+ import type { AttendeeDraft, ConferenceDraft, DateTimeSpec, EventDraft, SlotSelection } from './types';
6
6
  export declare const isAllDayDraft: (d: Pick<EventDraft, "start">) => boolean;
7
7
  /** The zone a spec's wall time is in (floating → the default). */
8
8
  export declare const specZone: (spec: DateTimeSpec, defaultZone: string) => string;
@@ -41,3 +41,9 @@ export declare function draftFromSlot(slot: SlotSelection, timeZone: string, cal
41
41
  export type DraftError = 'titleRequired' | 'invalidRange';
42
42
  /** First problem that blocks saving, or null. */
43
43
  export declare function validateDraft(d: EventDraft, defaultZone: string): DraftError | null;
44
+ /** The label stored on an ARBI webinar's conference (data, not display text: it marks the event a webinar). */
45
+ export declare const ARBI_WEBINAR_LABEL = "ARBI webinar";
46
+ /** An ARBI conference that is a webinar (the editor's `kind`, or the label stored with the event). */
47
+ export declare const isWebinarConference: (c: Pick<ConferenceDraft, "type" | "label" | "kind"> | null | undefined) => boolean;
48
+ /** The key of an attendee in `ConferenceDraft.roles`: its e-mail (lower-cased), else its user id. */
49
+ export declare const attendeeKey: (a: Pick<AttendeeDraft, "email" | "user_id">) => string;
@@ -69,6 +69,7 @@ var CALENDAR_DEFAULT_LABELS = {
69
69
  startTime: "Start time",
70
70
  endTime: "End time",
71
71
  arbiCall: "ARBI call",
72
+ arbiWebinar: "ARBI webinar",
72
73
  startTimeZone: "Start time zone",
73
74
  endTimeZone: "End time zone",
74
75
  separateTimeZones: "Time zones",
@@ -90,6 +91,14 @@ var CALENDAR_DEFAULT_LABELS = {
90
91
  useDefaultReminders: "Use calendar default reminders",
91
92
  conference: "Video call",
92
93
  addArbiCall: "Add ARBI call",
94
+ addArbiWebinar: "Add ARBI webinar",
95
+ webinar: "Webinar",
96
+ webinarLinkOnSave: "The link is created when you save",
97
+ webinarRole: "Webinar role",
98
+ cohost: "Co-host",
99
+ panelist: "Panelist",
100
+ webinarAttendee: "Attendee",
101
+ joinWebinar: "Join webinar",
93
102
  addMeetingLink: "Add meeting link",
94
103
  meetingLinkPlaceholder: "https://\u2026",
95
104
  removeConference: "Remove video call",
@@ -1547,6 +1556,9 @@ function validateDraft(d, defaultZone) {
1547
1556
  if (!(endMs >= startMs)) return "invalidRange";
1548
1557
  return null;
1549
1558
  }
1559
+ var ARBI_WEBINAR_LABEL = "ARBI webinar";
1560
+ var isWebinarConference = (c) => c?.type === "arbi" && (c.kind === "webinar" || c.label === ARBI_WEBINAR_LABEL);
1561
+ var attendeeKey = (a) => a.email?.toLowerCase() || a.user_id || "";
1550
1562
  var RRULE_WEEKDAYS = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"];
1551
1563
  function weekdayOf(date) {
1552
1564
  return RRULE_WEEKDAYS[temporalPolyfill.Temporal.PlainDate.from(date).dayOfWeek - 1];
@@ -2294,6 +2306,8 @@ function EventEditor({
2294
2306
  mode,
2295
2307
  canAddCall,
2296
2308
  onAddCall,
2309
+ canAddWebinar,
2310
+ isWebinarAttendee,
2297
2311
  defaultTimeZone,
2298
2312
  schedulingSlot,
2299
2313
  attendeeSuggestions,
@@ -2319,6 +2333,7 @@ function EventEditor({
2319
2333
  const [attachUrl, setAttachUrl] = react.useState("");
2320
2334
  const [attachTitle, setAttachTitle] = react.useState("");
2321
2335
  const [addingCall, setAddingCall] = react.useState(false);
2336
+ const [webinar, setWebinar] = react.useState(false);
2322
2337
  const [touched, setTouched] = react.useState(false);
2323
2338
  const [focus, setFocus] = react.useState(() => !!value.auto_decline && value.show_as !== "oof");
2324
2339
  const showDecline = value.show_as === "oof" || focus;
@@ -2372,6 +2387,12 @@ function EventEditor({
2372
2387
  setAddingCall(false);
2373
2388
  }
2374
2389
  };
2390
+ const addArbiWebinar = () => set({
2391
+ conference: { type: "arbi", kind: "webinar", url: "", label: ARBI_WEBINAR_LABEL, roles: {} }
2392
+ });
2393
+ const isWebinar = isWebinarConference(value.conference);
2394
+ const roles = value.conference?.roles ?? {};
2395
+ const setRole = (a, role) => value.conference && set({ conference: { ...value.conference, roles: { ...roles, [attendeeKey(a)]: role } } });
2375
2396
  const attachments = value.attachments ?? [];
2376
2397
  const addAttachment = () => {
2377
2398
  const url = attachUrl.trim();
@@ -2558,8 +2579,8 @@ function EventEditor({
2558
2579
  className: "flex min-w-0 items-center gap-2 text-sm",
2559
2580
  "data-testid": "calendar-editor-conference",
2560
2581
  children: [
2561
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: value.conference.label || (value.conference.type === "arbi" ? l.arbiCall : l.conference) }),
2562
- /* @__PURE__ */ jsxRuntime.jsx(
2582
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: isWebinar ? l.arbiWebinar : value.conference.label || (value.conference.type === "arbi" ? l.arbiCall : l.conference) }),
2583
+ value.conference.url ? /* @__PURE__ */ jsxRuntime.jsx(
2563
2584
  "a",
2564
2585
  {
2565
2586
  href: value.conference.url,
@@ -2568,7 +2589,7 @@ function EventEditor({
2568
2589
  className: "min-w-0 truncate text-xs text-primary underline-offset-2 hover:underline",
2569
2590
  children: value.conference.url.replace(/#.*$/, "")
2570
2591
  }
2571
- ),
2592
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-xs text-muted-foreground", children: l.webinarLinkOnSave }),
2572
2593
  /* @__PURE__ */ jsxRuntime.jsx(
2573
2594
  "button",
2574
2595
  {
@@ -2625,14 +2646,26 @@ function EventEditor({
2625
2646
  size: "sm",
2626
2647
  variant: "secondary",
2627
2648
  disabled: addingCall,
2628
- onClick: addArbiCall,
2649
+ onClick: webinar ? addArbiWebinar : addArbiCall,
2629
2650
  "data-testid": "calendar-editor-add-call",
2630
2651
  children: [
2631
2652
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Video, { className: "mr-1 h-4 w-4" }),
2632
- l.addArbiCall
2653
+ webinar ? l.addArbiWebinar : l.addArbiCall
2633
2654
  ]
2634
2655
  }
2635
2656
  ),
2657
+ canAddCall && onAddCall && canAddWebinar && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm", children: [
2658
+ /* @__PURE__ */ jsxRuntime.jsx(
2659
+ ui.Switch,
2660
+ {
2661
+ checked: webinar,
2662
+ onCheckedChange: setWebinar,
2663
+ "aria-label": l.webinar,
2664
+ "data-testid": "calendar-editor-webinar"
2665
+ }
2666
+ ),
2667
+ l.webinar
2668
+ ] }),
2636
2669
  /* @__PURE__ */ jsxRuntime.jsx(
2637
2670
  ui.Button,
2638
2671
  {
@@ -2738,6 +2771,21 @@ function EventEditor({
2738
2771
  ]
2739
2772
  }
2740
2773
  ),
2774
+ isWebinar && (isWebinarAttendee?.(a) ?? true) && /* @__PURE__ */ jsxRuntime.jsxs(
2775
+ NativeSelect,
2776
+ {
2777
+ "aria-label": `${a.email ?? ""} ${l.webinarRole}`,
2778
+ className: "h-7 text-xs",
2779
+ value: roles[attendeeKey(a)] ?? "attendee",
2780
+ onChange: (e) => setRole(a, e.target.value),
2781
+ "data-testid": "calendar-editor-webinar-role",
2782
+ children: [
2783
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "cohost", children: l.cohost }),
2784
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "panelist", children: l.panelist }),
2785
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "attendee", children: l.webinarAttendee })
2786
+ ]
2787
+ }
2788
+ ),
2741
2789
  /* @__PURE__ */ jsxRuntime.jsx(
2742
2790
  "button",
2743
2791
  {
@@ -3251,7 +3299,7 @@ function EventDetails({
3251
3299
  ] }),
3252
3300
  event.is_recurring && /* @__PURE__ */ jsxRuntime.jsx(Row, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Repeat, { className: "h-4 w-4" }), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: l.recurring }) }),
3253
3301
  conference?.url && /* @__PURE__ */ jsxRuntime.jsx(Row, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Video, { className: "h-4 w-4" }), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
3254
- /* @__PURE__ */ jsxRuntime.jsxs(
3302
+ /* @__PURE__ */ jsxRuntime.jsx(
3255
3303
  ui.Button,
3256
3304
  {
3257
3305
  type: "button",
@@ -3259,10 +3307,7 @@ function EventDetails({
3259
3307
  disabled: !canJoin,
3260
3308
  onClick: () => onJoin ? onJoin() : window.open(conference.url ?? "", "_blank", "noopener"),
3261
3309
  "data-testid": "calendar-details-join",
3262
- children: [
3263
- l.join,
3264
- conference.type === "arbi" ? ` ${l.arbiCall}` : ""
3265
- ]
3310
+ children: isWebinarConference(conference) ? l.joinWebinar : `${l.join}${conference.type === "arbi" ? ` ${l.arbiCall}` : ""}`
3266
3311
  }
3267
3312
  ),
3268
3313
  conference.type === "arbi" && onOpenMeetingChat && /* @__PURE__ */ jsxRuntime.jsx(
@@ -4062,6 +4107,7 @@ function CalendarSettingsForm({
4062
4107
  );
4063
4108
  }
4064
4109
 
4110
+ exports.ARBI_WEBINAR_LABEL = ARBI_WEBINAR_LABEL;
4065
4111
  exports.CALENDAR_COLORS = CALENDAR_COLORS;
4066
4112
  exports.CALENDAR_DEFAULT_LABELS = CALENDAR_DEFAULT_LABELS;
4067
4113
  exports.CALENDAR_NARROW_WIDTH = CALENDAR_NARROW_WIDTH;
@@ -4084,6 +4130,7 @@ exports.TimeZonePicker = TimeZonePicker;
4084
4130
  exports.addDays = addDays;
4085
4131
  exports.addMonths = addMonths;
4086
4132
  exports.allDayInclusiveEnd = allDayInclusiveEnd;
4133
+ exports.attendeeKey = attendeeKey;
4087
4134
  exports.buildRRule = buildRRule;
4088
4135
  exports.contrastText = contrastText;
4089
4136
  exports.convertWall = convertWall;
@@ -4105,6 +4152,7 @@ exports.getTemporalTimeZonePlugin = getTemporalTimeZonePlugin;
4105
4152
  exports.hourTicks = hourTicks;
4106
4153
  exports.isAllDayDraft = isAllDayDraft;
4107
4154
  exports.isValidTimeZone = isValidTimeZone;
4155
+ exports.isWebinarConference = isWebinarConference;
4108
4156
  exports.listTimeZones = listTimeZones;
4109
4157
  exports.outsideIntervals = outsideIntervals;
4110
4158
  exports.parseRRule = parseRRule;