@outbuild-company/schedule-core 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -510,6 +510,7 @@ declare const DISPATCH_ACTION_KIND: {
510
510
  readonly SORT_SET: "sort-set";
511
511
  readonly VIEW_ATTRIBUTES_SET: "view-attributes-set";
512
512
  readonly GROUP_SET: "group-set";
513
+ readonly WBS_DEPTH_SET: "wbs-depth-set";
513
514
  readonly SIR_SYNC: "sir-sync";
514
515
  readonly ACTIVITY_LOOKAHEAD_SYNC: "activity-lookahead-sync";
515
516
  readonly SCHEDULE_AUTO_SCHEDULE: "schedule-auto-schedule";
@@ -791,6 +792,17 @@ interface GroupCriterion extends GroupLevelWindow {
791
792
  readonly attributeKey: string;
792
793
  readonly direction: OrderDirection;
793
794
  }
795
+ /**
796
+ * How deep the WBS goes on screen. `null` shows every level; `FLAT_WBS_DEPTH`
797
+ * shows none of them, leaving the activities as one flat list; `N` keeps the
798
+ * first N levels and gathers everything deeper under the last one shown.
799
+ *
800
+ * It reads the same whether or not the schedule is banded: the cap counts levels
801
+ * from the top of the WBS, never from the band an activity happens to sit in.
802
+ */
803
+ type WbsDepth = number | null;
804
+ /** The depth that leaves no WBS row on screen. */
805
+ declare const FLAT_WBS_DEPTH = 0;
794
806
  /** Runtime grouping configuration active on a schedule. */
795
807
  interface GroupState extends GroupCriterion {
796
808
  readonly includeWbs: boolean;
@@ -1105,6 +1117,10 @@ type DispatchAction = {
1105
1117
  kind: typeof DISPATCH_ACTION_KIND.GROUP_SET;
1106
1118
  group: GroupStateInput | null;
1107
1119
  eventSource?: string;
1120
+ } | {
1121
+ kind: typeof DISPATCH_ACTION_KIND.WBS_DEPTH_SET;
1122
+ wbsDepth: WbsDepth;
1123
+ eventSource?: string;
1108
1124
  } | {
1109
1125
  kind: typeof DISPATCH_ACTION_KIND.SIR_SYNC;
1110
1126
  activityId: ActivityId;
@@ -1824,6 +1840,18 @@ interface ScheduleViewApi {
1824
1840
  * @returns The complete dispatch result; activity records stay unchanged.
1825
1841
  */
1826
1842
  setGroup(group: GroupStateInput | null, context?: MutationContext): Promise<DispatchResult>;
1843
+ /** @returns How deep the WBS reaches the screen, or `null` for every level. */
1844
+ wbsDepth(): WbsDepth;
1845
+ /**
1846
+ * Caps how deep the WBS reaches the screen.
1847
+ *
1848
+ * @param wbsDepth - `null` for every level, `0` for a flat list of activities,
1849
+ * or `N` to keep the first N levels and fold everything deeper into the last
1850
+ * one shown.
1851
+ * @param context - Optional consumer event source.
1852
+ * @returns The complete dispatch result; activity records stay unchanged.
1853
+ */
1854
+ setWbsDepth(wbsDepth: WbsDepth, context?: MutationContext): Promise<DispatchResult>;
1827
1855
  /**
1828
1856
  * Replaces the visible activity ID set.
1829
1857
  *
@@ -2464,6 +2492,8 @@ declare class ScheduleCore {
2464
2492
  getVisualRows(): ReadonlyArray<VisualRow>;
2465
2493
  /** @returns A defensive active-group snapshot, or `null`. */
2466
2494
  getActiveGroup(): Readonly<GroupState> | null;
2495
+ /** @returns How deep the WBS reaches the screen, or `null` for every level. */
2496
+ getWbsDepth(): WbsDepth;
2467
2497
  /** @returns Whether the parent currently has a direct child. */
2468
2498
  hasChild(parentId: ActivityId | typeof ROOT_PARENT_ID): boolean;
2469
2499
  /**
@@ -2839,4 +2869,4 @@ declare const DISPATCH_TRACK_EVENT: {
2839
2869
  /** Consumer analytics event name emitted by a schedule mutation. */
2840
2870
  type DispatchTrackEvent = (typeof DISPATCH_TRACK_EVENT)[keyof typeof DISPATCH_TRACK_EVENT];
2841
2871
 
2842
- export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WithProplannerId, type WorkTimeDirection, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
2872
+ export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WbsDepth, type WithProplannerId, type WorkTimeDirection, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
package/dist/index.d.ts CHANGED
@@ -510,6 +510,7 @@ declare const DISPATCH_ACTION_KIND: {
510
510
  readonly SORT_SET: "sort-set";
511
511
  readonly VIEW_ATTRIBUTES_SET: "view-attributes-set";
512
512
  readonly GROUP_SET: "group-set";
513
+ readonly WBS_DEPTH_SET: "wbs-depth-set";
513
514
  readonly SIR_SYNC: "sir-sync";
514
515
  readonly ACTIVITY_LOOKAHEAD_SYNC: "activity-lookahead-sync";
515
516
  readonly SCHEDULE_AUTO_SCHEDULE: "schedule-auto-schedule";
@@ -791,6 +792,17 @@ interface GroupCriterion extends GroupLevelWindow {
791
792
  readonly attributeKey: string;
792
793
  readonly direction: OrderDirection;
793
794
  }
795
+ /**
796
+ * How deep the WBS goes on screen. `null` shows every level; `FLAT_WBS_DEPTH`
797
+ * shows none of them, leaving the activities as one flat list; `N` keeps the
798
+ * first N levels and gathers everything deeper under the last one shown.
799
+ *
800
+ * It reads the same whether or not the schedule is banded: the cap counts levels
801
+ * from the top of the WBS, never from the band an activity happens to sit in.
802
+ */
803
+ type WbsDepth = number | null;
804
+ /** The depth that leaves no WBS row on screen. */
805
+ declare const FLAT_WBS_DEPTH = 0;
794
806
  /** Runtime grouping configuration active on a schedule. */
795
807
  interface GroupState extends GroupCriterion {
796
808
  readonly includeWbs: boolean;
@@ -1105,6 +1117,10 @@ type DispatchAction = {
1105
1117
  kind: typeof DISPATCH_ACTION_KIND.GROUP_SET;
1106
1118
  group: GroupStateInput | null;
1107
1119
  eventSource?: string;
1120
+ } | {
1121
+ kind: typeof DISPATCH_ACTION_KIND.WBS_DEPTH_SET;
1122
+ wbsDepth: WbsDepth;
1123
+ eventSource?: string;
1108
1124
  } | {
1109
1125
  kind: typeof DISPATCH_ACTION_KIND.SIR_SYNC;
1110
1126
  activityId: ActivityId;
@@ -1824,6 +1840,18 @@ interface ScheduleViewApi {
1824
1840
  * @returns The complete dispatch result; activity records stay unchanged.
1825
1841
  */
1826
1842
  setGroup(group: GroupStateInput | null, context?: MutationContext): Promise<DispatchResult>;
1843
+ /** @returns How deep the WBS reaches the screen, or `null` for every level. */
1844
+ wbsDepth(): WbsDepth;
1845
+ /**
1846
+ * Caps how deep the WBS reaches the screen.
1847
+ *
1848
+ * @param wbsDepth - `null` for every level, `0` for a flat list of activities,
1849
+ * or `N` to keep the first N levels and fold everything deeper into the last
1850
+ * one shown.
1851
+ * @param context - Optional consumer event source.
1852
+ * @returns The complete dispatch result; activity records stay unchanged.
1853
+ */
1854
+ setWbsDepth(wbsDepth: WbsDepth, context?: MutationContext): Promise<DispatchResult>;
1827
1855
  /**
1828
1856
  * Replaces the visible activity ID set.
1829
1857
  *
@@ -2464,6 +2492,8 @@ declare class ScheduleCore {
2464
2492
  getVisualRows(): ReadonlyArray<VisualRow>;
2465
2493
  /** @returns A defensive active-group snapshot, or `null`. */
2466
2494
  getActiveGroup(): Readonly<GroupState> | null;
2495
+ /** @returns How deep the WBS reaches the screen, or `null` for every level. */
2496
+ getWbsDepth(): WbsDepth;
2467
2497
  /** @returns Whether the parent currently has a direct child. */
2468
2498
  hasChild(parentId: ActivityId | typeof ROOT_PARENT_ID): boolean;
2469
2499
  /**
@@ -2839,4 +2869,4 @@ declare const DISPATCH_TRACK_EVENT: {
2839
2869
  /** Consumer analytics event name emitted by a schedule mutation. */
2840
2870
  type DispatchTrackEvent = (typeof DISPATCH_TRACK_EVENT)[keyof typeof DISPATCH_TRACK_EVENT];
2841
2871
 
2842
- export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WithProplannerId, type WorkTimeDirection, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
2872
+ export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, type ActivityBaselineSnapshot, type ActivityBatchAction, type ActivityBatchInput, type ActivityBatchItem, type ActivityBatchItemInput, type ActivityBatchLinkInput$1 as ActivityBatchLinkInput, type ActivityBatchMode, type ActivityBatchParentReference, type ActivityBatchReference, type ActivityBulkEdit, type ActivityCreateInput, type ActivityCreationOverrides, type ActivityCreter, type ActivityDateEdge, type ActivityDateEdit, type ActivityField, type ActivityFieldEdit, type ActivityFieldValue, type ActivityId, type ActivityLookaheadSyncInput, type ActivityMoveInput, type ActivityStatus, type ActivityType, type ApplyLookaheadConversionInput, type BackendActivityInput, type BackendCalendarExceptionInput, type BackendCalendarInput, type BackendLinkInput, type BackendScheduleInput, type BackendSectorInput, type BackendShiftInput, type BaselinePoint, type BaselineVersion, type BranchOrderChange, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, type Calendar, type CalendarId, type CalendarLike, type CalendarUnit, type CalendarWorktime, type ChangeSet, type ChangeSetSource, type ColumnName, type ConstraintType, type ConstraintWarning, type CoreActivity, type CoreBaselinePoint, type CreationKind, type CriticalPathResult, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, type DateGesture, type DateGestureKind, type DateGesturePreview, type DatesBatchVerdict, type DeletedActivitySnapshot, type DeletedLinkSnapshot, type DispatchAction, type DispatchActionKind, type DispatchManyAction, type DispatchManyChangeSetSource, type DispatchManyResult, type DispatchOptions, type DispatchRejectReason, type DispatchResult, type DispatchTrackEvent, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, type EditAlertKey, type EditDenialReason, type EditResult, type EditableColumnName, type EffectiveGraphAudit, type EntityChange, type ActivityBatchLinkInput as ErgonomicActivityBatchLinkInput, type ExpectedProgressAdapter, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, type FilterCriterion, type FilterCriterionGroup, type FilterCriterionValue, type FilterDateRange, type FilterField, type FilterLogic, type FilterOperator, type FilterRejection, type FilterState, type FilterValueKind, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, type GroupCriterion, type GroupCriterionInput, type GroupLevelWindow, type GroupState, type GroupStateInput, type ImpactRequestSyncInput, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, type Link, type LinkBatchOperationKind, type LinkBatchRequest, type LinkBatchVerdict, type LinkCreateRequest, type LinkId, type LinkPatchRequest, type LinkRejection, type LinkRelationship, type LinkType, type LinkTypeCode, type LinkUpdateAction, type LinksBatchOperation, type LoadDiagnostic, type LoadDiagnosticCode, type LookaheadConversionFormerParent, type LookaheadConversionGroup, type LookaheadConversionInput, type LookaheadConversionMilestoneMove, type LookaheadConversionPlan, type LookaheadConversionResult, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, type MutationContext, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, type OrderDirection, type OrderMode, type OrderRule, type OrderState, type ParsedInput, type PendingRequest, type PersistableActivityField, type PersistedEntityIdentity, type PersistenceCheckpoint, type PipelineColumnName, type ProjectWorkHours, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, type ScheduleActivitiesApi, type ScheduleApiNamespaces, type ScheduleAutoScheduleAction, type ScheduleBaselinesApi, type ScheduleCalendarsApi, ScheduleCore, type ScheduleCoreInput, type ScheduleCoreReporter, type ScheduleCoreStatus, type ScheduleCriticalPathApi, type ScheduleDiagnosticsApi, type ScheduleEffect, type ScheduleHistoryApi, type ScheduleImpactRequestsApi, type ScheduleLinksApi, type SchedulePersistenceApi, type ScheduleProjectionApi, type ScheduleSelectionApi, type ScheduleViewApi, type SectorMetadata, type SelectionToggleInput, type StaticActivityDefaults, type StatusCriteria, type TrackingEvent, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, type UndoOptions, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, type ViewAttributeAssignmentInput, type ViewAttributeCatalogInput, type ViewAttributeFilterCriterion, type ViewAttributeOrderRule, type ViewAttributeValueInput, type ViewFilterInput, type ViewStateChange, type ViewStatePropChange, type VisualRow, WORK_TIME_DIRECTION, type WbsDepth, type WithProplannerId, type WorkTimeDirection, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
package/dist/index.js CHANGED
@@ -352,6 +352,7 @@ var DISPATCH_ACTION_KIND = {
352
352
  SORT_SET: "sort-set",
353
353
  VIEW_ATTRIBUTES_SET: "view-attributes-set",
354
354
  GROUP_SET: "group-set",
355
+ WBS_DEPTH_SET: "wbs-depth-set",
355
356
  SIR_SYNC: "sir-sync",
356
357
  ACTIVITY_LOOKAHEAD_SYNC: "activity-lookahead-sync",
357
358
  SCHEDULE_AUTO_SCHEDULE: "schedule-auto-schedule"
@@ -686,6 +687,12 @@ function createScheduleNamespaces(engine) {
686
687
  kind: DISPATCH_ACTION_KIND.GROUP_SET,
687
688
  group
688
689
  }),
690
+ wbsDepth: () => engine.getWbsDepth(),
691
+ setWbsDepth: (wbsDepth, context = {}) => engine.dispatch({
692
+ ...context,
693
+ kind: DISPATCH_ACTION_KIND.WBS_DEPTH_SET,
694
+ wbsDepth
695
+ }),
689
696
  setVisibility: (activityIds, context = {}) => engine.dispatch({
690
697
  ...context,
691
698
  kind: DISPATCH_ACTION_KIND.VISIBILITY_SET,
@@ -1305,6 +1312,7 @@ var GROUP_ID_SEPARATOR = ":";
1305
1312
  var UNASSIGNED_GROUP_LABEL = "Unassigned";
1306
1313
  var MINIMUM_GROUP_DEPTH = 1;
1307
1314
  var MINIMUM_GROUP_LEVEL = 1;
1315
+ var FLAT_WBS_DEPTH = 0;
1308
1316
  function buildGroupRowId(attributeKey, valueId) {
1309
1317
  return `${GROUP_ID_PREFIX}${GROUP_ID_SEPARATOR}${attributeKey}${GROUP_ID_SEPARATOR}${valueId}`;
1310
1318
  }
@@ -2282,6 +2290,17 @@ function dispatchGroupSet(action, deps) {
2282
2290
  adapter.setGroup(group);
2283
2291
  return { ok: true, changes: emptyViewChanges(action) };
2284
2292
  }
2293
+ function dispatchWbsDepthSet(action, deps) {
2294
+ const { adapter } = deps;
2295
+ const { wbsDepth } = action;
2296
+ if (wbsDepth !== null) {
2297
+ if (!isFiniteInteger(wbsDepth) || wbsDepth < FLAT_WBS_DEPTH) {
2298
+ return { ok: false, reason: FILTER_REJECTION_REASON.INVALID_VALUE };
2299
+ }
2300
+ }
2301
+ adapter.setWbsDepth(wbsDepth);
2302
+ return { ok: true, changes: emptyViewChanges(action) };
2303
+ }
2285
2304
 
2286
2305
  // src/shared/assert-never.ts
2287
2306
  function assertNever(value, message) {
@@ -11213,6 +11232,7 @@ var NON_SCHEDULING_KINDS = /* @__PURE__ */ new Set([
11213
11232
  DISPATCH_ACTION_KIND.SORT_SET,
11214
11233
  DISPATCH_ACTION_KIND.VIEW_ATTRIBUTES_SET,
11215
11234
  DISPATCH_ACTION_KIND.GROUP_SET,
11235
+ DISPATCH_ACTION_KIND.WBS_DEPTH_SET,
11216
11236
  DISPATCH_ACTION_KIND.SIR_SYNC,
11217
11237
  DISPATCH_ACTION_KIND.ACTIVITY_LOOKAHEAD_SYNC,
11218
11238
  DISPATCH_ACTION_KIND.PERSISTENCE_ACKNOWLEDGE,
@@ -11229,7 +11249,8 @@ var PURE_VIEW_STATE_KINDS = /* @__PURE__ */ new Set([
11229
11249
  DISPATCH_ACTION_KIND.FILTER_SET,
11230
11250
  DISPATCH_ACTION_KIND.SORT_SET,
11231
11251
  DISPATCH_ACTION_KIND.VIEW_ATTRIBUTES_SET,
11232
- DISPATCH_ACTION_KIND.GROUP_SET
11252
+ DISPATCH_ACTION_KIND.GROUP_SET,
11253
+ DISPATCH_ACTION_KIND.WBS_DEPTH_SET
11233
11254
  ]);
11234
11255
  function reappliesViewState(action) {
11235
11256
  return !PURE_VIEW_STATE_KINDS.has(action.kind);
@@ -17119,6 +17140,12 @@ async function performDispatch(action, options, deps) {
17119
17140
  hoursPerDay: deps.sector.hoursPerDay
17120
17141
  });
17121
17142
  }
17143
+ if (action.kind === DISPATCH_ACTION_KIND.WBS_DEPTH_SET) {
17144
+ return dispatchWbsDepthSet(action, {
17145
+ adapter: deps.adapter,
17146
+ hoursPerDay: deps.sector.hoursPerDay
17147
+ });
17148
+ }
17122
17149
  if (action.kind === DISPATCH_ACTION_KIND.SIR_SYNC) {
17123
17150
  return dispatchSirSync(action, deps);
17124
17151
  }
@@ -20258,35 +20285,95 @@ function sortedChildNodes(node, direction) {
20258
20285
  if (direction === ORDER_DIRECTION.DESCENDING) children.reverse();
20259
20286
  return children;
20260
20287
  }
20261
- function emitWbsOrderedActivities(memberActivities, activitiesInVisualOrder, parentOf, rows) {
20262
- const members = new Set(
20288
+ var FIRST_WBS_LEVEL = 1;
20289
+ var WHOLE_WBS = Number.POSITIVE_INFINITY;
20290
+ function activityRow(activity) {
20291
+ return {
20292
+ kind: VISUAL_ROW_KIND.ACTIVITY,
20293
+ activityId: String(activity.id)
20294
+ };
20295
+ }
20296
+ function buildWbsTree(included, activitiesInVisualOrder, parentOf) {
20297
+ const roots = [];
20298
+ const childrenOf = /* @__PURE__ */ new Map();
20299
+ for (const activity of activitiesInVisualOrder) {
20300
+ if (!included.has(String(activity.id))) continue;
20301
+ const parentId = parentOf(activity.id);
20302
+ const parentKey = parentId === null ? null : String(parentId);
20303
+ if (parentKey === null || !included.has(parentKey)) {
20304
+ roots.push(activity);
20305
+ continue;
20306
+ }
20307
+ const siblings = childrenOf.get(parentKey);
20308
+ if (siblings === void 0) childrenOf.set(parentKey, [activity]);
20309
+ else siblings.push(activity);
20310
+ }
20311
+ return { roots, childrenOf };
20312
+ }
20313
+ function emitWbsRows(included, input) {
20314
+ const { roots, childrenOf } = buildWbsTree(
20315
+ included,
20316
+ input.activitiesInVisualOrder,
20317
+ input.parentOf
20318
+ );
20319
+ const cap = input.wbsDepth ?? WHOLE_WBS;
20320
+ const childrenOfActivity = (activity) => childrenOf.get(String(activity.id)) ?? [];
20321
+ const foldToActivities = (siblings) => {
20322
+ const folded = [];
20323
+ const walk = (nodes) => {
20324
+ for (const node of nodes) {
20325
+ const children = childrenOfActivity(node);
20326
+ if (children.length === 0) folded.push(node);
20327
+ else walk(children);
20328
+ }
20329
+ };
20330
+ walk(siblings);
20331
+ return folded;
20332
+ };
20333
+ const emit = (siblings, level) => {
20334
+ if (level > cap) {
20335
+ const folded = foldToActivities(siblings);
20336
+ const ordered = input.comparator === null ? folded : sortSiblingsInOrderMode(
20337
+ folded,
20338
+ input.comparator,
20339
+ input.orderMode,
20340
+ () => false
20341
+ );
20342
+ for (const activity of ordered) input.rows.push(activityRow(activity));
20343
+ return;
20344
+ }
20345
+ for (const activity of siblings) {
20346
+ input.rows.push(activityRow(activity));
20347
+ const children = childrenOfActivity(activity);
20348
+ if (children.length > 0) emit(children, level + 1);
20349
+ }
20350
+ };
20351
+ emit(roots, FIRST_WBS_LEVEL);
20352
+ }
20353
+ function emitWbsOrderedActivities(memberActivities, input) {
20354
+ const included = new Set(
20263
20355
  memberActivities.map((activity) => String(activity.id))
20264
20356
  );
20265
- const included = new Set(members);
20266
- for (const memberId of members) {
20267
- let ancestorId = parentOf(memberId);
20357
+ for (const member of memberActivities) {
20358
+ let ancestorId = input.parentOf(member.id);
20268
20359
  while (ancestorId !== null) {
20269
20360
  included.add(String(ancestorId));
20270
- ancestorId = parentOf(ancestorId);
20361
+ ancestorId = input.parentOf(ancestorId);
20271
20362
  }
20272
20363
  }
20273
- for (const activity of activitiesInVisualOrder) {
20274
- if (!included.has(String(activity.id))) continue;
20275
- rows.push({
20276
- kind: VISUAL_ROW_KIND.ACTIVITY,
20277
- activityId: String(activity.id)
20278
- });
20279
- }
20364
+ emitWbsRows(included, input);
20280
20365
  }
20281
20366
  function emitActivities(node, context) {
20282
20367
  const { rows } = context;
20283
20368
  if (context.group.includeWbs) {
20284
- emitWbsOrderedActivities(
20285
- node.activities,
20286
- context.activitiesInVisualOrder,
20287
- context.parentOf,
20369
+ emitWbsOrderedActivities(node.activities, {
20370
+ activitiesInVisualOrder: context.activitiesInVisualOrder,
20371
+ parentOf: context.parentOf,
20372
+ wbsDepth: context.wbsDepth,
20373
+ comparator: context.comparator,
20374
+ orderMode: context.orderMode,
20288
20375
  rows
20289
- );
20376
+ });
20290
20377
  return;
20291
20378
  }
20292
20379
  for (const activity of sortSiblingsInOrderMode(
@@ -20337,10 +20424,20 @@ function projectVisualRows(input) {
20337
20424
  (activity) => input.isVisible(activity.id)
20338
20425
  );
20339
20426
  if (input.group === null || input.catalog === null) {
20340
- return visibleActivities.map((activity) => ({
20341
- kind: VISUAL_ROW_KIND.ACTIVITY,
20342
- activityId: String(activity.id)
20343
- }));
20427
+ if (input.wbsDepth === null) return visibleActivities.map(activityRow);
20428
+ const rows2 = [];
20429
+ emitWbsRows(
20430
+ new Set(visibleActivities.map((activity) => String(activity.id))),
20431
+ {
20432
+ activitiesInVisualOrder: visibleActivities,
20433
+ parentOf: input.parentOf,
20434
+ wbsDepth: input.wbsDepth,
20435
+ comparator: input.comparator,
20436
+ orderMode: input.orderMode,
20437
+ rows: rows2
20438
+ }
20439
+ );
20440
+ return rows2;
20344
20441
  }
20345
20442
  const { group, catalog } = input;
20346
20443
  const root = buildGroupTree(
@@ -20358,6 +20455,7 @@ function projectVisualRows(input) {
20358
20455
  hasChildren: input.hasChildren,
20359
20456
  comparator: input.comparator,
20360
20457
  orderMode: input.orderMode,
20458
+ wbsDepth: input.wbsDepth,
20361
20459
  secondaryCatalog: input.secondaryCatalog,
20362
20460
  rows
20363
20461
  };
@@ -20371,6 +20469,7 @@ function projectVisualRows(input) {
20371
20469
  var ViewAttributeStore = class _ViewAttributeStore {
20372
20470
  catalogs = /* @__PURE__ */ new Map();
20373
20471
  group = null;
20472
+ wbsDepth = null;
20374
20473
  getCatalog(key) {
20375
20474
  return this.catalogs.get(key) ?? null;
20376
20475
  }
@@ -20390,10 +20489,17 @@ var ViewAttributeStore = class _ViewAttributeStore {
20390
20489
  setGroup(nextGroup) {
20391
20490
  this.group = nextGroup;
20392
20491
  }
20492
+ getWbsDepth() {
20493
+ return this.wbsDepth;
20494
+ }
20495
+ setWbsDepth(nextDepth) {
20496
+ this.wbsDepth = nextDepth;
20497
+ }
20393
20498
  clone() {
20394
20499
  const fork = new _ViewAttributeStore();
20395
20500
  fork.catalogs = new Map(this.catalogs);
20396
20501
  fork.group = this.group === null ? null : cloneDomainValue(this.group);
20502
+ fork.wbsDepth = this.wbsDepth;
20397
20503
  return fork;
20398
20504
  }
20399
20505
  };
@@ -20631,6 +20737,13 @@ var ScheduleState = class _ScheduleState {
20631
20737
  this._viewAttributes.setGroup(nextGroup);
20632
20738
  this.invalidateVisualRows();
20633
20739
  }
20740
+ getWbsDepth() {
20741
+ return this._viewAttributes.getWbsDepth();
20742
+ }
20743
+ setWbsDepth(nextDepth) {
20744
+ this._viewAttributes.setWbsDepth(nextDepth);
20745
+ this.invalidateVisualRows();
20746
+ }
20634
20747
  invalidateVisualRows() {
20635
20748
  this._cache.visualRows = null;
20636
20749
  }
@@ -20653,7 +20766,8 @@ var ScheduleState = class _ScheduleState {
20653
20766
  catalog,
20654
20767
  secondaryCatalog,
20655
20768
  comparator: this.getOrderComparator(),
20656
- orderMode: this.getOrderMode()
20769
+ orderMode: this.getOrderMode(),
20770
+ wbsDepth: this._viewAttributes.getWbsDepth()
20657
20771
  });
20658
20772
  return this._cache.visualRows;
20659
20773
  }
@@ -21250,7 +21364,7 @@ function getDispatchHistoryPolicy(action) {
21250
21364
  if (action.kind === DISPATCH_ACTION_KIND.PERSISTENCE_ACKNOWLEDGE) {
21251
21365
  return DISPATCH_HISTORY_POLICY.CHECKPOINT_ON_SUCCESS;
21252
21366
  }
21253
- if (action.kind === DISPATCH_ACTION_KIND.SIR_SYNC || action.kind === DISPATCH_ACTION_KIND.CALENDAR_RECONCILE || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_LOOKAHEAD_SYNC || action.kind === DISPATCH_ACTION_KIND.BASELINE_APPLY || action.kind === DISPATCH_ACTION_KIND.PONDERATOR_CRITERION_SET || action.kind === DISPATCH_ACTION_KIND.STATUS_CRITERIA_SET || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_CLIPBOARD_CLEAR || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_COPY || action.kind === DISPATCH_ACTION_KIND.SELECTION_TOGGLE || action.kind === DISPATCH_ACTION_KIND.SELECTION_REPLACE || action.kind === DISPATCH_ACTION_KIND.VISIBILITY_SET || action.kind === DISPATCH_ACTION_KIND.FILTER_SET || action.kind === DISPATCH_ACTION_KIND.SORT_SET || action.kind === DISPATCH_ACTION_KIND.VIEW_ATTRIBUTES_SET || action.kind === DISPATCH_ACTION_KIND.GROUP_SET) {
21367
+ if (action.kind === DISPATCH_ACTION_KIND.SIR_SYNC || action.kind === DISPATCH_ACTION_KIND.CALENDAR_RECONCILE || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_LOOKAHEAD_SYNC || action.kind === DISPATCH_ACTION_KIND.BASELINE_APPLY || action.kind === DISPATCH_ACTION_KIND.PONDERATOR_CRITERION_SET || action.kind === DISPATCH_ACTION_KIND.STATUS_CRITERIA_SET || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_CLIPBOARD_CLEAR || action.kind === DISPATCH_ACTION_KIND.ACTIVITY_COPY || action.kind === DISPATCH_ACTION_KIND.SELECTION_TOGGLE || action.kind === DISPATCH_ACTION_KIND.SELECTION_REPLACE || action.kind === DISPATCH_ACTION_KIND.VISIBILITY_SET || action.kind === DISPATCH_ACTION_KIND.FILTER_SET || action.kind === DISPATCH_ACTION_KIND.SORT_SET || action.kind === DISPATCH_ACTION_KIND.VIEW_ATTRIBUTES_SET || action.kind === DISPATCH_ACTION_KIND.GROUP_SET || action.kind === DISPATCH_ACTION_KIND.WBS_DEPTH_SET) {
21254
21368
  return DISPATCH_HISTORY_POLICY.SKIP;
21255
21369
  }
21256
21370
  return DISPATCH_HISTORY_POLICY.RECORD;
@@ -24507,6 +24621,11 @@ var ScheduleCore = class _ScheduleCore {
24507
24621
  this.assertReady();
24508
24622
  return cloneDomainValue(this.coreRuntime.state.getGroup());
24509
24623
  }
24624
+ /** @returns How deep the WBS reaches the screen, or `null` for every level. */
24625
+ getWbsDepth() {
24626
+ this.assertReady();
24627
+ return this.coreRuntime.state.getWbsDepth();
24628
+ }
24510
24629
  /** @returns Whether the parent currently has a direct child. */
24511
24630
  hasChild(parentId) {
24512
24631
  this.assertReady();
@@ -25449,6 +25568,6 @@ var CREATION_KIND = {
25449
25568
  ROOT: "root"
25450
25569
  };
25451
25570
 
25452
- export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, ScheduleCore, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, WORK_TIME_DIRECTION, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
25571
+ export { ACTIVITY_BATCH_ACTION_KIND, ACTIVITY_BATCH_MODE, ACTIVITY_DATE_EDGE, ACTIVITY_FIELD, ACTIVITY_PONDERATOR_CRITERION, ACTIVITY_PROGRESS_ORIGIN, ACTIVITY_TYPE, CALENDAR_UNIT, CHANGE_SET_SOURCE_KIND, COLUMN, COMPLETED_PROGRESS, CONSTRAINT_TYPE, CONSTRAINT_TYPE_TO_LABEL, CONSTRAINT_WARNING_KIND, CREATION_KIND, DATE_GESTURE_KIND, DEFAULT_HOURS_PER_DAY, DISPATCH_ACTION_KIND, DISPATCH_ACTION_KINDS, DISPATCH_LINK_OPERATION_KIND, DISPATCH_TRACK_EVENT, EDIT_ALERT_KEY, EDIT_DENIAL_REASON, ENTITY_CHANGE_KIND, FILTER_FIELD, FILTER_LOGIC, FILTER_OPERATOR, FILTER_REJECTION_REASON, FILTER_VALUE_KIND, FLAT_WBS_DEPTH, GROUP_ID_PREFIX, GROUP_ID_SEPARATOR, LINK_BATCH_OPERATION_KIND, LINK_CODE, LINK_CODE_TO_TYPE, LINK_REJECTION_REASON, LINK_RELATIONSHIP, LINK_TYPE, LINK_TYPE_CODE, MINIMUM_GROUP_DEPTH, MINIMUM_GROUP_LEVEL, NEW_ACTIVITY_DEFAULTS, NOT_STARTED_PROGRESS, ORDER_DIRECTION, ORDER_MODE, REJECTION_REASON, ROOT_PARENT_ID, SCHEDULE_CORE_STATUS, SCHEDULE_EFFECT_KIND, SIR_AUTO_REJECT_REASON, STATUS, STATUS_CRITERIA, ScheduleCore, UNASSIGNED_GROUP_LABEL, UNASSIGNED_VALUE_ID, VIEW_ATTRIBUTE_KIND, VISUAL_ROW_KIND, WORK_TIME_DIRECTION, appendGroupRowId, buildGroupRowId, checkNoUpdatedLinks, computeExpectedProgress, createSchedule, expectedProgressFromBaseline, getActiveBaseline, getUnsavedActivities, isRootParent, isViewAttributeCriterion, isViewAttributeOrderRule, normalizeParentKey, parseFromBackend, willRunCriticalPath, yieldToBrowser };
25453
25572
  //# sourceMappingURL=index.js.map
25454
25573
  //# sourceMappingURL=index.js.map