@sprucelabs/spruce-calendar-components 25.5.13 → 25.6.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.
@@ -993,198 +993,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
993
993
  interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
994
994
  }
995
995
  }
996
- namespace SpruceSchemas.Calendar.v2021_05_19 {
997
- interface DeleteCalendarEmitTarget {
998
- 'organizationId': string;
999
- 'calendarId': string;
1000
- }
1001
- interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1002
- id: 'deleteCalendarEmitTarget';
1003
- version: 'v2021_05_19';
1004
- namespace: 'Calendar';
1005
- name: '';
1006
- fields: {
1007
- /** . */
1008
- 'organizationId': {
1009
- type: 'id';
1010
- isRequired: true;
1011
- options: undefined;
1012
- };
1013
- /** . */
1014
- 'calendarId': {
1015
- type: 'id';
1016
- isRequired: true;
1017
- options: undefined;
1018
- };
1019
- };
1020
- }
1021
- interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1022
- }
1023
- }
1024
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1025
- interface DeleteCalendarEmitTargetAndPayload {
1026
- /** Source. */
1027
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1028
- 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1029
- }
1030
- interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1031
- id: 'deleteCalendarEmitTargetAndPayload';
1032
- version: 'v2021_05_19';
1033
- namespace: 'Calendar';
1034
- name: '';
1035
- fields: {
1036
- /** Source. */
1037
- 'source': {
1038
- label: 'Source';
1039
- type: 'schema';
1040
- options: {
1041
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1042
- };
1043
- };
1044
- /** . */
1045
- 'target': {
1046
- type: 'schema';
1047
- isRequired: true;
1048
- options: {
1049
- schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1050
- };
1051
- };
1052
- };
1053
- }
1054
- interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1055
- }
1056
- }
1057
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1058
- interface DeleteCalendarResponsePayload {
1059
- 'totalDeleted'?: number | undefined | null;
1060
- }
1061
- interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1062
- id: 'deleteCalendarResponsePayload';
1063
- version: 'v2021_05_19';
1064
- namespace: 'Calendar';
1065
- name: '';
1066
- fields: {
1067
- /** . */
1068
- 'totalDeleted': {
1069
- type: 'number';
1070
- options: undefined;
1071
- };
1072
- };
1073
- }
1074
- interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1075
- }
1076
- }
1077
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1078
- interface DidCancelCalendarEventEmitPayload {
1079
- 'cancelStrategy': ("only-this-one" | "all-going-forward" | "all");
1080
- 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
1081
- }
1082
- interface DidCancelCalendarEventEmitPayloadSchema extends SpruceSchema.Schema {
1083
- id: 'didCancelCalendarEventEmitPayload';
1084
- version: 'v2021_05_19';
1085
- namespace: 'Calendar';
1086
- name: '';
1087
- fields: {
1088
- /** . */
1089
- 'cancelStrategy': {
1090
- type: 'select';
1091
- isRequired: true;
1092
- options: {
1093
- choices: [{
1094
- "value": "only-this-one";
1095
- "label": "Specific dates";
1096
- }, {
1097
- "value": "all-going-forward";
1098
- "label": "This and all going forward";
1099
- }, {
1100
- "value": "all";
1101
- "label": "All";
1102
- }];
1103
- };
1104
- };
1105
- /** . */
1106
- 'calendarEvent': {
1107
- type: 'schema';
1108
- isRequired: true;
1109
- options: {
1110
- schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
1111
- };
1112
- };
1113
- };
1114
- }
1115
- interface DidCancelCalendarEventEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema> {
1116
- }
1117
- }
1118
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1119
- interface DidCancelCalendarEventEmitTarget {
1120
- 'locationId': string;
1121
- 'calendarEventId': string;
1122
- }
1123
- interface DidCancelCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
1124
- id: 'didCancelCalendarEventEmitTarget';
1125
- version: 'v2021_05_19';
1126
- namespace: 'Calendar';
1127
- name: '';
1128
- fields: {
1129
- /** . */
1130
- 'locationId': {
1131
- type: 'id';
1132
- isRequired: true;
1133
- options: undefined;
1134
- };
1135
- /** . */
1136
- 'calendarEventId': {
1137
- type: 'id';
1138
- isRequired: true;
1139
- options: undefined;
1140
- };
1141
- };
1142
- }
1143
- interface DidCancelCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema> {
1144
- }
1145
- }
1146
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1147
- interface DidCancelCalendarEventEmitTargetAndPayload {
1148
- /** Source. */
1149
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1150
- 'target': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTarget;
1151
- 'payload': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayload;
1152
- }
1153
- interface DidCancelCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1154
- id: 'didCancelCalendarEventEmitTargetAndPayload';
1155
- version: 'v2021_05_19';
1156
- namespace: 'Calendar';
1157
- name: '';
1158
- fields: {
1159
- /** Source. */
1160
- 'source': {
1161
- label: 'Source';
1162
- type: 'schema';
1163
- options: {
1164
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1165
- };
1166
- };
1167
- /** . */
1168
- 'target': {
1169
- type: 'schema';
1170
- isRequired: true;
1171
- options: {
1172
- schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema;
1173
- };
1174
- };
1175
- /** . */
1176
- 'payload': {
1177
- type: 'schema';
1178
- isRequired: true;
1179
- options: {
1180
- schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema;
1181
- };
1182
- };
1183
- };
1184
- }
1185
- interface DidCancelCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetAndPayloadSchema> {
1186
- }
1187
- }
1188
996
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1189
997
  interface CreateCalendarEventTypeEmitPayload {
1190
998
  'name': string;
@@ -1694,6 +1502,87 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1694
1502
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1695
1503
  }
1696
1504
  }
1505
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1506
+ interface DeleteCalendarEmitTarget {
1507
+ 'organizationId': string;
1508
+ 'calendarId': string;
1509
+ }
1510
+ interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1511
+ id: 'deleteCalendarEmitTarget';
1512
+ version: 'v2021_05_19';
1513
+ namespace: 'Calendar';
1514
+ name: '';
1515
+ fields: {
1516
+ /** . */
1517
+ 'organizationId': {
1518
+ type: 'id';
1519
+ isRequired: true;
1520
+ options: undefined;
1521
+ };
1522
+ /** . */
1523
+ 'calendarId': {
1524
+ type: 'id';
1525
+ isRequired: true;
1526
+ options: undefined;
1527
+ };
1528
+ };
1529
+ }
1530
+ interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1531
+ }
1532
+ }
1533
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1534
+ interface DeleteCalendarEmitTargetAndPayload {
1535
+ /** Source. */
1536
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1537
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1538
+ }
1539
+ interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1540
+ id: 'deleteCalendarEmitTargetAndPayload';
1541
+ version: 'v2021_05_19';
1542
+ namespace: 'Calendar';
1543
+ name: '';
1544
+ fields: {
1545
+ /** Source. */
1546
+ 'source': {
1547
+ label: 'Source';
1548
+ type: 'schema';
1549
+ options: {
1550
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1551
+ };
1552
+ };
1553
+ /** . */
1554
+ 'target': {
1555
+ type: 'schema';
1556
+ isRequired: true;
1557
+ options: {
1558
+ schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1559
+ };
1560
+ };
1561
+ };
1562
+ }
1563
+ interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1564
+ }
1565
+ }
1566
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1567
+ interface DeleteCalendarResponsePayload {
1568
+ 'totalDeleted'?: number | undefined | null;
1569
+ }
1570
+ interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1571
+ id: 'deleteCalendarResponsePayload';
1572
+ version: 'v2021_05_19';
1573
+ namespace: 'Calendar';
1574
+ name: '';
1575
+ fields: {
1576
+ /** . */
1577
+ 'totalDeleted': {
1578
+ type: 'number';
1579
+ options: undefined;
1580
+ };
1581
+ };
1582
+ }
1583
+ interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1584
+ }
1585
+ }
1697
1586
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1698
1587
  interface DidUpdateCalendarEventEmitTarget {
1699
1588
  'locationId': string;
@@ -1780,6 +1669,117 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1780
1669
  interface DidUpdateCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidUpdateCalendarEventEmitTargetAndPayloadSchema> {
1781
1670
  }
1782
1671
  }
1672
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1673
+ interface DidCancelCalendarEventEmitTarget {
1674
+ 'locationId': string;
1675
+ 'calendarEventId': string;
1676
+ }
1677
+ interface DidCancelCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
1678
+ id: 'didCancelCalendarEventEmitTarget';
1679
+ version: 'v2021_05_19';
1680
+ namespace: 'Calendar';
1681
+ name: '';
1682
+ fields: {
1683
+ /** . */
1684
+ 'locationId': {
1685
+ type: 'id';
1686
+ isRequired: true;
1687
+ options: undefined;
1688
+ };
1689
+ /** . */
1690
+ 'calendarEventId': {
1691
+ type: 'id';
1692
+ isRequired: true;
1693
+ options: undefined;
1694
+ };
1695
+ };
1696
+ }
1697
+ interface DidCancelCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema> {
1698
+ }
1699
+ }
1700
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1701
+ interface DidCancelCalendarEventEmitPayload {
1702
+ 'cancelStrategy': ("only-this-one" | "all-going-forward" | "all");
1703
+ 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
1704
+ }
1705
+ interface DidCancelCalendarEventEmitPayloadSchema extends SpruceSchema.Schema {
1706
+ id: 'didCancelCalendarEventEmitPayload';
1707
+ version: 'v2021_05_19';
1708
+ namespace: 'Calendar';
1709
+ name: '';
1710
+ fields: {
1711
+ /** . */
1712
+ 'cancelStrategy': {
1713
+ type: 'select';
1714
+ isRequired: true;
1715
+ options: {
1716
+ choices: [{
1717
+ "value": "only-this-one";
1718
+ "label": "Specific dates";
1719
+ }, {
1720
+ "value": "all-going-forward";
1721
+ "label": "This and all going forward";
1722
+ }, {
1723
+ "value": "all";
1724
+ "label": "All";
1725
+ }];
1726
+ };
1727
+ };
1728
+ /** . */
1729
+ 'calendarEvent': {
1730
+ type: 'schema';
1731
+ isRequired: true;
1732
+ options: {
1733
+ schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
1734
+ };
1735
+ };
1736
+ };
1737
+ }
1738
+ interface DidCancelCalendarEventEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema> {
1739
+ }
1740
+ }
1741
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1742
+ interface DidCancelCalendarEventEmitTargetAndPayload {
1743
+ /** Source. */
1744
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1745
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTarget;
1746
+ 'payload': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayload;
1747
+ }
1748
+ interface DidCancelCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1749
+ id: 'didCancelCalendarEventEmitTargetAndPayload';
1750
+ version: 'v2021_05_19';
1751
+ namespace: 'Calendar';
1752
+ name: '';
1753
+ fields: {
1754
+ /** Source. */
1755
+ 'source': {
1756
+ label: 'Source';
1757
+ type: 'schema';
1758
+ options: {
1759
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1760
+ };
1761
+ };
1762
+ /** . */
1763
+ 'target': {
1764
+ type: 'schema';
1765
+ isRequired: true;
1766
+ options: {
1767
+ schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema;
1768
+ };
1769
+ };
1770
+ /** . */
1771
+ 'payload': {
1772
+ type: 'schema';
1773
+ isRequired: true;
1774
+ options: {
1775
+ schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema;
1776
+ };
1777
+ };
1778
+ };
1779
+ }
1780
+ interface DidCancelCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetAndPayloadSchema> {
1781
+ }
1782
+ }
1783
1783
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1784
1784
  interface GetAvailableTimeSlotsEmitTarget {
1785
1785
  'organizationId'?: string | undefined | null;
@@ -102,5 +102,5 @@ class FakeRemoteEventStore {
102
102
  return FakeRemoteEventStore.calendars;
103
103
  }
104
104
  }
105
- FakeRemoteEventStore.calendars = [];
106
105
  exports.FakeRemoteEventStore = FakeRemoteEventStore;
106
+ FakeRemoteEventStore.calendars = [];
@@ -48,11 +48,7 @@ export default class CalendarEventManager {
48
48
  cancelEvent(id: string, options?: CancelOptions): Promise<void>;
49
49
  makeCalendarVisible(calendarId: string): Promise<void>;
50
50
  makeCalendarHidden(calendarId: string): Promise<void>;
51
- updateEvent(id: string, updates: Partial<CalendarEvent> & {
52
- dateToUpdate?: number;
53
- shouldUpdateAllEventsGoingForward?: boolean;
54
- shouldPersist?: boolean;
55
- }): void;
51
+ updateEvent(id: string, updates: UpdateEventOptions): void;
56
52
  loadEvents(startDate: number, endDate: number, peopleIds: string[]): Promise<import("@sprucelabs/calendar-utils").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
57
53
  setCalendarVisibility(calendarId: string, shouldBeVisible: boolean): Promise<void>;
58
54
  setupVcForEventType(vcId: string, typeSlug: string): Promise<void>;
@@ -122,4 +118,9 @@ export type SavedEvent = Partial<CalendarEvent> & {
122
118
  export interface CancelOptions {
123
119
  shouldPersist?: boolean;
124
120
  }
121
+ export type UpdateEventOptions = Partial<CalendarEvent> & {
122
+ dateToUpdate?: number;
123
+ shouldUpdateAllEventsGoingForward?: boolean;
124
+ shouldPersist?: boolean;
125
+ };
125
126
  export {};
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
18
18
  const schema_1 = require("@sprucelabs/schema");
19
19
  const SpruceError_1 = __importDefault(require("../errors/SpruceError"));
20
+ const isEqual_1 = __importDefault(require("../stores/isEqual"));
20
21
  const calendarShiftGenerator_1 = __importDefault(require("../utilities/calendarShiftGenerator"));
21
22
  const draftGenerator_1 = __importDefault(require("../utilities/draftGenerator"));
22
23
  class CalendarEventManager {
@@ -177,6 +178,12 @@ class CalendarEventManager {
177
178
  updateEvent(id, updates) {
178
179
  var _a;
179
180
  const { shouldPersist } = updates, rest = __rest(updates, ["shouldPersist"]);
181
+ const match = this.allEvents.find((e) => e.id === id);
182
+ const updated = Object.assign(Object.assign({}, match), updates);
183
+ const isTheSame = (0, isEqual_1.default)(match, updated);
184
+ if (isTheSame) {
185
+ return;
186
+ }
180
187
  this.calendarVc.updateEvent(id, Object.assign(Object.assign({}, rest), { shouldPersist }));
181
188
  const idx = this.allEvents.findIndex((e) => e.id === id);
182
189
  this.allEvents[idx] = Object.assign(Object.assign({}, this.allEvents[idx]), rest);
@@ -993,198 +993,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
993
993
  interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
994
994
  }
995
995
  }
996
- namespace SpruceSchemas.Calendar.v2021_05_19 {
997
- interface DeleteCalendarEmitTarget {
998
- 'organizationId': string;
999
- 'calendarId': string;
1000
- }
1001
- interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1002
- id: 'deleteCalendarEmitTarget';
1003
- version: 'v2021_05_19';
1004
- namespace: 'Calendar';
1005
- name: '';
1006
- fields: {
1007
- /** . */
1008
- 'organizationId': {
1009
- type: 'id';
1010
- isRequired: true;
1011
- options: undefined;
1012
- };
1013
- /** . */
1014
- 'calendarId': {
1015
- type: 'id';
1016
- isRequired: true;
1017
- options: undefined;
1018
- };
1019
- };
1020
- }
1021
- interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1022
- }
1023
- }
1024
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1025
- interface DeleteCalendarEmitTargetAndPayload {
1026
- /** Source. */
1027
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1028
- 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1029
- }
1030
- interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1031
- id: 'deleteCalendarEmitTargetAndPayload';
1032
- version: 'v2021_05_19';
1033
- namespace: 'Calendar';
1034
- name: '';
1035
- fields: {
1036
- /** Source. */
1037
- 'source': {
1038
- label: 'Source';
1039
- type: 'schema';
1040
- options: {
1041
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1042
- };
1043
- };
1044
- /** . */
1045
- 'target': {
1046
- type: 'schema';
1047
- isRequired: true;
1048
- options: {
1049
- schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1050
- };
1051
- };
1052
- };
1053
- }
1054
- interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1055
- }
1056
- }
1057
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1058
- interface DeleteCalendarResponsePayload {
1059
- 'totalDeleted'?: number | undefined | null;
1060
- }
1061
- interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1062
- id: 'deleteCalendarResponsePayload';
1063
- version: 'v2021_05_19';
1064
- namespace: 'Calendar';
1065
- name: '';
1066
- fields: {
1067
- /** . */
1068
- 'totalDeleted': {
1069
- type: 'number';
1070
- options: undefined;
1071
- };
1072
- };
1073
- }
1074
- interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1075
- }
1076
- }
1077
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1078
- interface DidCancelCalendarEventEmitPayload {
1079
- 'cancelStrategy': ("only-this-one" | "all-going-forward" | "all");
1080
- 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
1081
- }
1082
- interface DidCancelCalendarEventEmitPayloadSchema extends SpruceSchema.Schema {
1083
- id: 'didCancelCalendarEventEmitPayload';
1084
- version: 'v2021_05_19';
1085
- namespace: 'Calendar';
1086
- name: '';
1087
- fields: {
1088
- /** . */
1089
- 'cancelStrategy': {
1090
- type: 'select';
1091
- isRequired: true;
1092
- options: {
1093
- choices: [{
1094
- "value": "only-this-one";
1095
- "label": "Specific dates";
1096
- }, {
1097
- "value": "all-going-forward";
1098
- "label": "This and all going forward";
1099
- }, {
1100
- "value": "all";
1101
- "label": "All";
1102
- }];
1103
- };
1104
- };
1105
- /** . */
1106
- 'calendarEvent': {
1107
- type: 'schema';
1108
- isRequired: true;
1109
- options: {
1110
- schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
1111
- };
1112
- };
1113
- };
1114
- }
1115
- interface DidCancelCalendarEventEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema> {
1116
- }
1117
- }
1118
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1119
- interface DidCancelCalendarEventEmitTarget {
1120
- 'locationId': string;
1121
- 'calendarEventId': string;
1122
- }
1123
- interface DidCancelCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
1124
- id: 'didCancelCalendarEventEmitTarget';
1125
- version: 'v2021_05_19';
1126
- namespace: 'Calendar';
1127
- name: '';
1128
- fields: {
1129
- /** . */
1130
- 'locationId': {
1131
- type: 'id';
1132
- isRequired: true;
1133
- options: undefined;
1134
- };
1135
- /** . */
1136
- 'calendarEventId': {
1137
- type: 'id';
1138
- isRequired: true;
1139
- options: undefined;
1140
- };
1141
- };
1142
- }
1143
- interface DidCancelCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema> {
1144
- }
1145
- }
1146
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1147
- interface DidCancelCalendarEventEmitTargetAndPayload {
1148
- /** Source. */
1149
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1150
- 'target': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTarget;
1151
- 'payload': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayload;
1152
- }
1153
- interface DidCancelCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1154
- id: 'didCancelCalendarEventEmitTargetAndPayload';
1155
- version: 'v2021_05_19';
1156
- namespace: 'Calendar';
1157
- name: '';
1158
- fields: {
1159
- /** Source. */
1160
- 'source': {
1161
- label: 'Source';
1162
- type: 'schema';
1163
- options: {
1164
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1165
- };
1166
- };
1167
- /** . */
1168
- 'target': {
1169
- type: 'schema';
1170
- isRequired: true;
1171
- options: {
1172
- schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema;
1173
- };
1174
- };
1175
- /** . */
1176
- 'payload': {
1177
- type: 'schema';
1178
- isRequired: true;
1179
- options: {
1180
- schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema;
1181
- };
1182
- };
1183
- };
1184
- }
1185
- interface DidCancelCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetAndPayloadSchema> {
1186
- }
1187
- }
1188
996
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1189
997
  interface CreateCalendarEventTypeEmitPayload {
1190
998
  'name': string;
@@ -1694,6 +1502,87 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1694
1502
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1695
1503
  }
1696
1504
  }
1505
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1506
+ interface DeleteCalendarEmitTarget {
1507
+ 'organizationId': string;
1508
+ 'calendarId': string;
1509
+ }
1510
+ interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1511
+ id: 'deleteCalendarEmitTarget';
1512
+ version: 'v2021_05_19';
1513
+ namespace: 'Calendar';
1514
+ name: '';
1515
+ fields: {
1516
+ /** . */
1517
+ 'organizationId': {
1518
+ type: 'id';
1519
+ isRequired: true;
1520
+ options: undefined;
1521
+ };
1522
+ /** . */
1523
+ 'calendarId': {
1524
+ type: 'id';
1525
+ isRequired: true;
1526
+ options: undefined;
1527
+ };
1528
+ };
1529
+ }
1530
+ interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1531
+ }
1532
+ }
1533
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1534
+ interface DeleteCalendarEmitTargetAndPayload {
1535
+ /** Source. */
1536
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1537
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1538
+ }
1539
+ interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1540
+ id: 'deleteCalendarEmitTargetAndPayload';
1541
+ version: 'v2021_05_19';
1542
+ namespace: 'Calendar';
1543
+ name: '';
1544
+ fields: {
1545
+ /** Source. */
1546
+ 'source': {
1547
+ label: 'Source';
1548
+ type: 'schema';
1549
+ options: {
1550
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1551
+ };
1552
+ };
1553
+ /** . */
1554
+ 'target': {
1555
+ type: 'schema';
1556
+ isRequired: true;
1557
+ options: {
1558
+ schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1559
+ };
1560
+ };
1561
+ };
1562
+ }
1563
+ interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1564
+ }
1565
+ }
1566
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1567
+ interface DeleteCalendarResponsePayload {
1568
+ 'totalDeleted'?: number | undefined | null;
1569
+ }
1570
+ interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1571
+ id: 'deleteCalendarResponsePayload';
1572
+ version: 'v2021_05_19';
1573
+ namespace: 'Calendar';
1574
+ name: '';
1575
+ fields: {
1576
+ /** . */
1577
+ 'totalDeleted': {
1578
+ type: 'number';
1579
+ options: undefined;
1580
+ };
1581
+ };
1582
+ }
1583
+ interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1584
+ }
1585
+ }
1697
1586
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1698
1587
  interface DidUpdateCalendarEventEmitTarget {
1699
1588
  'locationId': string;
@@ -1780,6 +1669,117 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1780
1669
  interface DidUpdateCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidUpdateCalendarEventEmitTargetAndPayloadSchema> {
1781
1670
  }
1782
1671
  }
1672
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1673
+ interface DidCancelCalendarEventEmitTarget {
1674
+ 'locationId': string;
1675
+ 'calendarEventId': string;
1676
+ }
1677
+ interface DidCancelCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
1678
+ id: 'didCancelCalendarEventEmitTarget';
1679
+ version: 'v2021_05_19';
1680
+ namespace: 'Calendar';
1681
+ name: '';
1682
+ fields: {
1683
+ /** . */
1684
+ 'locationId': {
1685
+ type: 'id';
1686
+ isRequired: true;
1687
+ options: undefined;
1688
+ };
1689
+ /** . */
1690
+ 'calendarEventId': {
1691
+ type: 'id';
1692
+ isRequired: true;
1693
+ options: undefined;
1694
+ };
1695
+ };
1696
+ }
1697
+ interface DidCancelCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema> {
1698
+ }
1699
+ }
1700
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1701
+ interface DidCancelCalendarEventEmitPayload {
1702
+ 'cancelStrategy': ("only-this-one" | "all-going-forward" | "all");
1703
+ 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
1704
+ }
1705
+ interface DidCancelCalendarEventEmitPayloadSchema extends SpruceSchema.Schema {
1706
+ id: 'didCancelCalendarEventEmitPayload';
1707
+ version: 'v2021_05_19';
1708
+ namespace: 'Calendar';
1709
+ name: '';
1710
+ fields: {
1711
+ /** . */
1712
+ 'cancelStrategy': {
1713
+ type: 'select';
1714
+ isRequired: true;
1715
+ options: {
1716
+ choices: [{
1717
+ "value": "only-this-one";
1718
+ "label": "Specific dates";
1719
+ }, {
1720
+ "value": "all-going-forward";
1721
+ "label": "This and all going forward";
1722
+ }, {
1723
+ "value": "all";
1724
+ "label": "All";
1725
+ }];
1726
+ };
1727
+ };
1728
+ /** . */
1729
+ 'calendarEvent': {
1730
+ type: 'schema';
1731
+ isRequired: true;
1732
+ options: {
1733
+ schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
1734
+ };
1735
+ };
1736
+ };
1737
+ }
1738
+ interface DidCancelCalendarEventEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema> {
1739
+ }
1740
+ }
1741
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1742
+ interface DidCancelCalendarEventEmitTargetAndPayload {
1743
+ /** Source. */
1744
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1745
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTarget;
1746
+ 'payload': SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayload;
1747
+ }
1748
+ interface DidCancelCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1749
+ id: 'didCancelCalendarEventEmitTargetAndPayload';
1750
+ version: 'v2021_05_19';
1751
+ namespace: 'Calendar';
1752
+ name: '';
1753
+ fields: {
1754
+ /** Source. */
1755
+ 'source': {
1756
+ label: 'Source';
1757
+ type: 'schema';
1758
+ options: {
1759
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1760
+ };
1761
+ };
1762
+ /** . */
1763
+ 'target': {
1764
+ type: 'schema';
1765
+ isRequired: true;
1766
+ options: {
1767
+ schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetSchema;
1768
+ };
1769
+ };
1770
+ /** . */
1771
+ 'payload': {
1772
+ type: 'schema';
1773
+ isRequired: true;
1774
+ options: {
1775
+ schema: SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitPayloadSchema;
1776
+ };
1777
+ };
1778
+ };
1779
+ }
1780
+ interface DidCancelCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DidCancelCalendarEventEmitTargetAndPayloadSchema> {
1781
+ }
1782
+ }
1783
1783
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1784
1784
  interface GetAvailableTimeSlotsEmitTarget {
1785
1785
  'organizationId'?: string | undefined | null;
@@ -83,7 +83,7 @@ class FakeRemotePreferences extends RemotePreferencesStore {
83
83
  return __awaiter(this, void 0, void 0, function* () { });
84
84
  }
85
85
  }
86
- class FakeRemoteEventStore {
86
+ export class FakeRemoteEventStore {
87
87
  load(_options) {
88
88
  return __awaiter(this, void 0, void 0, function* () { });
89
89
  }
@@ -125,4 +125,3 @@ class FakeRemoteEventStore {
125
125
  }
126
126
  }
127
127
  FakeRemoteEventStore.calendars = [];
128
- export { FakeRemoteEventStore };
@@ -48,11 +48,7 @@ export default class CalendarEventManager {
48
48
  cancelEvent(id: string, options?: CancelOptions): Promise<void>;
49
49
  makeCalendarVisible(calendarId: string): Promise<void>;
50
50
  makeCalendarHidden(calendarId: string): Promise<void>;
51
- updateEvent(id: string, updates: Partial<CalendarEvent> & {
52
- dateToUpdate?: number;
53
- shouldUpdateAllEventsGoingForward?: boolean;
54
- shouldPersist?: boolean;
55
- }): void;
51
+ updateEvent(id: string, updates: UpdateEventOptions): void;
56
52
  loadEvents(startDate: number, endDate: number, peopleIds: string[]): Promise<import("@sprucelabs/calendar-utils").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
57
53
  setCalendarVisibility(calendarId: string, shouldBeVisible: boolean): Promise<void>;
58
54
  setupVcForEventType(vcId: string, typeSlug: string): Promise<void>;
@@ -122,4 +118,9 @@ export type SavedEvent = Partial<CalendarEvent> & {
122
118
  export interface CancelOptions {
123
119
  shouldPersist?: boolean;
124
120
  }
121
+ export type UpdateEventOptions = Partial<CalendarEvent> & {
122
+ dateToUpdate?: number;
123
+ shouldUpdateAllEventsGoingForward?: boolean;
124
+ shouldPersist?: boolean;
125
+ };
125
126
  export {};
@@ -21,6 +21,7 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  import { calendarEventSchema, } from '@sprucelabs/heartwood-view-controllers';
22
22
  import { assertOptions, normalizeSchemaValues } from '@sprucelabs/schema';
23
23
  import SpruceError from '../errors/SpruceError.js';
24
+ import isEqual from '../stores/isEqual.js';
24
25
  import calendarShiftGenerator from '../utilities/calendarShiftGenerator.js';
25
26
  import draftEventGenerator from '../utilities/draftGenerator.js';
26
27
  export default class CalendarEventManager {
@@ -197,6 +198,12 @@ export default class CalendarEventManager {
197
198
  updateEvent(id, updates) {
198
199
  var _a;
199
200
  const { shouldPersist } = updates, rest = __rest(updates, ["shouldPersist"]);
201
+ const match = this.allEvents.find((e) => e.id === id);
202
+ const updated = Object.assign(Object.assign({}, match), updates);
203
+ const isTheSame = isEqual(match, updated);
204
+ if (isTheSame) {
205
+ return;
206
+ }
200
207
  this.calendarVc.updateEvent(id, Object.assign(Object.assign({}, rest), { shouldPersist }));
201
208
  const idx = this.allEvents.findIndex((e) => e.id === id);
202
209
  this.allEvents[idx] = Object.assign(Object.assign({}, this.allEvents[idx]), rest);
@@ -21,6 +21,7 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  import { calendarEventSchema } from '@sprucelabs/calendar-utils';
22
22
  import { assertOptions, normalizeSchemaValues } from '@sprucelabs/schema';
23
23
  import draftEventGenerator from '../utilities/draftGenerator.js';
24
+ import isEqual from './isEqual.js';
24
25
  export default class RemoteEventStoreImpl {
25
26
  constructor(options) {
26
27
  this.pendingEvents = {};
@@ -81,7 +82,7 @@ export default class RemoteEventStoreImpl {
81
82
  }
82
83
  delete event.isBusy;
83
84
  const lastSaved = (_b = this.lastSavedById[this.getId(id)]) !== null && _b !== void 0 ? _b : {};
84
- if (equals(lastSaved.before, event) || equals(lastSaved.after, event)) {
85
+ if (isEqual(lastSaved.before, event) || isEqual(lastSaved.after, event)) {
85
86
  resolve(lastSaved.after);
86
87
  }
87
88
  else {
@@ -273,22 +274,3 @@ export default class RemoteEventStoreImpl {
273
274
  });
274
275
  }
275
276
  }
276
- const equals = (a, b) => {
277
- if (a === b) {
278
- return true;
279
- }
280
- if (a instanceof Date && b instanceof Date) {
281
- return a.getTime() === b.getTime();
282
- }
283
- if (!a || !b || (typeof a !== 'object' && typeof b !== 'object')) {
284
- return a === b;
285
- }
286
- if (a.prototype !== b.prototype) {
287
- return false;
288
- }
289
- const keys = Object.keys(a);
290
- if (keys.length !== Object.keys(b).length) {
291
- return false;
292
- }
293
- return keys.every((k) => equals(a[k], b[k]));
294
- };
@@ -10,6 +10,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
10
10
  protected controlsVc: EventControlsCardViewController;
11
11
  private isLoaded;
12
12
  private events;
13
+ protected shouldLoadToolsRightAway: boolean;
13
14
  load(sm: CalendarToolBeltStateMachine): Promise<void>;
14
15
  getIsLoaded(): boolean;
15
16
  protected loadRemoteCards(): Promise<void>;
@@ -24,6 +25,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
24
25
  addTool(options: AddToolOptions): Promise<CalendarTool>;
25
26
  protected buildVcConstructorOptions(id: string): CalendarToolOptions;
26
27
  private addVc;
28
+ loadTools(): Promise<void>;
27
29
  protected getPersonFromEvent(): ReturnType<GetPersonFromEventHandler>;
28
30
  protected handleUpdateContextFromTool(updates: Partial<CalendarToolBeltContext>, fromToolId: string, options?: UpdateCalendarContextOptions): Promise<boolean>;
29
31
  removeTool(id: string): void;
@@ -15,6 +15,7 @@ export default class AbstractCalendarEventToolBeltState {
15
15
  this.vcs = [];
16
16
  this.pendingContextUpdates = {};
17
17
  this.isLoaded = false;
18
+ this.shouldLoadToolsRightAway = true;
18
19
  }
19
20
  load(sm) {
20
21
  return __awaiter(this, void 0, void 0, function* () {
@@ -127,7 +128,14 @@ export default class AbstractCalendarEventToolBeltState {
127
128
  lineIcon,
128
129
  card: vc.render(),
129
130
  });
130
- yield ((_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc));
131
+ if (this.shouldLoadToolsRightAway) {
132
+ yield ((_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc));
133
+ }
134
+ });
135
+ }
136
+ loadTools() {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ yield Promise.all(this.vcs.map(({ vc }) => { var _a; return (_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc); }));
131
139
  });
132
140
  }
133
141
  getPersonFromEvent() {
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  const calendar_utils_1 = require("@sprucelabs/calendar-utils");
18
18
  const schema_1 = require("@sprucelabs/schema");
19
19
  const draftGenerator_1 = __importDefault(require("../utilities/draftGenerator"));
20
+ const isEqual_1 = __importDefault(require("./isEqual"));
20
21
  class RemoteEventStoreImpl {
21
22
  constructor(options) {
22
23
  this.pendingEvents = {};
@@ -72,7 +73,7 @@ class RemoteEventStoreImpl {
72
73
  }
73
74
  delete event.isBusy;
74
75
  const lastSaved = (_b = this.lastSavedById[this.getId(id)]) !== null && _b !== void 0 ? _b : {};
75
- if (equals(lastSaved.before, event) || equals(lastSaved.after, event)) {
76
+ if ((0, isEqual_1.default)(lastSaved.before, event) || (0, isEqual_1.default)(lastSaved.after, event)) {
76
77
  resolve(lastSaved.after);
77
78
  }
78
79
  else {
@@ -248,22 +249,3 @@ class RemoteEventStoreImpl {
248
249
  }
249
250
  }
250
251
  exports.default = RemoteEventStoreImpl;
251
- const equals = (a, b) => {
252
- if (a === b) {
253
- return true;
254
- }
255
- if (a instanceof Date && b instanceof Date) {
256
- return a.getTime() === b.getTime();
257
- }
258
- if (!a || !b || (typeof a !== 'object' && typeof b !== 'object')) {
259
- return a === b;
260
- }
261
- if (a.prototype !== b.prototype) {
262
- return false;
263
- }
264
- const keys = Object.keys(a);
265
- if (keys.length !== Object.keys(b).length) {
266
- return false;
267
- }
268
- return keys.every((k) => equals(a[k], b[k]));
269
- };
@@ -10,6 +10,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
10
10
  protected controlsVc: EventControlsCardViewController;
11
11
  private isLoaded;
12
12
  private events;
13
+ protected shouldLoadToolsRightAway: boolean;
13
14
  load(sm: CalendarToolBeltStateMachine): Promise<void>;
14
15
  getIsLoaded(): boolean;
15
16
  protected loadRemoteCards(): Promise<void>;
@@ -24,6 +25,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
24
25
  addTool(options: AddToolOptions): Promise<CalendarTool>;
25
26
  protected buildVcConstructorOptions(id: string): CalendarToolOptions;
26
27
  private addVc;
28
+ loadTools(): Promise<void>;
27
29
  protected getPersonFromEvent(): ReturnType<GetPersonFromEventHandler>;
28
30
  protected handleUpdateContextFromTool(updates: Partial<CalendarToolBeltContext>, fromToolId: string, options?: UpdateCalendarContextOptions): Promise<boolean>;
29
31
  removeTool(id: string): void;
@@ -11,6 +11,7 @@ class AbstractCalendarEventToolBeltState {
11
11
  this.vcs = [];
12
12
  this.pendingContextUpdates = {};
13
13
  this.isLoaded = false;
14
+ this.shouldLoadToolsRightAway = true;
14
15
  }
15
16
  async load(sm) {
16
17
  this.sm = sm;
@@ -106,7 +107,12 @@ class AbstractCalendarEventToolBeltState {
106
107
  lineIcon,
107
108
  card: vc.render(),
108
109
  });
109
- await ((_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc));
110
+ if (this.shouldLoadToolsRightAway) {
111
+ await ((_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc));
112
+ }
113
+ }
114
+ async loadTools() {
115
+ await Promise.all(this.vcs.map(({ vc }) => { var _a; return (_a = vc.load) === null || _a === void 0 ? void 0 : _a.call(vc); }));
110
116
  }
111
117
  async getPersonFromEvent() {
112
118
  var _a;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sprucelabs/spruce-calendar-components",
3
3
  "description": "Calendar components for working with calendars and Sprucebot.",
4
- "version": "25.5.13",
4
+ "version": "25.6.1",
5
5
  "skill": {
6
6
  "namespace": "calendar"
7
7
  },