92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| /*
 | |
|  * Copyright 2025 coze-dev Authors
 | |
|  *
 | |
|  * 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.
 | |
|  */
 | |
| 
 | |
| import { type StateCreator } from 'zustand';
 | |
| 
 | |
| export interface ITableDetail {
 | |
|   tableIdx: number | null;
 | |
|   tableName: string | null;
 | |
|   caption: string | null;
 | |
|   text: string | null;
 | |
|   cells: string | null;
 | |
| }
 | |
| 
 | |
| export interface IImageDetail {
 | |
|   base64: string | null;
 | |
|   caption: string | null;
 | |
|   links: string | null;
 | |
|   token: string | null;
 | |
|   name: string | null;
 | |
| }
 | |
| 
 | |
| export interface ILevelSegment {
 | |
|   id: number;
 | |
|   block_id: number | null;
 | |
|   slide_index: number | null;
 | |
|   slice_id?: string;
 | |
|   slice_sequence?: number;
 | |
|   type:
 | |
|     | 'title'
 | |
|     | 'section-title'
 | |
|     | 'section-text'
 | |
|     | 'text'
 | |
|     | 'image'
 | |
|     | 'table'
 | |
|     | 'caption'
 | |
|     | 'header-footer'
 | |
|     | 'header'
 | |
|     | 'footer'
 | |
|     | 'formula'
 | |
|     | 'footnote'
 | |
|     | 'toc'
 | |
|     | 'code'
 | |
|     | 'page-title';
 | |
|   level: number;
 | |
|   parent: number;
 | |
|   children: number[];
 | |
|   text: string;
 | |
|   label: string;
 | |
|   html_text: string;
 | |
|   positions: string | null;
 | |
|   table_detail: ITableDetail;
 | |
|   image_detail: IImageDetail;
 | |
|   file_detail: string | null;
 | |
| }
 | |
| 
 | |
| export interface ILevelSegmentsState {
 | |
|   levelSegments: ILevelSegment[];
 | |
| }
 | |
| 
 | |
| export interface ILevelSegmentsAction {
 | |
|   setLevelSegments: (segments: ILevelSegment[]) => void;
 | |
| }
 | |
| 
 | |
| export type ILevelSegmentsSlice = ILevelSegmentsState & ILevelSegmentsAction;
 | |
| 
 | |
| export const getDefaultLevelSegmentsState = () => ({
 | |
|   levelSegments: [],
 | |
| });
 | |
| 
 | |
| export const createLevelSegmentsSlice: StateCreator<
 | |
|   ILevelSegmentsSlice
 | |
| > = set => ({
 | |
|   ...getDefaultLevelSegmentsState(),
 | |
|   setLevelSegments: (content: ILevelSegment[]) =>
 | |
|     set(() => ({
 | |
|       levelSegments: content,
 | |
|     })),
 | |
| });
 |