/** * Copyright 2023-present DreamNum Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * ======================== * Basic Types / Enums * ======================== */ /** * User role in a unit (Workbook) */ export declare enum UnitRole { Reader = 0, Editor = 1, Owner = 2 } export interface ICollaboratorUser { userID: string; name: string; avatar: string; } export interface ICollaborator { /** User information */ user: ICollaboratorUser; /** Role */ role: UnitRole; } /** * Workbook-level permission point enumeration */ export declare enum WorkbookPermissionPoint { /** Edit permission */ Edit = "WorkbookEdit", /** View permission */ View = "WorkbookView", /** Print permission */ Print = "WorkbookPrint", /** Export permission */ Export = "WorkbookExport", /** Share permission */ Share = "WorkbookShare", /** Copy content permission */ CopyContent = "WorkbookCopy", /** Duplicate file permission */ DuplicateFile = "WorkbookDuplicate", /** Comment permission */ Comment = "WorkbookComment", /** Manage collaborators permission */ ManageCollaborator = "WorkbookManageCollaborator", /** Create sheet permission */ CreateSheet = "WorkbookCreateSheet", /** Delete sheet permission */ DeleteSheet = "WorkbookDeleteSheet", /** Rename sheet permission */ RenameSheet = "WorkbookRenameSheet", /** Move sheet permission */ MoveSheet = "WorkbookMoveSheet", /** Hide sheet permission */ HideSheet = "WorkbookHideSheet", /** View history permission */ ViewHistory = "WorkbookViewHistory", /** Recover history permission */ RecoverHistory = "WorkbookRecoverHistory", /** Create protection permission */ CreateProtection = "WorkbookCreateProtect", /** Insert row permission */ InsertRow = "WorkbookInsertRow", /** Insert column permission */ InsertColumn = "WorkbookInsertColumn", /** Delete row permission */ DeleteRow = "WorkbookDeleteRow", /** Delete column permission */ DeleteColumn = "WorkbookDeleteColumn", /** Copy sheet permission */ CopySheet = "WorkbookCopySheet" } /** * Worksheet-level permission point enumeration */ export declare enum WorksheetPermissionPoint { /** Edit permission */ Edit = "WorksheetEdit", /** View permission */ View = "WorksheetView", /** Copy permission */ Copy = "WorksheetCopy", /** Set cell value permission */ SetCellValue = "WorksheetSetCellValue", /** Set cell style permission */ SetCellStyle = "WorksheetSetCellStyle", /** Set row style permission */ SetRowStyle = "WorksheetSetRowStyle", /** Set column style permission */ SetColumnStyle = "WorksheetSetColumnStyle", /** Insert row permission */ InsertRow = "WorksheetInsertRow", /** Insert column permission */ InsertColumn = "WorksheetInsertColumn", /** Delete row permission */ DeleteRow = "WorksheetDeleteRow", /** Delete column permission */ DeleteColumn = "WorksheetDeleteColumn", /** Sort permission */ Sort = "WorksheetSort", /** Filter permission */ Filter = "WorksheetFilter", /** Pivot table permission */ PivotTable = "WorksheetPivotTable", /** Insert hyperlink permission */ InsertHyperlink = "WorksheetInsertHyperlink", /** Edit extra object permission */ EditExtraObject = "WorksheetEditExtraObject", /** Manage collaborators permission */ ManageCollaborator = "WorksheetManageCollaborator", /** Delete protection permission */ DeleteProtection = "WorksheetDeleteProtection", /** Select protected cells permission */ SelectProtectedCells = "WorksheetSelectProtectedCells", /** Select unprotected cells permission */ SelectUnProtectedCells = "WorksheetSelectUnProtectedCells" } /** * Range-level permission point enumeration */ export declare enum RangePermissionPoint { /** Edit permission */ Edit = "RangeEdit", /** View permission */ View = "RangeView", ManageCollaborator = "RangeManageCollaborator", Delete = "RangeDeleteProtection" } /** * Workbook permission mode */ export type WorkbookMode = 'owner' | 'editor' | 'viewer' | 'commenter'; /** * Worksheet permission mode */ export type WorksheetMode = 'editable' | 'readOnly' | 'filterOnly'; /** * Workbook permission snapshot (state of all permission points) */ export type WorkbookPermissionSnapshot = Record; /** * Worksheet permission snapshot (state of all permission points) */ export type WorksheetPermissionSnapshot = Record; /** * Range permission snapshot (state of all permission points) */ export type RangePermissionSnapshot = Record; /** * ======================== * Worksheet Protection Configuration * ======================== */ /** * Worksheet protection options configuration */ export interface IWorksheetProtectionOptions { /** * Specifies users allowed to edit this worksheet; if not specified, defaults to only the owner having edit permission. */ allowedUsers?: string[]; /** * Whether to allow others to view this range. * @default true */ allowViewByOthers?: boolean; /** Protection name for UI display */ name?: string; /** Custom metadata */ metadata?: Record; } /** * ======================== * Range Protection Configuration and Rules * ======================== */ /** * Range protection options configuration */ export interface IRangeProtectionOptions { /** * Specifies users allowed to edit this range; if not specified, defaults to only the owner having edit permission. */ allowedUsers?: string[]; /** * Whether to allow others to view this range. * @default true */ allowViewByOthers?: boolean; /** Rule name for UI display and management */ name?: string; /** Custom metadata (logs, tags, etc.) */ metadata?: Record; } /** * Worksheet permission configuration */ export interface IWorksheetPermissionConfig { /** One-time mode setting */ mode?: WorksheetMode; /** Point-level configuration patch */ points?: Partial>; /** Batch range protection configuration (optional, for simplified scenarios) */ rangeProtections?: Array<{ rangeRefs: string[]; options?: IRangeProtectionOptions; }>; }