@sprucelabs/spruce-calendar-components 25.6.0 → 25.6.2

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.
@@ -857,142 +857,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
857
857
  interface CancelCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CancelCalendarEventResponsePayloadSchema> {
858
858
  }
859
859
  }
860
- namespace SpruceSchemas.Calendar.v2021_05_19 {
861
- interface CreateCalendarEmitTarget {
862
- 'organizationId': string;
863
- }
864
- interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
865
- id: 'createCalendarEmitTarget';
866
- version: 'v2021_05_19';
867
- namespace: 'Calendar';
868
- name: '';
869
- fields: {
870
- /** . */
871
- 'organizationId': {
872
- type: 'id';
873
- isRequired: true;
874
- options: undefined;
875
- };
876
- };
877
- }
878
- interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
879
- }
880
- }
881
- namespace SpruceSchemas.Calendar.v2021_05_19 {
882
- interface CreateCalendarEmitPayload {
883
- 'slug': string;
884
- 'title': string;
885
- 'eventTypes'?: string[] | undefined | null;
886
- 'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
887
- }
888
- interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
889
- id: 'createCalendarEmitPayload';
890
- version: 'v2021_05_19';
891
- namespace: 'Calendar';
892
- name: '';
893
- fields: {
894
- /** . */
895
- 'slug': {
896
- type: 'id';
897
- isRequired: true;
898
- options: undefined;
899
- };
900
- /** . */
901
- 'title': {
902
- type: 'text';
903
- isRequired: true;
904
- options: undefined;
905
- };
906
- /** . */
907
- 'eventTypes': {
908
- type: 'text';
909
- isArray: true;
910
- minArrayLength: 0;
911
- options: undefined;
912
- };
913
- /** . */
914
- 'availableTimeSlotBehavior': {
915
- type: 'select';
916
- options: {
917
- choices: [{
918
- "value": "include";
919
- "label": "Include";
920
- }, {
921
- "value": "exclude";
922
- "label": "Exclude";
923
- }];
924
- };
925
- };
926
- };
927
- }
928
- interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
929
- }
930
- }
931
- namespace SpruceSchemas.Calendar.v2021_05_19 {
932
- interface CreateCalendarEmitTargetAndPayload {
933
- /** Source. */
934
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
935
- 'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
936
- 'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
937
- }
938
- interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
939
- id: 'createCalendarEmitTargetAndPayload';
940
- version: 'v2021_05_19';
941
- namespace: 'Calendar';
942
- name: '';
943
- fields: {
944
- /** Source. */
945
- 'source': {
946
- label: 'Source';
947
- type: 'schema';
948
- options: {
949
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
950
- };
951
- };
952
- /** . */
953
- 'target': {
954
- type: 'schema';
955
- isRequired: true;
956
- options: {
957
- schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
958
- };
959
- };
960
- /** . */
961
- 'payload': {
962
- type: 'schema';
963
- isRequired: true;
964
- options: {
965
- schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
966
- };
967
- };
968
- };
969
- }
970
- interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
971
- }
972
- }
973
- namespace SpruceSchemas.Calendar.v2021_05_19 {
974
- interface CreateCalendarResponsePayload {
975
- 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
976
- }
977
- interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
978
- id: 'createCalendarResponsePayload';
979
- version: 'v2021_05_19';
980
- namespace: 'Calendar';
981
- name: '';
982
- fields: {
983
- /** . */
984
- 'calendar': {
985
- type: 'schema';
986
- isRequired: true;
987
- options: {
988
- schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
989
- };
990
- };
991
- };
992
- }
993
- interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
994
- }
995
- }
996
860
  namespace SpruceSchemas.Calendar.v2021_05_19 {
997
861
  interface CreateCalendarEventTypeEmitPayload {
998
862
  'name': string;
@@ -1502,6 +1366,142 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1502
1366
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1503
1367
  }
1504
1368
  }
1369
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1370
+ interface CreateCalendarEmitTarget {
1371
+ 'organizationId': string;
1372
+ }
1373
+ interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
1374
+ id: 'createCalendarEmitTarget';
1375
+ version: 'v2021_05_19';
1376
+ namespace: 'Calendar';
1377
+ name: '';
1378
+ fields: {
1379
+ /** . */
1380
+ 'organizationId': {
1381
+ type: 'id';
1382
+ isRequired: true;
1383
+ options: undefined;
1384
+ };
1385
+ };
1386
+ }
1387
+ interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
1388
+ }
1389
+ }
1390
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1391
+ interface CreateCalendarEmitPayload {
1392
+ 'slug': string;
1393
+ 'title': string;
1394
+ 'eventTypes'?: string[] | undefined | null;
1395
+ 'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
1396
+ }
1397
+ interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
1398
+ id: 'createCalendarEmitPayload';
1399
+ version: 'v2021_05_19';
1400
+ namespace: 'Calendar';
1401
+ name: '';
1402
+ fields: {
1403
+ /** . */
1404
+ 'slug': {
1405
+ type: 'id';
1406
+ isRequired: true;
1407
+ options: undefined;
1408
+ };
1409
+ /** . */
1410
+ 'title': {
1411
+ type: 'text';
1412
+ isRequired: true;
1413
+ options: undefined;
1414
+ };
1415
+ /** . */
1416
+ 'eventTypes': {
1417
+ type: 'text';
1418
+ isArray: true;
1419
+ minArrayLength: 0;
1420
+ options: undefined;
1421
+ };
1422
+ /** . */
1423
+ 'availableTimeSlotBehavior': {
1424
+ type: 'select';
1425
+ options: {
1426
+ choices: [{
1427
+ "value": "include";
1428
+ "label": "Include";
1429
+ }, {
1430
+ "value": "exclude";
1431
+ "label": "Exclude";
1432
+ }];
1433
+ };
1434
+ };
1435
+ };
1436
+ }
1437
+ interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
1438
+ }
1439
+ }
1440
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1441
+ interface CreateCalendarEmitTargetAndPayload {
1442
+ /** Source. */
1443
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1444
+ 'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
1445
+ 'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
1446
+ }
1447
+ interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1448
+ id: 'createCalendarEmitTargetAndPayload';
1449
+ version: 'v2021_05_19';
1450
+ namespace: 'Calendar';
1451
+ name: '';
1452
+ fields: {
1453
+ /** Source. */
1454
+ 'source': {
1455
+ label: 'Source';
1456
+ type: 'schema';
1457
+ options: {
1458
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1459
+ };
1460
+ };
1461
+ /** . */
1462
+ 'target': {
1463
+ type: 'schema';
1464
+ isRequired: true;
1465
+ options: {
1466
+ schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
1467
+ };
1468
+ };
1469
+ /** . */
1470
+ 'payload': {
1471
+ type: 'schema';
1472
+ isRequired: true;
1473
+ options: {
1474
+ schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
1475
+ };
1476
+ };
1477
+ };
1478
+ }
1479
+ interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
1480
+ }
1481
+ }
1482
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1483
+ interface CreateCalendarResponsePayload {
1484
+ 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
1485
+ }
1486
+ interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1487
+ id: 'createCalendarResponsePayload';
1488
+ version: 'v2021_05_19';
1489
+ namespace: 'Calendar';
1490
+ name: '';
1491
+ fields: {
1492
+ /** . */
1493
+ 'calendar': {
1494
+ type: 'schema';
1495
+ isRequired: true;
1496
+ options: {
1497
+ schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
1498
+ };
1499
+ };
1500
+ };
1501
+ }
1502
+ interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
1503
+ }
1504
+ }
1505
1505
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1506
1506
  interface DeleteCalendarEmitTarget {
1507
1507
  'organizationId': string;
@@ -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);
@@ -857,142 +857,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
857
857
  interface CancelCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CancelCalendarEventResponsePayloadSchema> {
858
858
  }
859
859
  }
860
- namespace SpruceSchemas.Calendar.v2021_05_19 {
861
- interface CreateCalendarEmitTarget {
862
- 'organizationId': string;
863
- }
864
- interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
865
- id: 'createCalendarEmitTarget';
866
- version: 'v2021_05_19';
867
- namespace: 'Calendar';
868
- name: '';
869
- fields: {
870
- /** . */
871
- 'organizationId': {
872
- type: 'id';
873
- isRequired: true;
874
- options: undefined;
875
- };
876
- };
877
- }
878
- interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
879
- }
880
- }
881
- namespace SpruceSchemas.Calendar.v2021_05_19 {
882
- interface CreateCalendarEmitPayload {
883
- 'slug': string;
884
- 'title': string;
885
- 'eventTypes'?: string[] | undefined | null;
886
- 'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
887
- }
888
- interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
889
- id: 'createCalendarEmitPayload';
890
- version: 'v2021_05_19';
891
- namespace: 'Calendar';
892
- name: '';
893
- fields: {
894
- /** . */
895
- 'slug': {
896
- type: 'id';
897
- isRequired: true;
898
- options: undefined;
899
- };
900
- /** . */
901
- 'title': {
902
- type: 'text';
903
- isRequired: true;
904
- options: undefined;
905
- };
906
- /** . */
907
- 'eventTypes': {
908
- type: 'text';
909
- isArray: true;
910
- minArrayLength: 0;
911
- options: undefined;
912
- };
913
- /** . */
914
- 'availableTimeSlotBehavior': {
915
- type: 'select';
916
- options: {
917
- choices: [{
918
- "value": "include";
919
- "label": "Include";
920
- }, {
921
- "value": "exclude";
922
- "label": "Exclude";
923
- }];
924
- };
925
- };
926
- };
927
- }
928
- interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
929
- }
930
- }
931
- namespace SpruceSchemas.Calendar.v2021_05_19 {
932
- interface CreateCalendarEmitTargetAndPayload {
933
- /** Source. */
934
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
935
- 'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
936
- 'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
937
- }
938
- interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
939
- id: 'createCalendarEmitTargetAndPayload';
940
- version: 'v2021_05_19';
941
- namespace: 'Calendar';
942
- name: '';
943
- fields: {
944
- /** Source. */
945
- 'source': {
946
- label: 'Source';
947
- type: 'schema';
948
- options: {
949
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
950
- };
951
- };
952
- /** . */
953
- 'target': {
954
- type: 'schema';
955
- isRequired: true;
956
- options: {
957
- schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
958
- };
959
- };
960
- /** . */
961
- 'payload': {
962
- type: 'schema';
963
- isRequired: true;
964
- options: {
965
- schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
966
- };
967
- };
968
- };
969
- }
970
- interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
971
- }
972
- }
973
- namespace SpruceSchemas.Calendar.v2021_05_19 {
974
- interface CreateCalendarResponsePayload {
975
- 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
976
- }
977
- interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
978
- id: 'createCalendarResponsePayload';
979
- version: 'v2021_05_19';
980
- namespace: 'Calendar';
981
- name: '';
982
- fields: {
983
- /** . */
984
- 'calendar': {
985
- type: 'schema';
986
- isRequired: true;
987
- options: {
988
- schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
989
- };
990
- };
991
- };
992
- }
993
- interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
994
- }
995
- }
996
860
  namespace SpruceSchemas.Calendar.v2021_05_19 {
997
861
  interface CreateCalendarEventTypeEmitPayload {
998
862
  'name': string;
@@ -1502,6 +1366,142 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1502
1366
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1503
1367
  }
1504
1368
  }
1369
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1370
+ interface CreateCalendarEmitTarget {
1371
+ 'organizationId': string;
1372
+ }
1373
+ interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
1374
+ id: 'createCalendarEmitTarget';
1375
+ version: 'v2021_05_19';
1376
+ namespace: 'Calendar';
1377
+ name: '';
1378
+ fields: {
1379
+ /** . */
1380
+ 'organizationId': {
1381
+ type: 'id';
1382
+ isRequired: true;
1383
+ options: undefined;
1384
+ };
1385
+ };
1386
+ }
1387
+ interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
1388
+ }
1389
+ }
1390
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1391
+ interface CreateCalendarEmitPayload {
1392
+ 'slug': string;
1393
+ 'title': string;
1394
+ 'eventTypes'?: string[] | undefined | null;
1395
+ 'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
1396
+ }
1397
+ interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
1398
+ id: 'createCalendarEmitPayload';
1399
+ version: 'v2021_05_19';
1400
+ namespace: 'Calendar';
1401
+ name: '';
1402
+ fields: {
1403
+ /** . */
1404
+ 'slug': {
1405
+ type: 'id';
1406
+ isRequired: true;
1407
+ options: undefined;
1408
+ };
1409
+ /** . */
1410
+ 'title': {
1411
+ type: 'text';
1412
+ isRequired: true;
1413
+ options: undefined;
1414
+ };
1415
+ /** . */
1416
+ 'eventTypes': {
1417
+ type: 'text';
1418
+ isArray: true;
1419
+ minArrayLength: 0;
1420
+ options: undefined;
1421
+ };
1422
+ /** . */
1423
+ 'availableTimeSlotBehavior': {
1424
+ type: 'select';
1425
+ options: {
1426
+ choices: [{
1427
+ "value": "include";
1428
+ "label": "Include";
1429
+ }, {
1430
+ "value": "exclude";
1431
+ "label": "Exclude";
1432
+ }];
1433
+ };
1434
+ };
1435
+ };
1436
+ }
1437
+ interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
1438
+ }
1439
+ }
1440
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1441
+ interface CreateCalendarEmitTargetAndPayload {
1442
+ /** Source. */
1443
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1444
+ 'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
1445
+ 'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
1446
+ }
1447
+ interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1448
+ id: 'createCalendarEmitTargetAndPayload';
1449
+ version: 'v2021_05_19';
1450
+ namespace: 'Calendar';
1451
+ name: '';
1452
+ fields: {
1453
+ /** Source. */
1454
+ 'source': {
1455
+ label: 'Source';
1456
+ type: 'schema';
1457
+ options: {
1458
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1459
+ };
1460
+ };
1461
+ /** . */
1462
+ 'target': {
1463
+ type: 'schema';
1464
+ isRequired: true;
1465
+ options: {
1466
+ schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
1467
+ };
1468
+ };
1469
+ /** . */
1470
+ 'payload': {
1471
+ type: 'schema';
1472
+ isRequired: true;
1473
+ options: {
1474
+ schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
1475
+ };
1476
+ };
1477
+ };
1478
+ }
1479
+ interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
1480
+ }
1481
+ }
1482
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1483
+ interface CreateCalendarResponsePayload {
1484
+ 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
1485
+ }
1486
+ interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1487
+ id: 'createCalendarResponsePayload';
1488
+ version: 'v2021_05_19';
1489
+ namespace: 'Calendar';
1490
+ name: '';
1491
+ fields: {
1492
+ /** . */
1493
+ 'calendar': {
1494
+ type: 'schema';
1495
+ isRequired: true;
1496
+ options: {
1497
+ schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
1498
+ };
1499
+ };
1500
+ };
1501
+ }
1502
+ interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
1503
+ }
1504
+ }
1505
1505
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1506
1506
  interface DeleteCalendarEmitTarget {
1507
1507
  'organizationId': string;
@@ -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
- };
@@ -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
- };
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.6.0",
4
+ "version": "25.6.2",
5
5
  "skill": {
6
6
  "namespace": "calendar"
7
7
  },