mirror of
https://github.com/dream-num/univer.git
synced 2026-09-24 15:32:18 +08:00
refactor: replace state setter functions for consistency across components (#5275)
This commit is contained in:
@@ -112,9 +112,10 @@ class ImportCSVButtonPlugin extends Plugin {
|
||||
* The plugin should add its own module to the dependency injection system at this lifecycle.
|
||||
* It is not recommended to initialize the internal module of the plugin outside this lifecycle.
|
||||
*/
|
||||
// eslint-disable-next-line max-lines-per-function
|
||||
override onStarting() {
|
||||
// register icon component
|
||||
this.componentManager.register('FolderSingle', FolderSingle);
|
||||
this.componentManager.register('FolderSingle2', FolderSingle);
|
||||
|
||||
const buttonId = 'import-csv-button';
|
||||
|
||||
@@ -205,7 +206,7 @@ class ImportCSVButtonPlugin extends Plugin {
|
||||
id: buttonId,
|
||||
title: 'Import CSV',
|
||||
tooltip: 'Import CSV',
|
||||
icon: 'FolderSingle', // icon name
|
||||
icon: 'FolderSingle2', // icon name
|
||||
type: MenuItemType.BUTTON,
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/mockdata",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@
|
||||
"@antfu/eslint-config": "4.13.2",
|
||||
"@commitlint/cli": "^19.8.1",
|
||||
"@commitlint/config-conventional": "^19.8.1",
|
||||
"@eslint-react/eslint-plugin": "^1.49.0",
|
||||
"@eslint-react/eslint-plugin": "^1.50.0",
|
||||
"@playwright/test": "^1.52.0",
|
||||
"@release-it-plugins/workspaces": "^4.2.0",
|
||||
"@release-it/conventional-changelog": "^9.0.4",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/debugger",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uni-docs-ui",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uni-formula-ui",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uni-formula",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uni-sheets-ui",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uni-slides-ui",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@univerjs/uniui",
|
||||
"version": "0.7.0",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "",
|
||||
"author": "DreamNum <developer@univer.ai>",
|
||||
|
||||
@@ -82,7 +82,6 @@
|
||||
"kdbush": "^4.0.2",
|
||||
"lodash-es": "^4.17.21",
|
||||
"nanoid": "5.1.5",
|
||||
"numeral": "^2.0.6",
|
||||
"numfmt": "^2.5.2",
|
||||
"ot-json1": "^1.0.2",
|
||||
"rbush": "^4.0.1"
|
||||
@@ -90,7 +89,6 @@
|
||||
"devDependencies": {
|
||||
"@types/async-lock": "^1.4.2",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/numeral": "^2.0.5",
|
||||
"@types/rbush": "^4.0.0",
|
||||
"@univerjs-infra/shared": "workspace:*",
|
||||
"rxjs": "^7.8.2",
|
||||
|
||||
@@ -74,7 +74,6 @@
|
||||
"@univerjs/drawing": "workspace:*",
|
||||
"@univerjs/drawing-ui": "workspace:*",
|
||||
"@univerjs/engine-render": "workspace:*",
|
||||
"@univerjs/icons": "^0.3.24",
|
||||
"@univerjs/ui": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
|
||||
import { Disposable, ICommandService, Inject } from '@univerjs/core';
|
||||
import { AddImageSingle } from '@univerjs/icons';
|
||||
|
||||
import { ComponentManager, IMenuManagerService, IShortcutService } from '@univerjs/ui';
|
||||
import { DeleteDocDrawingsCommand } from '../commands/commands/delete-doc-drawing.command';
|
||||
@@ -33,7 +32,6 @@ import { EditDocDrawingOperation } from '../commands/operations/edit-doc-drawing
|
||||
import { SidebarDocDrawingOperation } from '../commands/operations/open-drawing-panel.operation';
|
||||
import { COMPONENT_DOC_DRAWING_PANEL } from '../views/doc-image-panel/component-name';
|
||||
import { DocDrawingPanel } from '../views/doc-image-panel/DocDrawingPanel';
|
||||
import { ImageUploadIcon } from '../views/menu/image.menu';
|
||||
import { menuSchema } from './menu.schema';
|
||||
import { DeleteDrawingsShortcutItem, MoveDrawingDownShortcutItem, MoveDrawingLeftShortcutItem, MoveDrawingRightShortcutItem, MoveDrawingUpShortcutItem } from './shortcuts/drawing.shortcut';
|
||||
|
||||
@@ -51,7 +49,6 @@ export class DocDrawingUIController extends Disposable {
|
||||
|
||||
private _initCustomComponents(): void {
|
||||
const componentManager = this._componentManager;
|
||||
this.disposeWithMe(componentManager.register(ImageUploadIcon, AddImageSingle));
|
||||
this.disposeWithMe(componentManager.register(COMPONENT_DOC_DRAWING_PANEL, DocDrawingPanel));
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import { getMenuHiddenObservable, MenuItemType } from '@univerjs/ui';
|
||||
import { Observable } from 'rxjs';
|
||||
import { InsertDocImageCommand } from '../../commands/commands/insert-image.command';
|
||||
|
||||
export const ImageUploadIcon = 'addition-and-subtraction-single';
|
||||
export const DOCS_IMAGE_MENU_ID = 'doc.menu.image';
|
||||
export const IMAGE_MENU_UPLOAD_FLOAT_ID = InsertDocImageCommand.id;
|
||||
|
||||
@@ -66,7 +65,7 @@ export function ImageMenuFactory(accessor: IAccessor): IMenuItem {
|
||||
return {
|
||||
id: DOCS_IMAGE_MENU_ID,
|
||||
type: MenuItemType.SUBITEMS,
|
||||
icon: ImageUploadIcon,
|
||||
icon: 'AddImageSingle',
|
||||
tooltip: 'docImage.title',
|
||||
disabled$: getDisableWhenSelectionInTableObservable(accessor),
|
||||
hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_DOC, undefined, DOCS_ZEN_EDITOR_UNIT_ID_KEY),
|
||||
|
||||
@@ -73,17 +73,17 @@ export function ParagraphSetting() {
|
||||
], []);
|
||||
|
||||
const currentParagraph = useCurrentParagraph();
|
||||
const [horizontalAlignValue, horizontalAlignSet] = useFirstParagraphHorizontalAlign(currentParagraph, alignmentOptions[0].value);
|
||||
const [horizontalAlignValue, setHorizontalAlign] = useFirstParagraphHorizontalAlign(currentParagraph, alignmentOptions[0].value);
|
||||
|
||||
const [indentStart, indentStartSet] = useFirstParagraphIndentStart(currentParagraph);
|
||||
const [indentEnd, indentEndSet] = useFirstParagraphIndentEnd(currentParagraph);
|
||||
const [indentFirstLine, indentFirstLineSet] = useFirstParagraphIndentFirstLine(currentParagraph);
|
||||
const [indentStart, setIndentStart] = useFirstParagraphIndentStart(currentParagraph);
|
||||
const [indentEnd, setIndentEnd] = useFirstParagraphIndentEnd(currentParagraph);
|
||||
const [indentFirstLine, setIndentFirstLine] = useFirstParagraphIndentFirstLine(currentParagraph);
|
||||
|
||||
const [hanging, hangingSet] = useFirstParagraphIndentHanging(currentParagraph);
|
||||
const [hanging, setHanging] = useFirstParagraphIndentHanging(currentParagraph);
|
||||
|
||||
const [spaceAbove, spaceAboveSet] = useFirstParagraphIndentSpaceAbove(currentParagraph);
|
||||
const [spaceBelow, spaceBelowSet] = useFirstParagraphSpaceBelow(currentParagraph);
|
||||
const { lineSpacing: [lineSpacing, lineSpacingSet], spacingRule: [spacingRule, spacingRuleSet] } = useFirstParagraphLineSpacing(currentParagraph);
|
||||
const [spaceAbove, setSpaceAbove] = useFirstParagraphIndentSpaceAbove(currentParagraph);
|
||||
const [spaceBelow, setSpaceBelow] = useFirstParagraphSpaceBelow(currentParagraph);
|
||||
const { lineSpacing: [lineSpacing, setLineSpacing], spacingRule: [spacingRule, setSpacingRule] } = useFirstParagraphLineSpacing(currentParagraph);
|
||||
|
||||
const lineSpaceConfig = useMemo(() => {
|
||||
if (spacingRule === SpacingRule.AUTO) {
|
||||
@@ -112,7 +112,7 @@ export function ParagraphSetting() {
|
||||
`, {
|
||||
'univer-bg-blend-color-dodge/90': horizontalAlignValue === item.value,
|
||||
})}
|
||||
onClick={() => horizontalAlignSet(item.value)}
|
||||
onClick={() => setHorizontalAlign(item.value)}
|
||||
>
|
||||
{item.icon}
|
||||
</span>
|
||||
@@ -128,7 +128,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.left')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentStart} onChange={(v) => indentStartSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentStart} onChange={(v) => setIndentStart(v ?? 0)} />
|
||||
</div>
|
||||
<div className="univer-flex univer-justify-between univer-item-center">
|
||||
|
||||
@@ -136,7 +136,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.right')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentEnd} onChange={(v) => indentEndSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentEnd} onChange={(v) => setIndentEnd(v ?? 0)} />
|
||||
</div>
|
||||
<div className="univer-flex univer-justify-between univer-item-center">
|
||||
|
||||
@@ -144,7 +144,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.firstLine')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentFirstLine} onChange={(v) => indentFirstLineSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={indentFirstLine} onChange={(v) => setIndentFirstLine(v ?? 0)} />
|
||||
</div>
|
||||
<div className="univer-flex univer-justify-between univer-item-center">
|
||||
|
||||
@@ -152,7 +152,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.hanging')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={hanging} onChange={(v) => hangingSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={hanging} onChange={(v) => setHanging(v ?? 0)} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="univer-t-4 univer-text-sm univer-font-medium">{localeService.t('doc.paragraphSetting.spacing')}</div>
|
||||
@@ -163,7 +163,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.before')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={spaceAbove} onChange={(v) => spaceAboveSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={spaceAbove} onChange={(v) => setSpaceAbove(v ?? 0)} />
|
||||
</div>
|
||||
<div className="univer-flex univer-justify-between univer-item-center">
|
||||
|
||||
@@ -171,7 +171,7 @@ export function ParagraphSetting() {
|
||||
{localeService.t('doc.paragraphSetting.after')}
|
||||
(px)
|
||||
</div>
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={spaceBelow} onChange={(v) => spaceBelowSet(v ?? 0)} />
|
||||
<AutoFocusInputNumber className="univer-mt-4" value={spaceBelow} onChange={(v) => setSpaceBelow(v ?? 0)} />
|
||||
</div>
|
||||
<div className="univer-flex univer-justify-between item-center">
|
||||
<div className="univer-mt-3 univer-text-xs">{localeService.t('doc.paragraphSetting.lineSpace')}</div>
|
||||
@@ -184,12 +184,12 @@ export function ParagraphSetting() {
|
||||
{ label: localeService.t('doc.paragraphSetting.multiSpace'), value: `${SpacingRule.AUTO}` },
|
||||
{ label: localeService.t('doc.paragraphSetting.fixedValue'), value: `${SpacingRule.AT_LEAST}` },
|
||||
]}
|
||||
onChange={(v) => spacingRuleSet(Number(v))}
|
||||
onChange={(v) => setSpacingRule(Number(v))}
|
||||
/>
|
||||
<AutoFocusInputNumber
|
||||
{...lineSpaceConfig}
|
||||
value={lineSpacing}
|
||||
onChange={(v) => lineSpacingSet(v ?? 0)}
|
||||
onChange={(v) => setLineSpacing(v ?? 0)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -100,134 +100,134 @@ export const useCurrentSections = (currentParagraphs: IParagraph[]) => {
|
||||
export const useFirstParagraphHorizontalAlign = (paragraph: IParagraph[], defaultValue: string) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [horizontalAlign, _horizontalAlignSet] = useState(() => {
|
||||
const [horizontalAlign, setHorizontalAlignSetInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return defaultValue;
|
||||
}
|
||||
return String(firstParagraph.paragraphStyle?.horizontalAlign ?? defaultValue);
|
||||
});
|
||||
const horizontalAlignSet = (v: string) => {
|
||||
_horizontalAlignSet(v);
|
||||
const sethorizontalAlign = (v: string) => {
|
||||
setHorizontalAlignSetInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { horizontalAlign: Number(v) },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [horizontalAlign, horizontalAlignSet] as const;
|
||||
return [horizontalAlign, sethorizontalAlign] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphIndentStart = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [indentStart, _indentStartSet] = useState(() => {
|
||||
const [indentStart, setIndentStartInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.indentStart, 0);
|
||||
});
|
||||
const indentStartSet = (v: number) => {
|
||||
_indentStartSet(v);
|
||||
const setIndentStart = (v: number) => {
|
||||
setIndentStartInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { indentStart: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [indentStart, indentStartSet] as const;
|
||||
return [indentStart, setIndentStart] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphIndentEnd = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [indentEnd, _indentEndSet] = useState(() => {
|
||||
const [indentEnd, setIndentEndInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.indentEnd, 0);
|
||||
});
|
||||
const indentEndSet = (v: number) => {
|
||||
_indentEndSet(v);
|
||||
const setIndentEnd = (v: number) => {
|
||||
setIndentEndInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { indentEnd: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [indentEnd, indentEndSet] as const;
|
||||
return [indentEnd, setIndentEnd] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphIndentFirstLine = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [indentFirstLine, _indentFirstLineSet] = useState(() => {
|
||||
const [indentFirstLine, setIndentFirstLineInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.indentFirstLine, 0);
|
||||
});
|
||||
const indentFirstLineSet = (v: number) => {
|
||||
_indentFirstLineSet(v);
|
||||
const setIndentFirstLine = (v: number) => {
|
||||
setIndentFirstLineInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { indentFirstLine: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [indentFirstLine, indentFirstLineSet] as const;
|
||||
return [indentFirstLine, setIndentFirstLine] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphIndentHanging = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [hanging, _hangingSet] = useState(() => {
|
||||
const [hanging, setHangingInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.hanging, 0);
|
||||
});
|
||||
const hangingSet = (v: number) => {
|
||||
_hangingSet(v);
|
||||
const setHanging = (v: number) => {
|
||||
setHangingInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { hanging: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [hanging, hangingSet] as const;
|
||||
return [hanging, setHanging] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphIndentSpaceAbove = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [spaceAbove, _spaceAboveSet] = useState(() => {
|
||||
const [spaceAbove, setSpaceAboveInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.spaceAbove, 0);
|
||||
});
|
||||
const spaceAboveSet = (v: number) => {
|
||||
_spaceAboveSet(v);
|
||||
const setSpaceAbove = (v: number) => {
|
||||
setSpaceAboveInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { spaceAbove: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [spaceAbove, spaceAboveSet] as const;
|
||||
return [spaceAbove, setSpaceAbove] as const;
|
||||
};
|
||||
|
||||
export const useFirstParagraphSpaceBelow = (paragraph: IParagraph[]) => {
|
||||
const commandService = useDependency(ICommandService);
|
||||
|
||||
const [spaceBelow, _spaceBelowSet] = useState(() => {
|
||||
const [spaceBelow, setSpaceBelowInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 0;
|
||||
}
|
||||
return getNumberUnitValue(firstParagraph.paragraphStyle?.spaceBelow, 0);
|
||||
});
|
||||
const spaceBelowSet = (v: number) => {
|
||||
_spaceBelowSet(v);
|
||||
const setSpaceBelow = (v: number) => {
|
||||
setSpaceBelowInternal(v);
|
||||
return commandService.executeCommand(DocParagraphSettingCommand.id, {
|
||||
paragraph: { spaceBelow: { v } },
|
||||
} as IDocParagraphSettingCommandParams);
|
||||
};
|
||||
return [spaceBelow, spaceBelowSet] as const;
|
||||
return [spaceBelow, setSpaceBelow] as const;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line max-lines-per-function
|
||||
@@ -246,7 +246,7 @@ export const useFirstParagraphLineSpacing = (paragraph: IParagraph[]) => {
|
||||
|
||||
const stateChange$ = useMemo(() => new BehaviorSubject<{ spacingRule?: SpacingRule; lineSpacing?: number }>({}), []);
|
||||
|
||||
const [lineSpacing, _lineSpacingSet] = useState(() => {
|
||||
const [lineSpacing, setLineSpacingInternal] = useState(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return 1;
|
||||
@@ -256,7 +256,7 @@ export const useFirstParagraphLineSpacing = (paragraph: IParagraph[]) => {
|
||||
|
||||
const lineSpacingCache = useRef<number>(lineSpacing);
|
||||
|
||||
const [spacingRule, _spacingRuleSet] = useState<SpacingRule>(() => {
|
||||
const [spacingRule, setSpacingRuleInternal] = useState<SpacingRule>(() => {
|
||||
const firstParagraph = paragraph[0];
|
||||
if (!firstParagraph) {
|
||||
return SpacingRule.AUTO;
|
||||
@@ -264,12 +264,12 @@ export const useFirstParagraphLineSpacing = (paragraph: IParagraph[]) => {
|
||||
return firstParagraph.paragraphStyle?.spacingRule ?? SpacingRule.AUTO;
|
||||
});
|
||||
|
||||
const lineSpacingSet = async (v: number) => {
|
||||
_lineSpacingSet(v);
|
||||
const setLineSpacing = async (v: number) => {
|
||||
setLineSpacingInternal(v);
|
||||
stateChange$.next({ lineSpacing: v, spacingRule });
|
||||
};
|
||||
|
||||
const spacingRuleSet = async (v: SpacingRule) => {
|
||||
const setSpacingRule = async (v: SpacingRule) => {
|
||||
if (v !== spacingRule) {
|
||||
let cache = lineSpacingCache.current;
|
||||
if (v === SpacingRule.AT_LEAST) {
|
||||
@@ -288,8 +288,8 @@ export const useFirstParagraphLineSpacing = (paragraph: IParagraph[]) => {
|
||||
}
|
||||
}
|
||||
lineSpacingCache.current = lineSpacing;
|
||||
lineSpacingSet(cache);
|
||||
_spacingRuleSet(v);
|
||||
setLineSpacing(cache);
|
||||
setSpacingRuleInternal(v);
|
||||
stateChange$.next({ spacingRule: v });
|
||||
}
|
||||
};
|
||||
@@ -316,8 +316,7 @@ export const useFirstParagraphLineSpacing = (paragraph: IParagraph[]) => {
|
||||
}, []);
|
||||
|
||||
return {
|
||||
lineSpacing: [lineSpacing, lineSpacingSet] as const,
|
||||
spacingRule: [spacingRule, spacingRuleSet] as const,
|
||||
|
||||
lineSpacing: [lineSpacing, setLineSpacing] as const,
|
||||
spacingRule: [spacingRule, setSpacingRule] as const,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ import type { IRichTextEditingMutationParams, ISetTextSelectionsOperationParams
|
||||
import { debounce, generateRandomId, ICommandService, LocaleService } from '@univerjs/core';
|
||||
import { RichTextEditingMutation, SetTextSelectionsOperation } from '@univerjs/docs';
|
||||
import { useDependency, useObservable } from '@univerjs/ui';
|
||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { DocParagraphSettingCommand } from '../../commands/commands/doc-paragraph-setting.command';
|
||||
import { ParagraphSetting } from './Setting';
|
||||
|
||||
@@ -34,9 +34,9 @@ export function ParagraphSettingIndex() {
|
||||
const localeService = useDependency(LocaleService);
|
||||
const currentLocale = useObservable(localeService.currentLocale$);
|
||||
|
||||
const [key, keySet] = useState('');
|
||||
const [key, setKey] = useState('');
|
||||
const debounceReset = useMemo(() => {
|
||||
return debounce(() => keySet(generateRandomId(4)), 300);
|
||||
return debounce(() => setKey(generateRandomId(4)), 300);
|
||||
}, []);
|
||||
|
||||
const rangeRef = useRef<ITextRange[]>([]);
|
||||
@@ -46,7 +46,7 @@ export function ParagraphSettingIndex() {
|
||||
if (SetTextSelectionsOperation.id === info.id) {
|
||||
const ranges = (info.params as ISetTextSelectionsOperationParams).ranges;
|
||||
if (!isRangesEqual(ranges, rangeRef.current)) {
|
||||
keySet(generateRandomId(4));
|
||||
setKey(generateRandomId(4));
|
||||
}
|
||||
rangeRef.current = ranges;
|
||||
}
|
||||
@@ -62,7 +62,7 @@ export function ParagraphSettingIndex() {
|
||||
}, [debounceReset]);
|
||||
|
||||
useEffect(() => {
|
||||
keySet(generateRandomId(4));
|
||||
setKey(generateRandomId(4));
|
||||
}, [currentLocale]);
|
||||
|
||||
useEffect(() => () => debounceReset.cancel(), [debounceReset]);
|
||||
|
||||
@@ -14,29 +14,35 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { IconProps } from '@univerjs/icons';
|
||||
import { ColorKit } from '@univerjs/core';
|
||||
import { clsx, Dropdown, ColorPicker as OriginColorPicker } from '@univerjs/design';
|
||||
import { MoreDownSingle } from '@univerjs/icons';
|
||||
import { ComponentManager, useDependency } from '@univerjs/ui';
|
||||
import { PaintBucket } from '@univerjs/icons';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
interface IColorPickerProps {
|
||||
color: string;
|
||||
onChange: (color: string) => void;
|
||||
disable?: boolean;
|
||||
iconId?: string;
|
||||
Icon?: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<SVGElement>>;
|
||||
className?: string;
|
||||
isNeedDropdownIcon?: boolean;
|
||||
};
|
||||
|
||||
export const ColorPicker = (props: IColorPickerProps) => {
|
||||
const { color, onChange, disable = false, iconId = 'PaintBucket', className, isNeedDropdownIcon = true } = props;
|
||||
const componentManager = useDependency(ComponentManager);
|
||||
const { color, onChange, disable = false, Icon = PaintBucket, className } = props;
|
||||
|
||||
const colorKit = useMemo(() => new ColorKit(color), [color]);
|
||||
const Icon = componentManager.get(iconId);
|
||||
|
||||
if (!Icon) return null;
|
||||
const renderIcon = () => {
|
||||
const iconProps = {
|
||||
className: clsx('univer-fill-primary-600', disable && className),
|
||||
extend: { colorChannel1: colorKit.isValid ? color : '' },
|
||||
};
|
||||
|
||||
return (
|
||||
<Icon {...iconProps} />
|
||||
);
|
||||
};
|
||||
|
||||
return !disable
|
||||
? (
|
||||
@@ -54,14 +60,9 @@ export const ColorPicker = (props: IColorPickerProps) => {
|
||||
hover:univer-bg-gray-100
|
||||
`, className)}
|
||||
>
|
||||
<Icon className="univer-fill-primary-600" extend={{ colorChannel1: colorKit.isValid ? color : '' }} />
|
||||
{isNeedDropdownIcon && (
|
||||
<MoreDownSingle
|
||||
className="univer-ml-1.5 univer-text-gray-400"
|
||||
/>
|
||||
)}
|
||||
{renderIcon()}
|
||||
</span>
|
||||
</Dropdown>
|
||||
)
|
||||
: <Icon className={clsx('univer-fill-primary-600', className)} extend={{ colorChannel1: colorKit.isValid ? color : '' }} />;
|
||||
: renderIcon();
|
||||
};
|
||||
|
||||
+42
-52
@@ -17,6 +17,7 @@
|
||||
import type { IHighlightCell } from '@univerjs/sheets-conditional-formatting';
|
||||
import { BooleanNumber } from '@univerjs/core';
|
||||
import { clsx } from '@univerjs/design';
|
||||
import { BoldSingle, FontColor, ItalicSingle, StrikethroughSingle, UnderlineSingle } from '@univerjs/icons';
|
||||
import { removeUndefinedAttr } from '@univerjs/sheets-conditional-formatting';
|
||||
import { ComponentManager, useDependency } from '@univerjs/ui';
|
||||
import { useEffect, useState } from 'react';
|
||||
@@ -35,52 +36,49 @@ const getBooleanFromNumber = (v: BooleanNumber) => v !== BooleanNumber.FALSE;
|
||||
export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => {
|
||||
const { style, onChange, className } = props;
|
||||
const componentManager = useDependency(ComponentManager);
|
||||
const [isBold, isBoldSet] = useState<BooleanNumber | undefined>(() => {
|
||||
const [isBold, setIsBold] = useState<BooleanNumber | undefined>(() => {
|
||||
const defaultV = undefined;
|
||||
if (!style?.bl) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.bl;
|
||||
});
|
||||
const [isItalic, isItalicSet] = useState<BooleanNumber | undefined>(() => {
|
||||
const [isItalic, setIsItalic] = useState<BooleanNumber | undefined>(() => {
|
||||
const defaultV = undefined;
|
||||
if (!style?.it) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.it;
|
||||
});
|
||||
const [isUnderline, isUnderlineSet] = useState<BooleanNumber | undefined>(() => {
|
||||
const [isUnderline, setIsUnderline] = useState<BooleanNumber | undefined>(() => {
|
||||
const defaultV = undefined;
|
||||
if (!style?.ul) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.ul.s;
|
||||
});
|
||||
const [isStrikethrough, isStrikethroughSet] = useState<BooleanNumber | undefined>(() => {
|
||||
const [isStrikethrough, setIsStrikethrough] = useState<BooleanNumber | undefined>(() => {
|
||||
const defaultV = undefined;
|
||||
if (!style?.st) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.st.s;
|
||||
});
|
||||
const [fontColor, fontColorSet] = useState(() => {
|
||||
const [fontColor, setFontColor] = useState(() => {
|
||||
const defaultV = '#2f56ef';
|
||||
if (!style?.cl?.rgb) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.cl.rgb;
|
||||
});
|
||||
const [bgColor, bgColorSet] = useState(() => {
|
||||
const [bgColor, setBgColor] = useState(() => {
|
||||
const defaultV = '#e8ecfc';
|
||||
if (!style?.bg?.rgb) {
|
||||
return defaultV;
|
||||
}
|
||||
return style.bg.rgb;
|
||||
});
|
||||
const BoldSingleIcon = componentManager.get('BoldSingle');
|
||||
const ItalicSingleIcon = componentManager.get('ItalicSingle');
|
||||
const UnderlineSingleIcon = componentManager.get('UnderlineSingle');
|
||||
const StrikethroughSingle = componentManager.get('StrikethroughSingle');
|
||||
|
||||
useEffect(() => {
|
||||
const resultStyle: IHighlightCell['style'] = {
|
||||
bl: isBold,
|
||||
@@ -105,48 +103,40 @@ export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => {
|
||||
|
||||
return (
|
||||
<div className={clsx('univer-my-2.5 univer-flex univer-justify-between', className)}>
|
||||
{BoldSingleIcon && (
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100': getBooleanFromNumber(isBold || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => isBoldSet(getAnotherBooleanNumber(isBold))}
|
||||
>
|
||||
<BoldSingleIcon />
|
||||
</div>
|
||||
)}
|
||||
{ItalicSingleIcon && (
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100': getBooleanFromNumber(isItalic || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => isItalicSet(getAnotherBooleanNumber(isItalic))}
|
||||
>
|
||||
<ItalicSingleIcon />
|
||||
</div>
|
||||
)}
|
||||
{UnderlineSingleIcon && (
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100': getBooleanFromNumber(isUnderline || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => isUnderlineSet(getAnotherBooleanNumber(isUnderline))}
|
||||
>
|
||||
<UnderlineSingleIcon />
|
||||
</div>
|
||||
)}
|
||||
{StrikethroughSingle && (
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100': getBooleanFromNumber(isStrikethrough || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => isStrikethroughSet(getAnotherBooleanNumber(isStrikethrough))}
|
||||
>
|
||||
<StrikethroughSingle />
|
||||
</div>
|
||||
)}
|
||||
<ColorPicker color={fontColor} onChange={fontColorSet} iconId="FontColor" />
|
||||
<ColorPicker color={bgColor} onChange={bgColorSet} iconId="PaintBucket" />
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100 dark:univer-bg-gray-700': getBooleanFromNumber(isBold || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => setIsBold(getAnotherBooleanNumber(isBold))}
|
||||
>
|
||||
<BoldSingle />
|
||||
</div>
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100 dark:univer-bg-gray-700': getBooleanFromNumber(isItalic || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => setIsItalic(getAnotherBooleanNumber(isItalic))}
|
||||
>
|
||||
<ItalicSingle />
|
||||
</div>
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100 dark:univer-bg-gray-700': getBooleanFromNumber(isUnderline || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => setIsUnderline(getAnotherBooleanNumber(isUnderline))}
|
||||
>
|
||||
<UnderlineSingle />
|
||||
</div>
|
||||
<div
|
||||
className={clsx(buttonItemClassName, {
|
||||
'univer-bg-gray-100 dark:univer-bg-gray-700': getBooleanFromNumber(isStrikethrough || BooleanNumber.FALSE),
|
||||
})}
|
||||
onClick={() => setIsStrikethrough(getAnotherBooleanNumber(isStrikethrough))}
|
||||
>
|
||||
<StrikethroughSingle />
|
||||
</div>
|
||||
<ColorPicker color={fontColor} onChange={setFontColor} Icon={FontColor} />
|
||||
<ColorPicker color={bgColor} onChange={setBgColor} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -22,21 +22,21 @@ import { RuleList } from './rule-list';
|
||||
interface IConditionFormattingPanelProps { rule?: IConditionFormattingRule };
|
||||
|
||||
export const ConditionFormattingPanel = (props: IConditionFormattingPanelProps) => {
|
||||
const [currentEditRule, currentEditRuleSet] = useState<IConditionFormattingRule | undefined>(props.rule);
|
||||
const [isShowRuleEditor, isShowRuleEditorSet] = useState(!!props.rule);
|
||||
const [currentEditRule, setCurrentEditRule] = useState<IConditionFormattingRule | undefined>(props.rule);
|
||||
const [isShowRuleEditor, setIsShowRuleEditor] = useState(!!props.rule);
|
||||
|
||||
const createCfRule = () => {
|
||||
isShowRuleEditorSet(true);
|
||||
setIsShowRuleEditor(true);
|
||||
};
|
||||
|
||||
const handleCancel = () => {
|
||||
isShowRuleEditorSet(false);
|
||||
currentEditRuleSet(undefined);
|
||||
setIsShowRuleEditor(false);
|
||||
setCurrentEditRule(undefined);
|
||||
};
|
||||
|
||||
const handleRuleClick = (rule: IConditionFormattingRule) => {
|
||||
currentEditRuleSet(rule);
|
||||
isShowRuleEditorSet(true);
|
||||
setCurrentEditRule(rule);
|
||||
setIsShowRuleEditor(true);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
+26
-21
@@ -33,8 +33,8 @@ const createOptionItem = (text: CFValueType, localeService: LocaleService) => ({
|
||||
const InputText = (props: { disabled?: boolean; id: string; className: string; type: CFValueType; value: string | number; onChange: (v: string | number) => void }) => {
|
||||
const { onChange, className, value, type, id, disabled = false } = props;
|
||||
const univerInstanceService = useDependency(IUniverInstanceService);
|
||||
const unitId = univerInstanceService.getCurrentUnitForType<Workbook>(UniverInstanceType.UNIVER_SHEET)!.getUnitId();
|
||||
const subUnitId = univerInstanceService.getCurrentUnitForType<Workbook>(UniverInstanceType.UNIVER_SHEET)!.getActiveSheet()?.getSheetId();
|
||||
const unitId = univerInstanceService.getCurrentUnitOfType<Workbook>(UniverInstanceType.UNIVER_SHEET)!.getUnitId();
|
||||
const subUnitId = univerInstanceService.getCurrentUnitOfType<Workbook>(UniverInstanceType.UNIVER_SHEET)!.getActiveSheet()?.getSheetId();
|
||||
|
||||
const formulaEditorRef = useRef<IFormulaEditorRef>(null);
|
||||
const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false);
|
||||
@@ -102,26 +102,31 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
const localeService = useDependency(LocaleService);
|
||||
|
||||
const rule = props.rule?.type === CFRuleType.dataBar ? props.rule : undefined;
|
||||
const [isGradient, isGradientSet] = useState(() => {
|
||||
const [isGradient, setIsGradient] = useState(() => {
|
||||
const defaultV = '0';
|
||||
if (!rule) {
|
||||
return defaultV;
|
||||
}
|
||||
return rule.config?.isGradient ? '1' : '0';
|
||||
});
|
||||
const [positiveColor, positiveColorSet] = useState(() => {
|
||||
const [positiveColor, setPositiveColor] = useState(() => {
|
||||
if (!rule) {
|
||||
return defaultDataBarPositiveColor;
|
||||
}
|
||||
return rule.config?.positiveColor || defaultDataBarPositiveColor;
|
||||
});
|
||||
const [nativeColor, nativeColorSet] = useState(() => {
|
||||
const [nativeColor, setNativeColor] = useState(() => {
|
||||
if (!rule) {
|
||||
return defaultDataBarNativeColor;
|
||||
}
|
||||
return rule.config?.nativeColor || defaultDataBarNativeColor;
|
||||
});
|
||||
const commonOptions = [createOptionItem(CFValueType.num, localeService), createOptionItem(CFValueType.percent, localeService), createOptionItem(CFValueType.percentile, localeService), createOptionItem(CFValueType.formula, localeService)];
|
||||
const commonOptions = [
|
||||
createOptionItem(CFValueType.num, localeService),
|
||||
createOptionItem(CFValueType.percent, localeService),
|
||||
createOptionItem(CFValueType.percentile, localeService),
|
||||
createOptionItem(CFValueType.formula, localeService),
|
||||
];
|
||||
const minOptions = [createOptionItem(CFValueType.min, localeService), ...commonOptions];
|
||||
const maxOptions = [createOptionItem(CFValueType.max, localeService), ...commonOptions];
|
||||
const [minValueType, setMinValueType] = useState<CFValueType>(() => {
|
||||
@@ -138,7 +143,7 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
}
|
||||
return rule.config?.max.type || defaultV;
|
||||
});
|
||||
const [minValue, minValueSet] = useState(() => {
|
||||
const [minValue, setMinValue] = useState(() => {
|
||||
const defaultV = 0;
|
||||
if (!rule) {
|
||||
return defaultV;
|
||||
@@ -203,7 +208,7 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
return dispose as () => void;
|
||||
}, [isGradient, minValue, minValueType, maxValue, maxValueType, positiveColor, nativeColor, interceptorManager, isShowValue]);
|
||||
|
||||
const _handleChange = (option: {
|
||||
const handleChange = (option: {
|
||||
minValueType: CFValueType;
|
||||
minValue: number | string;
|
||||
maxValueType: CFValueType;
|
||||
@@ -217,9 +222,9 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
};
|
||||
|
||||
const handlePositiveColorChange = (color: string) => {
|
||||
positiveColorSet(color);
|
||||
setPositiveColor(color);
|
||||
|
||||
_handleChange({
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue,
|
||||
minValueType,
|
||||
@@ -231,8 +236,8 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
});
|
||||
};
|
||||
const handleNativeColorChange = (color: string) => {
|
||||
nativeColorSet(color);
|
||||
_handleChange({
|
||||
setNativeColor(color);
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue,
|
||||
minValueType,
|
||||
@@ -286,8 +291,8 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
<RadioGroup
|
||||
value={isGradient}
|
||||
onChange={(v) => {
|
||||
isGradientSet(v as string);
|
||||
_handleChange({
|
||||
setIsGradient(v as string);
|
||||
handleChange({
|
||||
isGradient: v as string,
|
||||
minValue,
|
||||
minValueType,
|
||||
@@ -311,7 +316,7 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
checked={!isShowValue}
|
||||
onChange={(v) => {
|
||||
setIsShowValue(!v);
|
||||
_handleChange({
|
||||
handleChange({
|
||||
isGradient: v as string,
|
||||
minValue,
|
||||
minValueType,
|
||||
@@ -375,8 +380,8 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
onChange={(v) => {
|
||||
setMinValueType(v as CFValueType);
|
||||
const value = createDefaultValueByValueType(v as CFValueType, 10);
|
||||
minValueSet(value);
|
||||
_handleChange({
|
||||
setMinValue(value);
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue: value,
|
||||
minValueType: v as CFValueType,
|
||||
@@ -396,8 +401,8 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
type={minValueType}
|
||||
value={minValue}
|
||||
onChange={(v) => {
|
||||
minValueSet(v || 0);
|
||||
_handleChange({
|
||||
setMinValue(v || 0);
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue: v || 0,
|
||||
minValueType,
|
||||
@@ -427,7 +432,7 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
setMaxValueType(v as CFValueType);
|
||||
const value = createDefaultValueByValueType(v as CFValueType, 90);
|
||||
setMaxValue(value);
|
||||
_handleChange({
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue,
|
||||
minValueType,
|
||||
@@ -447,7 +452,7 @@ export const DataBarStyleEditor = (props: IStyleEditorProps) => {
|
||||
value={maxValue}
|
||||
onChange={(v) => {
|
||||
setMaxValue(v || 0);
|
||||
_handleChange({
|
||||
handleChange({
|
||||
isGradient,
|
||||
minValue,
|
||||
minValueType,
|
||||
|
||||
+9
-9
@@ -235,7 +235,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps<any, ITextHigh
|
||||
const localeService = useDependency(LocaleService);
|
||||
|
||||
const rule = props.rule?.type === CFRuleType.highlightCell ? props.rule : undefined;
|
||||
const [subType, subTypeSet] = useState<CFSubRuleType.number | CFSubRuleType.text | CFSubRuleType.timePeriod | CFSubRuleType.duplicateValues | CFSubRuleType.uniqueValues>(() => {
|
||||
const [subType, setSubType] = useState<CFSubRuleType.number | CFSubRuleType.text | CFSubRuleType.timePeriod | CFSubRuleType.duplicateValues | CFSubRuleType.uniqueValues>(() => {
|
||||
const defaultV = CFSubRuleType.text;
|
||||
if (!rule) {
|
||||
return defaultV;
|
||||
@@ -262,7 +262,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps<any, ITextHigh
|
||||
|
||||
const operatorOptions = useMemo(() => getOperatorOptions(subType, localeService), [subType]);
|
||||
|
||||
const [operator, operatorSet] = useState<IResult['operator'] | undefined>(() => {
|
||||
const [operator, setOperator] = useState<IResult['operator'] | undefined>(() => {
|
||||
const defaultV = operatorOptions ? operatorOptions[0].value as IResult['operator'] : undefined;
|
||||
if (!rule) {
|
||||
return defaultV;
|
||||
@@ -270,7 +270,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps<any, ITextHigh
|
||||
return rule.operator || defaultV;
|
||||
});
|
||||
|
||||
const [value, valueSet] = useState<IValue>(() => {
|
||||
const [value, setValue] = useState<IValue>(() => {
|
||||
const defaultV = '';
|
||||
if (!rule) {
|
||||
return defaultV;
|
||||
@@ -336,7 +336,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps<any, ITextHigh
|
||||
|
||||
useEffect(() => {
|
||||
if (!typeOptions.some((item) => item.value === subType)) {
|
||||
subTypeSet(typeOptions[0].value as CFSubRuleType.text);
|
||||
setSubType(typeOptions[0].value as CFSubRuleType.text);
|
||||
}
|
||||
}, [typeOptions]);
|
||||
|
||||
@@ -344,20 +344,20 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps<any, ITextHigh
|
||||
const _subType = v as typeof subType;
|
||||
const operatorList = getOperatorOptions(_subType, localeService);
|
||||
const _operator = operatorList && operatorList[0].value as typeof operator;
|
||||
subTypeSet(_subType);
|
||||
operatorSet(_operator);
|
||||
_operator && valueSet(createDefaultValue(_subType, _operator));
|
||||
setSubType(_subType);
|
||||
setOperator(_operator);
|
||||
_operator && setValue(createDefaultValue(_subType, _operator));
|
||||
onChange(getResult({ subType: _subType, operator: _operator }));
|
||||
};
|
||||
|
||||
const onOperatorChange = (v: string) => {
|
||||
const _operator = v as typeof operator;
|
||||
operatorSet(_operator);
|
||||
setOperator(_operator);
|
||||
onChange(getResult({ operator: _operator }));
|
||||
};
|
||||
|
||||
const onInputChange = (value: number | string | [number, number]) => {
|
||||
valueSet(value);
|
||||
setValue(value);
|
||||
onChange(getResult({ value }));
|
||||
};
|
||||
|
||||
|
||||
+14
-14
@@ -50,11 +50,11 @@ const TextInput = (props: { id: number; type: CFValueType; value: number | strin
|
||||
const subUnitId = univerInstanceService.getCurrentUnitForType<Workbook>(UniverInstanceType.UNIVER_SHEET)!.getActiveSheet()?.getSheetId();
|
||||
|
||||
const formulaEditorRef = useRef<IFormulaEditorRef>(null);
|
||||
const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false);
|
||||
const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false);
|
||||
|
||||
useSidebarClick((e: MouseEvent) => {
|
||||
const isOutSide = formulaEditorRef.current?.isClickOutSide(e);
|
||||
isOutSide && isFocusFormulaEditorSet(false);
|
||||
isOutSide && setIsFocusFormulaEditor(false);
|
||||
});
|
||||
return (
|
||||
<div className="univer-relative">
|
||||
@@ -87,7 +87,7 @@ const TextInput = (props: { id: number; type: CFValueType; value: number | strin
|
||||
const formula = v || '';
|
||||
onChange(formula);
|
||||
}}
|
||||
onFocus={() => isFocusFormulaEditorSet(true)}
|
||||
onFocus={() => setIsFocusFormulaEditor(true)}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
@@ -405,8 +405,8 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
const { interceptorManager } = props;
|
||||
const rule = props.rule?.type === CFRuleType.iconSet ? props.rule : undefined;
|
||||
const localeService = useDependency(LocaleService);
|
||||
const [errorMap, errorMapSet] = useState<Record<string, string>>({});
|
||||
const [currentIconType, currentIconTypeSet] = useState<IIconType>(() => {
|
||||
const [errorMap, setErrorMap] = useState<Record<string, string>>({});
|
||||
const [currentIconType, setCurrentIconType] = useState<IIconType>(() => {
|
||||
const defaultV = Object.keys(iconMap)[0] as IIconType;
|
||||
if (rule && rule.config.length) {
|
||||
const type = rule.config[0].iconType;
|
||||
@@ -418,7 +418,7 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
return defaultV;
|
||||
});
|
||||
|
||||
const [configList, configListSet] = useState(() => {
|
||||
const [configList, setConfigList] = useState(() => {
|
||||
if (rule && rule.config.length) {
|
||||
return Tools.deepClone(rule?.config);
|
||||
}
|
||||
@@ -438,7 +438,7 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
});
|
||||
});
|
||||
|
||||
const [isShowValue, isShowValueSet] = useState(() => {
|
||||
const [isShowValue, setIsShowValue] = useState(() => {
|
||||
if (!rule) {
|
||||
return true;
|
||||
}
|
||||
@@ -509,16 +509,16 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
const oldV = get(configList, keys);
|
||||
if (oldV !== v) {
|
||||
set(configList, keys, v);
|
||||
configListSet([...configList]);
|
||||
errorMapSet(checkResult(configList));
|
||||
setConfigList([...configList]);
|
||||
setErrorMap(checkResult(configList));
|
||||
}
|
||||
};
|
||||
const handleClickIconList = (iconType: IIconType) => {
|
||||
currentIconTypeSet(iconType);
|
||||
setCurrentIconType(iconType);
|
||||
const list = iconMap[iconType] || [];
|
||||
const config = new Array(list.length).fill('').map((_e, index, list) => createDefaultConfigItem(iconType, index, list));
|
||||
configListSet(config);
|
||||
errorMapSet(checkResult(config));
|
||||
setConfigList(config);
|
||||
setErrorMap(checkResult(config));
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
@@ -553,7 +553,7 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
item.iconId = newIcon.iconId;
|
||||
item.iconType = newIcon.iconType;
|
||||
});
|
||||
configListSet([...configList]);
|
||||
setConfigList([...configList]);
|
||||
};
|
||||
const layoutService = useDependency(ILayoutService);
|
||||
const [iconGroupListEl, setIconGroupListEl] = useState<HTMLDivElement>();
|
||||
@@ -598,7 +598,7 @@ export const IconSet = (props: IStyleEditorProps<unknown, IIconSet>) => {
|
||||
{localeService.t('sheet.cf.iconSet.reverseIconOrder')}
|
||||
</div>
|
||||
<div className="univer-ml-6 univer-flex univer-items-center univer-text-xs">
|
||||
<Checkbox checked={!isShowValue} onChange={(v) => { isShowValueSet(!v); }} />
|
||||
<Checkbox checked={!isShowValue} onChange={(v) => { setIsShowValue(!v); }} />
|
||||
{localeService.t('sheet.cf.iconSet.onlyShowIcon')}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -51,7 +51,7 @@ export const RuleEdit = (props: IRuleEditProps) => {
|
||||
const unitId = getUnitId(univerInstanceService);
|
||||
const subUnitId = getSubUnitId(univerInstanceService);
|
||||
|
||||
const [errorText, errorTextSet] = useState<string | undefined>(undefined);
|
||||
const [errorText, setErrorText] = useState<string | undefined>(undefined);
|
||||
const rangeResult = useRef<IRange[]>(props.rule?.ranges ?? []);
|
||||
|
||||
const rangeString = useMemo(() => {
|
||||
@@ -78,7 +78,7 @@ export const RuleEdit = (props: IRuleEditProps) => {
|
||||
{ label: localeService.t('sheet.cf.ruleType.iconSet'), value: '6' },
|
||||
];
|
||||
|
||||
const [ruleType, ruleTypeSet] = useState(() => {
|
||||
const [ruleType, setRuleType] = useState(() => {
|
||||
const type = props.rule?.rule.type;
|
||||
const defaultType = options[0].value;
|
||||
if (!type) {
|
||||
@@ -220,12 +220,12 @@ export const RuleEdit = (props: IRuleEditProps) => {
|
||||
const handleVerify = (v: boolean, rangeText: string) => {
|
||||
if (v) {
|
||||
if (rangeText.length < 1) {
|
||||
errorTextSet(localeService.t('sheet.cf.errorMessage.rangeError'));
|
||||
setErrorText(localeService.t('sheet.cf.errorMessage.rangeError'));
|
||||
} else {
|
||||
errorTextSet(undefined);
|
||||
setErrorText(undefined);
|
||||
}
|
||||
} else {
|
||||
errorTextSet(localeService.t('sheet.cf.errorMessage.rangeError'));
|
||||
setErrorText(localeService.t('sheet.cf.errorMessage.rangeError'));
|
||||
}
|
||||
};
|
||||
return (
|
||||
@@ -260,7 +260,7 @@ export const RuleEdit = (props: IRuleEditProps) => {
|
||||
className="univer-mt-4 univer-w-full"
|
||||
value={ruleType}
|
||||
options={options}
|
||||
onChange={(e) => ruleTypeSet(e)}
|
||||
onChange={(e) => setRuleType(e)}
|
||||
/>
|
||||
<StyleEditor
|
||||
interceptorManager={interceptorManager}
|
||||
|
||||
@@ -126,7 +126,7 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
|
||||
const subUnitId = worksheet.getSheetId();
|
||||
|
||||
const [currentRuleRanges, currentRuleRangesSet] = useState<IRange[]>([]);
|
||||
const [currentRuleRanges, setCurrentRuleRanges] = useState<IRange[]>([]);
|
||||
const [selectValue, setSelectValue] = useState('2');
|
||||
const [fetchRuleListId, setFetchRuleListId] = useState(0);
|
||||
const [draggingId, setDraggingId] = useState<number>(-1);
|
||||
@@ -159,7 +159,7 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
return [];
|
||||
};
|
||||
|
||||
const [ruleList, ruleListSet] = useState(getRuleList);
|
||||
const [ruleList, setRuleList] = useState(getRuleList);
|
||||
|
||||
useHighlightRange(currentRuleRanges);
|
||||
|
||||
@@ -173,7 +173,7 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
ruleListSet(getRuleList);
|
||||
setRuleList(getRuleList);
|
||||
}, [selectValue, fetchRuleListId, unitId, subUnitId]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -192,7 +192,7 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
});
|
||||
return () => disposable.dispose();
|
||||
}).pipe(debounceTime(16)).subscribe(() => {
|
||||
ruleListSet(getRuleList);
|
||||
setRuleList(getRuleList);
|
||||
});
|
||||
return () => {
|
||||
subscription.unsubscribe();
|
||||
@@ -387,9 +387,9 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
'univer-bg-gray-100 dark:!univer-bg-gray-700': draggingId === index,
|
||||
})}
|
||||
onMouseMove={() => {
|
||||
rule.ranges !== currentRuleRanges && currentRuleRangesSet(rule.ranges);
|
||||
rule.ranges !== currentRuleRanges && setCurrentRuleRanges(rule.ranges);
|
||||
}}
|
||||
onMouseLeave={() => currentRuleRangesSet([])}
|
||||
onMouseLeave={() => setCurrentRuleRanges([])}
|
||||
onClick={() => {
|
||||
onClick(rule);
|
||||
}}
|
||||
@@ -438,7 +438,7 @@ export const RuleList = (props: IRuleListProps) => {
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
handleDelete(rule);
|
||||
currentRuleRangesSet([]);
|
||||
setCurrentRuleRanges([]);
|
||||
}}
|
||||
>
|
||||
<DeleteSingle />
|
||||
|
||||
@@ -63,7 +63,7 @@ export function DataValidationDetail() {
|
||||
const [localRanges, setLocalRanges] = useState<IUnitRange[]>(() => localRule.ranges.map((i) => ({ unitId: '', sheetId: '', range: i })));
|
||||
const debounceExecute = useMemo(() => debounceExecuteFactory(commandService), [commandService]);
|
||||
const [isRangeError, setIsRangeError] = useState(false);
|
||||
const [isFocusRangeSelector, isFocusRangeSelectorSet] = useState(false);
|
||||
const [isFocusRangeSelector, setIsFocusRangeSelector] = useState(false);
|
||||
const rangeSelectorInstance = useRef<IRangeSelectorInstance>(null);
|
||||
const sheetSelectionService = useDependency(SheetsSelectionsService);
|
||||
|
||||
@@ -264,7 +264,7 @@ export function DataValidationDetail() {
|
||||
}
|
||||
}}
|
||||
onFocusChange={(focusing, str) => {
|
||||
isFocusRangeSelectorSet(focusing);
|
||||
setIsFocusRangeSelector(focusing);
|
||||
if (!focusing && str && rangeSelectorInstance.current?.verify()) {
|
||||
handleUpdateRuleRanges(str);
|
||||
}
|
||||
|
||||
+3
-3
@@ -25,11 +25,11 @@ export function CustomFormulaInput(props: IFormulaInputProps) {
|
||||
const { unitId, subUnitId, value, onChange, showError, validResult } = props;
|
||||
const formula1Res = showError ? validResult?.formula1 : undefined;
|
||||
const formulaEditorRef = useRef<IFormulaEditorRef>(null);
|
||||
const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false);
|
||||
const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false);
|
||||
|
||||
useSidebarClick((e: MouseEvent) => {
|
||||
const isOutSide = formulaEditorRef.current?.isClickOutSide(e);
|
||||
isOutSide && isFocusFormulaEditorSet(false);
|
||||
isOutSide && setIsFocusFormulaEditor(false);
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -60,7 +60,7 @@ export function CustomFormulaInput(props: IFormulaInputProps) {
|
||||
formula1: newFormula,
|
||||
});
|
||||
}}
|
||||
onFocus={() => isFocusFormulaEditorSet(true)}
|
||||
onFocus={() => setIsFocusFormulaEditor(true)}
|
||||
/>
|
||||
</FormLayout>
|
||||
);
|
||||
|
||||
+3
-3
@@ -321,11 +321,11 @@ export function ListFormulaInput(props: IFormulaInputProps) {
|
||||
});
|
||||
|
||||
const formulaEditorRef = useRef<IFormulaEditorRef>(null);
|
||||
const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false);
|
||||
const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false);
|
||||
|
||||
useSidebarClick((e: MouseEvent) => {
|
||||
const isOutSide = formulaEditorRef.current?.isClickOutSide(e);
|
||||
isOutSide && isFocusFormulaEditorSet(false);
|
||||
isOutSide && setIsFocusFormulaEditor(false);
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -366,7 +366,7 @@ export function ListFormulaInput(props: IFormulaInputProps) {
|
||||
subUnitId={subUnitId}
|
||||
isFocus={isFocusFormulaEditor}
|
||||
isSupportAcrossSheet
|
||||
onFocus={() => isFocusFormulaEditorSet(true)}
|
||||
onFocus={() => setIsFocusFormulaEditor(true)}
|
||||
onChange={(v = '') => {
|
||||
const str = (v ?? '').trim();
|
||||
setFormulaStrCopy(str);
|
||||
|
||||
@@ -84,7 +84,6 @@
|
||||
"@univerjs/drawing": "workspace:*",
|
||||
"@univerjs/drawing-ui": "workspace:*",
|
||||
"@univerjs/engine-render": "workspace:*",
|
||||
"@univerjs/icons": "^0.3.24",
|
||||
"@univerjs/sheets": "workspace:*",
|
||||
"@univerjs/sheets-drawing": "workspace:*",
|
||||
"@univerjs/sheets-ui": "workspace:*",
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
import { Disposable, ICommandService, Inject } from '@univerjs/core';
|
||||
import { IDrawingManagerService } from '@univerjs/drawing';
|
||||
|
||||
import { AddImageSingle } from '@univerjs/icons';
|
||||
import { SheetsSelectionsService } from '@univerjs/sheets';
|
||||
import { ComponentManager, IMenuManagerService, IShortcutService } from '@univerjs/ui';
|
||||
import { DeleteDrawingsCommand } from '../commands/commands/delete-drawings.command';
|
||||
@@ -33,7 +32,6 @@ import { UngroupSheetDrawingCommand } from '../commands/commands/ungroup-sheet-d
|
||||
import { ClearSheetDrawingTransformerOperation } from '../commands/operations/clear-drawing-transformer.operation';
|
||||
import { EditSheetDrawingOperation } from '../commands/operations/edit-sheet-drawing.operation';
|
||||
import { SidebarSheetDrawingOperation } from '../commands/operations/open-drawing-panel.operation';
|
||||
import { IMAGE_UPLOAD_ICON } from '../views/menu/image.menu';
|
||||
import { COMPONENT_SHEET_DRAWING_PANEL } from '../views/sheet-image-panel/component-name';
|
||||
import { SheetDrawingPanel } from '../views/sheet-image-panel/SheetDrawingPanel';
|
||||
import { menuSchema } from './menu.schema';
|
||||
@@ -55,7 +53,6 @@ export class SheetDrawingUIController extends Disposable {
|
||||
|
||||
private _initCustomComponents(): void {
|
||||
const componentManager = this._componentManager;
|
||||
this.disposeWithMe(componentManager.register(IMAGE_UPLOAD_ICON, AddImageSingle));
|
||||
this.disposeWithMe(componentManager.register(COMPONENT_SHEET_DRAWING_PANEL, SheetDrawingPanel));
|
||||
}
|
||||
|
||||
|
||||
@@ -22,14 +22,13 @@ import { getCurrentRangeDisable$ } from '@univerjs/sheets-ui';
|
||||
import { getMenuHiddenObservable, MenuItemType } from '@univerjs/ui';
|
||||
import { InsertCellImageCommand, InsertFloatImageCommand } from '../../commands/commands/insert-image.command';
|
||||
|
||||
export const IMAGE_UPLOAD_ICON = 'addition-and-subtraction-single';
|
||||
export const SHEETS_IMAGE_MENU_ID = 'sheet.menu.image';
|
||||
|
||||
export function ImageMenuFactory(accessor: IAccessor): IMenuItem {
|
||||
return {
|
||||
id: SHEETS_IMAGE_MENU_ID,
|
||||
type: MenuItemType.SUBITEMS,
|
||||
icon: IMAGE_UPLOAD_ICON,
|
||||
icon: 'AddImageSingle',
|
||||
tooltip: 'sheetImage.title',
|
||||
hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET),
|
||||
disabled$: getCurrentRangeDisable$(accessor, { workbookTypes: [WorkbookEditablePermission], worksheetTypes: [WorksheetEditPermission], rangeTypes: [RangeProtectionPermissionEditPoint] }),
|
||||
|
||||
@@ -27,17 +27,17 @@ export const useFormulaDescribe = (isNeed: boolean, formulaText: string, editor?
|
||||
const descriptionService = useDependency(IDescriptionService);
|
||||
const lexerTreeBuilder = useDependency(LexerTreeBuilder);
|
||||
|
||||
const [functionInfo, functionInfoSet] = useState<IFunctionInfo | undefined>();
|
||||
const [paramIndex, paramIndexSet] = useState<number>(-1);
|
||||
const [isShow, isShowSet] = useState(true);
|
||||
const [functionInfo, setFunctionInfo] = useState<IFunctionInfo | undefined>();
|
||||
const [paramIndex, setParamIndex] = useState<number>(-1);
|
||||
const [isShow, setIsShow] = useState(true);
|
||||
const isShowRef = useStateRef(isShow);
|
||||
|
||||
const formulaTextRef = useRef(formulaText);
|
||||
formulaTextRef.current = formulaText;
|
||||
const reset = () => {
|
||||
functionInfoSet(undefined);
|
||||
paramIndexSet(-1);
|
||||
isShowSet(false);
|
||||
setFunctionInfo(undefined);
|
||||
setParamIndex(-1);
|
||||
setIsShow(false);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
@@ -51,14 +51,14 @@ export const useFormulaDescribe = (isNeed: boolean, formulaText: string, editor?
|
||||
if (res) {
|
||||
const { functionName, paramIndex } = res;
|
||||
const info = descriptionService.getFunctionInfo(functionName);
|
||||
functionInfoSet(info);
|
||||
paramIndexSet(paramIndex);
|
||||
setFunctionInfo(info);
|
||||
setParamIndex(paramIndex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
functionInfoSet(undefined);
|
||||
paramIndexSet(-1);
|
||||
setFunctionInfo(undefined);
|
||||
setParamIndex(-1);
|
||||
});
|
||||
const d2 = editor.selectionChange$.pipe(
|
||||
filter((e) => e.isEditing),
|
||||
@@ -66,7 +66,7 @@ export const useFormulaDescribe = (isNeed: boolean, formulaText: string, editor?
|
||||
map((e) => e.textRanges[0].startOffset),
|
||||
distinctUntilChanged()
|
||||
).subscribe(() => {
|
||||
isShowSet(true);
|
||||
setIsShow(true);
|
||||
});
|
||||
return () => {
|
||||
d.unsubscribe();
|
||||
|
||||
@@ -29,14 +29,14 @@ import { useStateRef } from '../hooks/use-state-ref';
|
||||
export const useFormulaSearch = (isNeed: boolean, nodes: INode[] = [], editor?: Editor) => {
|
||||
const descriptionService = useDependency(IDescriptionService);
|
||||
|
||||
const [searchList, searchListSet] = useState<ISearchItem[]>([]);
|
||||
const [searchText, searchTextSet] = useState<string>('');
|
||||
const [searchList, setSearchList] = useState<ISearchItem[]>([]);
|
||||
const [searchText, setSearchText] = useState<string>('');
|
||||
const indexRef = useRef(-1);
|
||||
const stateRef = useStateRef({ nodes });
|
||||
|
||||
const reset = () => {
|
||||
searchListSet([]);
|
||||
searchTextSet('');
|
||||
setSearchList([]);
|
||||
setSearchText('');
|
||||
indexRef.current = -1;
|
||||
};
|
||||
|
||||
@@ -56,15 +56,15 @@ export const useFormulaSearch = (isNeed: boolean, nodes: INode[] = [], editor?:
|
||||
indexRef.current = currentNodeIndex;
|
||||
const token = currentNode.token;
|
||||
const list = descriptionService.getSearchListByNameFirstLetter(token);
|
||||
searchListSet(list);
|
||||
searchTextSet(token);
|
||||
setSearchList(list);
|
||||
setSearchText(token);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
indexRef.current = -1;
|
||||
searchTextSet('');
|
||||
searchListSet((pre) => {
|
||||
setSearchText('');
|
||||
setSearchList((pre) => {
|
||||
if (!pre?.length) {
|
||||
return pre;
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ export const FormulaEditor = forwardRef((props: IFormulaEditorProps, ref: Ref<IF
|
||||
const searchFunctionRef = useRef<HTMLElement>(null);
|
||||
const editorRef = useRef<Editor>(undefined);
|
||||
const editor = editorRef.current;
|
||||
const [isFocus, isFocusSet] = useState(_isFocus);
|
||||
const [isFocus, setIsFocus] = useState(_isFocus);
|
||||
const formulaEditorContainerRef = useRef(null);
|
||||
const editorId = useMemo(() => propEditorId ?? createInternalEditorID(`${EMBEDDING_FORMULA_EDITOR}-${generateRandomId(4)}`), []);
|
||||
const isError = useMemo(() => errorText !== undefined, [errorText]);
|
||||
@@ -239,14 +239,14 @@ export const FormulaEditor = forwardRef((props: IFormulaEditorProps, ref: Ref<IF
|
||||
|
||||
useLayoutEffect(() => {
|
||||
if (_isFocus) {
|
||||
isFocusSet(_isFocus);
|
||||
setIsFocus(_isFocus);
|
||||
focus();
|
||||
} else {
|
||||
if (resetSelectionOnBlur) {
|
||||
editor?.blur();
|
||||
resetSelection();
|
||||
}
|
||||
isFocusSet(_isFocus);
|
||||
setIsFocus(_isFocus);
|
||||
}
|
||||
}, [_isFocus, editor, focus, resetSelection, resetSelectionOnBlur]);
|
||||
|
||||
@@ -285,7 +285,7 @@ export const FormulaEditor = forwardRef((props: IFormulaEditorProps, ref: Ref<IF
|
||||
editor,
|
||||
handleSelectionChange
|
||||
);
|
||||
useSwitchSheet(isFocus && Boolean(isSelecting && docFocusing), unitId, isSupportAcrossSheet, isFocusSet, onBlur, () => {
|
||||
useSwitchSheet(isFocus && Boolean(isSelecting && docFocusing), unitId, isSupportAcrossSheet, setIsFocus, onBlur, () => {
|
||||
highlight(formulaTextRef.current, false, true);
|
||||
});
|
||||
|
||||
@@ -307,7 +307,7 @@ export const FormulaEditor = forwardRef((props: IFormulaEditorProps, ref: Ref<IF
|
||||
};
|
||||
|
||||
const handleMouseUp = () => {
|
||||
isFocusSet(true);
|
||||
setIsFocus(true);
|
||||
onFocus();
|
||||
focus();
|
||||
};
|
||||
|
||||
+5
-5
@@ -46,7 +46,7 @@ function SearchFunctionFactory(props: ISearchFunctionProps, ref: any) {
|
||||
const { searchList, searchText, handlerFormulaReplace, reset: resetFormulaSearch } = useFormulaSearch(isFocus, sequenceNodes, editor);
|
||||
const visible = useMemo(() => !!searchList.length, [searchList]);
|
||||
const ulRef = useRef<HTMLUListElement>(undefined);
|
||||
const [active, activeSet] = useState(0);
|
||||
const [active, setActive] = useState(0);
|
||||
const isEnableMouseEnterOrOut = useRef(false);
|
||||
const [position$] = useEditorPosition(editorId, visible, [searchText, searchList]);
|
||||
const stateRef = useStateRef({ searchList, active });
|
||||
@@ -63,14 +63,14 @@ function SearchFunctionFactory(props: ISearchFunctionProps, ref: any) {
|
||||
if (!isEnableMouseEnterOrOut.current) {
|
||||
return;
|
||||
}
|
||||
activeSet(index);
|
||||
setActive(index);
|
||||
}
|
||||
|
||||
function handleLiMouseLeave() {
|
||||
if (!isEnableMouseEnterOrOut.current) {
|
||||
return;
|
||||
}
|
||||
activeSet(-1);
|
||||
setActive(-1);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
@@ -85,7 +85,7 @@ function SearchFunctionFactory(props: ISearchFunctionProps, ref: any) {
|
||||
|
||||
switch (keycode) {
|
||||
case KeyCode.ARROW_UP: {
|
||||
activeSet((pre) => {
|
||||
setActive((pre) => {
|
||||
const res = Math.max(0, pre - 1);
|
||||
scrollToVisible(res);
|
||||
return res;
|
||||
@@ -94,7 +94,7 @@ function SearchFunctionFactory(props: ISearchFunctionProps, ref: any) {
|
||||
break;
|
||||
}
|
||||
case KeyCode.ARROW_DOWN: {
|
||||
activeSet((pre) => {
|
||||
setActive((pre) => {
|
||||
const res = Math.min(searchList.length - 1, pre + 1);
|
||||
scrollToVisible(res);
|
||||
return res;
|
||||
|
||||
@@ -33,7 +33,7 @@ export const AccountingPanel: FC<IBusinessComponentProps> = (props) => {
|
||||
|
||||
const [decimal, setDecimal] = useState(() => getDecimalFromPattern(defaultPattern || '', 2));
|
||||
const userHabitCurrency = useContext(UserHabitCurrencyContext);
|
||||
const [suffix, suffixSet] = useState(() => getCurrencyType(defaultPattern) || userHabitCurrency[0]);
|
||||
const [suffix, setSuffix] = useState(() => getCurrencyType(defaultPattern) || userHabitCurrency[0]);
|
||||
const options = useMemo(() => userHabitCurrency.map((key) => ({ label: key, value: key })), []);
|
||||
|
||||
const localeService = useDependency(LocaleService);
|
||||
@@ -42,7 +42,7 @@ export const AccountingPanel: FC<IBusinessComponentProps> = (props) => {
|
||||
action.current = () => setPatternDecimal(`_("${suffix}"* #,##0${decimal > 0 ? '.0' : ''}_)`, decimal);
|
||||
|
||||
const handleSelect = (v: string) => {
|
||||
suffixSet(v);
|
||||
setSuffix(v);
|
||||
onChange(setPatternDecimal(`_("${v}"* #,##0${decimal > 0 ? '.0' : ''}_)`, decimal));
|
||||
};
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ export const CurrencyPanel: FC<IBusinessComponentProps> = (props) => {
|
||||
const localeService = useDependency(LocaleService);
|
||||
const t = localeService.t;
|
||||
const userHabitCurrency = useContext(UserHabitCurrencyContext);
|
||||
const [suffix, suffixSet] = useState(() => getCurrencyType(props.defaultPattern) || userHabitCurrency[0]);
|
||||
const [decimal, decimalSet] = useState(() => getDecimalFromPattern(props.defaultPattern || '', 2));
|
||||
const [pattern, patternSet] = useState(() => {
|
||||
const [suffix, setSuffix] = useState(() => getCurrencyType(props.defaultPattern) || userHabitCurrency[0]);
|
||||
const [decimal, setDecimal] = useState(() => getDecimalFromPattern(props.defaultPattern || '', 2));
|
||||
const [pattern, setPattern] = useState(() => {
|
||||
const negativeOptions = getCurrencyFormatOptions(suffix);
|
||||
const pattern =
|
||||
negativeOptions.find((item) => isPatternEqualWithoutDecimal(item.value, props.defaultPattern))?.value ||
|
||||
@@ -51,9 +51,9 @@ export const CurrencyPanel: FC<IBusinessComponentProps> = (props) => {
|
||||
if (value === undefined) {
|
||||
return;
|
||||
}
|
||||
suffixSet(value);
|
||||
setSuffix(value);
|
||||
const pattern = getCurrencyFormatOptions(value)[0].value;
|
||||
patternSet(pattern);
|
||||
setPattern(pattern);
|
||||
props.onChange(setPatternDecimal(pattern, decimal));
|
||||
};
|
||||
|
||||
@@ -61,12 +61,12 @@ export const CurrencyPanel: FC<IBusinessComponentProps> = (props) => {
|
||||
if (value === undefined) {
|
||||
return;
|
||||
}
|
||||
patternSet(value);
|
||||
setPattern(value);
|
||||
props.onChange(setPatternDecimal(value, decimal));
|
||||
};
|
||||
|
||||
const onDecimalChange = (v: number | null) => {
|
||||
decimalSet(v || 0);
|
||||
setDecimal(v || 0);
|
||||
props.onChange(setPatternDecimal(pattern, v || 0));
|
||||
};
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ export function CustomFormat(props: IBusinessComponentProps) {
|
||||
const localStorageService = useDependency(ILocalStorageService);
|
||||
const localeService = useDependency(LocaleService);
|
||||
|
||||
const [pattern, patternSet] = useState(defaultPattern);
|
||||
const [pattern, setPattern] = useState(defaultPattern);
|
||||
action.current = () => {
|
||||
userHabitController.markHabit(key, pattern);
|
||||
localStorageService.getItem<string[]>(historyPatternKey).then((list = []) => {
|
||||
@@ -41,7 +41,7 @@ export function CustomFormat(props: IBusinessComponentProps) {
|
||||
});
|
||||
return pattern;
|
||||
};
|
||||
const [options, optionsSet] = useState<(string | number)[]>([]);
|
||||
const [options, setOptions] = useState<(string | number)[]>([]);
|
||||
|
||||
useEffect(() => {
|
||||
localStorageService.getItem<string[]>(historyPatternKey).then((historyList) => {
|
||||
@@ -53,14 +53,14 @@ export function CustomFormat(props: IBusinessComponentProps) {
|
||||
list.push(...(historyList || []));
|
||||
userHabitController.addHabit(key, []).finally(() => {
|
||||
userHabitController.getHabit(key, list).then((list) => {
|
||||
optionsSet([...new Set(list)]);
|
||||
setOptions([...new Set(list)]);
|
||||
});
|
||||
});
|
||||
});
|
||||
}, []);
|
||||
|
||||
const handleClick = (p: string) => {
|
||||
patternSet(p);
|
||||
setPattern(p);
|
||||
onChange(p);
|
||||
};
|
||||
|
||||
@@ -75,7 +75,7 @@ export function CustomFormat(props: IBusinessComponentProps) {
|
||||
placeholder={localeService.t('sheet.numfmt.customFormat')}
|
||||
onBlur={handleBlur}
|
||||
value={pattern}
|
||||
onChange={patternSet}
|
||||
onChange={setPattern}
|
||||
className="univer-mt-2 univer-w-full"
|
||||
/>
|
||||
<div
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { FC } from 'react';
|
||||
import type { IBusinessComponentProps } from './interface';
|
||||
import { LocaleService, numfmt } from '@univerjs/core';
|
||||
import { SelectList } from '@univerjs/design';
|
||||
@@ -31,13 +30,15 @@ export const isDatePanel = (pattern: string) => {
|
||||
);
|
||||
};
|
||||
|
||||
export const DatePanel: FC<IBusinessComponentProps> = (props) => {
|
||||
export function DatePanel(props: IBusinessComponentProps) {
|
||||
const { onChange, defaultPattern } = props;
|
||||
|
||||
const options = useMemo(getDateFormatOptions, []);
|
||||
const localeService = useDependency(LocaleService);
|
||||
const t = localeService.t;
|
||||
const [suffix, suffixSet] = useState(() => {
|
||||
if (props.defaultPattern) {
|
||||
const item = options.find((item) => item.value === props.defaultPattern);
|
||||
|
||||
const [suffix, setSuffix] = useState(() => {
|
||||
if (defaultPattern) {
|
||||
const item = options.find((item) => item.value === defaultPattern);
|
||||
if (item) {
|
||||
return item.value;
|
||||
}
|
||||
@@ -45,21 +46,22 @@ export const DatePanel: FC<IBusinessComponentProps> = (props) => {
|
||||
return options[0].value;
|
||||
});
|
||||
|
||||
// FIXME: WTF??
|
||||
props.action.current = () => suffix;
|
||||
|
||||
const onChange = (v: any) => {
|
||||
const handleChange = (v: any) => {
|
||||
if (v === undefined) {
|
||||
return;
|
||||
}
|
||||
suffixSet(v);
|
||||
props.onChange(v);
|
||||
setSuffix(v);
|
||||
onChange(v);
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="univer-mt-4 univer-text-sm univer-text-gray-400">{t('sheet.numfmt.dateType')}</div>
|
||||
<div className="univer-mt-4 univer-text-sm univer-text-gray-400">{localeService.t('sheet.numfmt.dateType')}</div>
|
||||
<div className="univer-mt-2">
|
||||
<SelectList value={suffix} options={options} onChange={onChange} />
|
||||
<SelectList value={suffix} options={options} onChange={handleChange} />
|
||||
</div>
|
||||
<div
|
||||
className={`
|
||||
@@ -67,7 +69,7 @@ export const DatePanel: FC<IBusinessComponentProps> = (props) => {
|
||||
dark:!univer-text-gray-200
|
||||
`}
|
||||
>
|
||||
{t('sheet.numfmt.dateDes')}
|
||||
{localeService.t('sheet.numfmt.dateDes')}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -29,9 +29,9 @@ export const ThousandthPercentilePanel: FC<IBusinessComponentProps> = (props) =>
|
||||
const localeService = useDependency(LocaleService);
|
||||
|
||||
const options = useMemo(getNumberFormatOptions, []);
|
||||
const [decimal, decimalSet] = useState(() => getDecimalFromPattern(props.defaultPattern || '', 0));
|
||||
const [decimal, setDecimal] = useState(() => getDecimalFromPattern(props.defaultPattern || '', 0));
|
||||
|
||||
const [suffix, suffixSet] = useState(() => {
|
||||
const [suffix, setSuffix] = useState(() => {
|
||||
const item = options.find((item) => isPatternEqualWithoutDecimal(item.value, props.defaultPattern || ''));
|
||||
return item?.value || options[0].value;
|
||||
});
|
||||
@@ -41,15 +41,15 @@ export const ThousandthPercentilePanel: FC<IBusinessComponentProps> = (props) =>
|
||||
const isInputDisable = useMemo(() => !isPatternHasDecimal(suffix), [suffix]);
|
||||
|
||||
const handleDecimalChange = (decimal: number | null) => {
|
||||
decimalSet(decimal || 0);
|
||||
setDecimal(decimal || 0);
|
||||
props.onChange(setPatternDecimal(suffix, Number(decimal || 0)));
|
||||
};
|
||||
const handleClick = (v: any) => {
|
||||
if (v === undefined) {
|
||||
return;
|
||||
}
|
||||
decimalSet(getDecimalFromPattern(v, 0));
|
||||
suffixSet(v);
|
||||
setDecimal(getDecimalFromPattern(v, 0));
|
||||
setSuffix(v);
|
||||
props.onChange(v);
|
||||
};
|
||||
|
||||
|
||||
@@ -22,12 +22,12 @@ import { UserHabitController } from '../../controllers/user-habit.controller';
|
||||
const key = 'numfmtCurrency';
|
||||
export const useCurrencyOptions = (onOptionChange?: (options: string[]) => void) => {
|
||||
const userHabitController = useDependency(UserHabitController);
|
||||
const [options, optionsSet] = useState(currencySymbols);
|
||||
const [options, setOptions] = useState(currencySymbols);
|
||||
|
||||
useEffect(() => {
|
||||
userHabitController.addHabit('numfmtCurrency', []).then(() => {
|
||||
userHabitController.getHabit(key, [...currencySymbols]).then((list) => {
|
||||
optionsSet(list as string[]);
|
||||
setOptions(list as string[]);
|
||||
onOptionChange && onOptionChange(list as string[]);
|
||||
});
|
||||
});
|
||||
@@ -36,5 +36,6 @@ export const useCurrencyOptions = (onOptionChange?: (options: string[]) => void)
|
||||
const mark = (v: string) => {
|
||||
userHabitController.markHabit(key, v);
|
||||
};
|
||||
|
||||
return { userHabitCurrency: options, mark };
|
||||
};
|
||||
|
||||
@@ -197,11 +197,11 @@ export const DefinedNameInput = (props: IDefinedNameInputProps) => {
|
||||
};
|
||||
|
||||
const formulaEditorRef = useRef<any>(null);
|
||||
const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false);
|
||||
const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false);
|
||||
|
||||
useSidebarClick((e: MouseEvent) => {
|
||||
const isOutSide = formulaEditorRef.current?.isClickOutSide(e);
|
||||
isOutSide && isFocusFormulaEditorSet(false);
|
||||
isOutSide && setIsFocusFormulaEditor(false);
|
||||
});
|
||||
|
||||
return (
|
||||
@@ -262,7 +262,7 @@ export const DefinedNameInput = (props: IDefinedNameInputProps) => {
|
||||
onVerify={(res: boolean) => {
|
||||
setValidFormulaOrRange(res);
|
||||
}}
|
||||
onFocus={() => isFocusFormulaEditorSet(true)}
|
||||
onFocus={() => setIsFocusFormulaEditor(true)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,7 @@ export const SheetPermissionPanelList = () => {
|
||||
const permissionService = useDependency(IPermissionService);
|
||||
const usesManagerService = useDependency(UserManagerService);
|
||||
const currentUser = usesManagerService.getCurrentUser();
|
||||
const [currentRuleRanges, currentRuleRangesSet] = useState<IRange[]>([]);
|
||||
const [currentRuleRanges, setCurrentRuleRanges] = useState<IRange[]>([]);
|
||||
const sheetPermissionUserManagerService = useDependency(SheetPermissionUserManagerService);
|
||||
|
||||
const _sheetRuleRefresh = useObservable(worksheetProtectionModel.ruleRefresh$, '');
|
||||
@@ -151,7 +151,7 @@ export const SheetPermissionPanelList = () => {
|
||||
if (res) {
|
||||
setForceUpdateFlag(!forceUpdateFlag);
|
||||
if ((rule as IRangeProtectionRule).ranges === currentRuleRanges) {
|
||||
currentRuleRangesSet([]);
|
||||
setCurrentRuleRanges([]);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -278,13 +278,13 @@ export const SheetPermissionPanelList = () => {
|
||||
}
|
||||
if (unitType === UnitObject.SelectRange) {
|
||||
const ranges = (rule as IRangeProtectionRule).ranges || [];
|
||||
ranges !== currentRuleRanges && currentRuleRangesSet(ranges);
|
||||
ranges !== currentRuleRanges && setCurrentRuleRanges(ranges);
|
||||
} else if (unitType === UnitObject.Worksheet) {
|
||||
const ranges = [{ startRow: 0, endRow: activeSheet.getRowCount() - 1, startColumn: 0, endColumn: activeSheet.getColumnCount() - 1 }];
|
||||
ranges !== currentRuleRanges && currentRuleRangesSet(ranges);
|
||||
ranges !== currentRuleRanges && setCurrentRuleRanges(ranges);
|
||||
}
|
||||
}}
|
||||
onMouseLeave={() => currentRuleRangesSet([])}
|
||||
onMouseLeave={() => setCurrentRuleRanges([])}
|
||||
>
|
||||
<div className="univer-flex univer-h-5 univer-justify-between univer-leading-5">
|
||||
<Tooltip title={ruleName}>
|
||||
|
||||
@@ -20,14 +20,13 @@ import { UniverInstanceType } from '@univerjs/core';
|
||||
import { getMenuHiddenObservable, MenuItemType } from '@univerjs/ui';
|
||||
import { InsertSlideFloatImageCommand } from '../commands/operations/insert-image.operation';
|
||||
|
||||
export const IMAGE_UPLOAD_ICON = 'addition-and-subtraction-single';
|
||||
export const SLIDES_IMAGE_MENU_ID = 'slide.menu.image';
|
||||
|
||||
export function SlideImageMenuFactory(accessor: IAccessor): IMenuItem {
|
||||
return {
|
||||
id: SLIDES_IMAGE_MENU_ID,
|
||||
type: MenuItemType.SUBITEMS,
|
||||
icon: IMAGE_UPLOAD_ICON,
|
||||
icon: 'AddImageSingle',
|
||||
tooltip: 'slide.image.insert.title',
|
||||
hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SLIDE),
|
||||
};
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import { Disposable, ICommandService, Inject, Injector } from '@univerjs/core';
|
||||
import { AddImageSingle, GraphSingle, TextSingle } from '@univerjs/icons';
|
||||
import { GraphSingle, TextSingle } from '@univerjs/icons';
|
||||
import { BuiltInUIPart, ComponentManager, connectInjector, IMenuManagerService, IShortcutService, IUIPartsService } from '@univerjs/ui';
|
||||
import { ActivateSlidePageOperation } from '../commands/operations/activate.operation';
|
||||
import { AppendSlideOperation } from '../commands/operations/append-slide.operation';
|
||||
@@ -31,7 +31,6 @@ import { SlideImagePopupMenu } from '../components/image-popup-menu/ImagePopupMe
|
||||
import Sidebar, { COMPONENT_SLIDE_SIDEBAR } from '../components/sidebar/Sidebar';
|
||||
import { SlideSideBar } from '../components/slide-bar/SlideBar';
|
||||
import { SlideEditorContainer } from '../views/editor-container';
|
||||
import { IMAGE_UPLOAD_ICON } from './image.menu';
|
||||
import { menuSchema } from './menu.schema';
|
||||
import { GRAPH_SINGLE_ICON } from './shape.menu';
|
||||
import { EditorDeleteLeftShortcut, generateArrowSelectionShortCutItem } from './shortcuts/editor.shortcuts';
|
||||
@@ -64,7 +63,6 @@ export class SlidesUIController extends Disposable {
|
||||
|
||||
private _initCustomComponents(): void {
|
||||
const componentManager = this._componentManager;
|
||||
this.disposeWithMe(componentManager.register(IMAGE_UPLOAD_ICON, AddImageSingle));
|
||||
this.disposeWithMe(componentManager.register(TEXT_ICON_ID, TextSingle));
|
||||
this.disposeWithMe(componentManager.register(GRAPH_SINGLE_ICON, GraphSingle));
|
||||
this.disposeWithMe(componentManager.register(COMPONENT_SLIDE_IMAGE_POPUP_MENU, SlideImagePopupMenu));
|
||||
|
||||
@@ -21,6 +21,7 @@ import { toDisposable } from '@univerjs/core';
|
||||
|
||||
import {
|
||||
AddDigitsSingle,
|
||||
AddImageSingle,
|
||||
AdjustHeight,
|
||||
AdjustWidth,
|
||||
AlignBottomSingle,
|
||||
@@ -154,6 +155,7 @@ export class ComponentManager {
|
||||
// eslint-disable-next-line max-lines-per-function
|
||||
constructor() {
|
||||
const iconList: Record<string, React.ForwardRefExoticComponent<any>> = {
|
||||
AddImageSingle,
|
||||
AlignBottomSingle,
|
||||
AlignTopSingle,
|
||||
AllBorderSingle,
|
||||
|
||||
Generated
+160
-263
@@ -16,7 +16,7 @@ importers:
|
||||
devDependencies:
|
||||
'@antfu/eslint-config':
|
||||
specifier: 4.13.2
|
||||
version: 4.13.2(@eslint-react/eslint-plugin@1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@vue/compiler-sfc@3.5.14)(eslint-plugin-format@1.0.1(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(happy-dom@17.4.7)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))
|
||||
version: 4.13.2(@eslint-react/eslint-plugin@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@vue/compiler-sfc@3.5.14)(eslint-plugin-format@1.0.1(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(happy-dom@17.4.7)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))
|
||||
'@commitlint/cli':
|
||||
specifier: ^19.8.1
|
||||
version: 19.8.1(@types/node@22.15.21)(typescript@5.8.3)
|
||||
@@ -24,8 +24,8 @@ importers:
|
||||
specifier: ^19.8.1
|
||||
version: 19.8.1
|
||||
'@eslint-react/eslint-plugin':
|
||||
specifier: ^1.49.0
|
||||
version: 1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
specifier: ^1.50.0
|
||||
version: 1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
'@playwright/test':
|
||||
specifier: ^1.52.0
|
||||
version: 1.52.0
|
||||
@@ -1121,9 +1121,6 @@ importers:
|
||||
nanoid:
|
||||
specifier: 5.1.5
|
||||
version: 5.1.5
|
||||
numeral:
|
||||
specifier: ^2.0.6
|
||||
version: 2.0.6
|
||||
numfmt:
|
||||
specifier: ^2.5.2
|
||||
version: 2.5.2
|
||||
@@ -1140,9 +1137,6 @@ importers:
|
||||
'@types/lodash-es':
|
||||
specifier: ^4.17.12
|
||||
version: 4.17.12
|
||||
'@types/numeral':
|
||||
specifier: ^2.0.5
|
||||
version: 2.0.5
|
||||
'@types/rbush':
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
@@ -1369,9 +1363,6 @@ importers:
|
||||
'@univerjs/engine-render':
|
||||
specifier: workspace:*
|
||||
version: link:../engine-render
|
||||
'@univerjs/icons':
|
||||
specifier: ^0.3.24
|
||||
version: 0.3.24(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
'@univerjs/ui':
|
||||
specifier: workspace:*
|
||||
version: link:../ui
|
||||
@@ -2294,9 +2285,6 @@ importers:
|
||||
'@univerjs/engine-render':
|
||||
specifier: workspace:*
|
||||
version: link:../engine-render
|
||||
'@univerjs/icons':
|
||||
specifier: ^0.3.24
|
||||
version: 0.3.24(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
'@univerjs/sheets':
|
||||
specifier: workspace:*
|
||||
version: link:../sheets
|
||||
@@ -4271,20 +4259,20 @@ packages:
|
||||
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
|
||||
'@eslint-react/ast@1.49.0':
|
||||
resolution: {integrity: sha512-kKYKd3hVjztMMLNAX41GRbi+luSIVYSYReXtifiPKjYNu/CkZ14x5o9CCN0iAeuSinpSmaUq4qXDD6nihMp1Wg==}
|
||||
'@eslint-react/ast@1.50.0':
|
||||
resolution: {integrity: sha512-WGAZvyZweQzyHBZ9DjHD4WPTwM1POuyEaUyFyAV0SF82zIM/UE6CbWk4IkDYs3km/48SGqPYlzRQO1LskBhl/Q==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint-react/core@1.49.0':
|
||||
resolution: {integrity: sha512-SS2V3reZmiTSgJjyNhIotZDcpcXeQBr/HWAup/Q3a5rtJDydKO2grvdSpP92NbaGKaIsakRMW4XupUmGVZhnYA==}
|
||||
'@eslint-react/core@1.50.0':
|
||||
resolution: {integrity: sha512-2hwkvmW5xZrqe8Em+gCd0ipzNOuViwj2/5tiFSK6xyvC0WPPszlkMTvjUxtLeCnjcaIUqGSurQZ3jIP0bJeYAA==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint-react/eff@1.49.0':
|
||||
resolution: {integrity: sha512-u4TNqG/smBx5HefDJDUkpdDJ2Wg0rXJFFi61UHPREp0IDPKQOqCMQ1fH1RbZp2w95TRiar94/mXwweeyqAVekQ==}
|
||||
'@eslint-react/eff@1.50.0':
|
||||
resolution: {integrity: sha512-SGLWvBeJCJBXDAJXeTEyGfKjK6KcfHQtYfCoaU0TqFyOdpwArf/AJtOedtfle2OuLHx7xStlx1SESk0532mU+w==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint-react/eslint-plugin@1.49.0':
|
||||
resolution: {integrity: sha512-KMMSRROH4OQla+pOQjXC3IYTgOWBIf46WaZDwX0hGgGP8qzXAjJcWiJdButhIQ8PsgKoFKnr13uStIput8wwIQ==}
|
||||
'@eslint-react/eslint-plugin@1.50.0':
|
||||
resolution: {integrity: sha512-EkyWjzo1k86IHDfBwhtnE9LhpgedoqkiDj+YT7uzIJm/pJsZ5JF3njhRbU7nvtDuZ4x89pml1O4rREZIpDXZ5g==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -4293,16 +4281,16 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@eslint-react/kit@1.49.0':
|
||||
resolution: {integrity: sha512-bLyVQaFaXG34ShcStuMRX64GUOkB7qUvhXsl5+Z56LE+PAM60pTWIxtPJ4PdogO9iEOpNU7v3FDnuCLVKTAzKg==}
|
||||
'@eslint-react/kit@1.50.0':
|
||||
resolution: {integrity: sha512-DKj8qbWvLjK1o8PKjPkaWr3IO4meahQ3zZ82TQQ5JTMgUqWZnABAvTPKxv7Fyb8gGUhYLkhZa2xbUA5X8hXmxQ==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint-react/shared@1.49.0':
|
||||
resolution: {integrity: sha512-e+qB/bcQTBnRnYXBEAJkKBxHcsiIM+2KGHBJAmc9OFwaEtOOGl+1ShhVox6r9YIIGI7ak+ylnLYabkQp15K/tw==}
|
||||
'@eslint-react/shared@1.50.0':
|
||||
resolution: {integrity: sha512-Lt26m2W/iYaw2Y6/pTA/uA5QB7eZzWWilSJ/xLW73xu92nxUaWzB4fVuUTIpsDDeN6q5ttMvVRf8LbIkIFWUFg==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint-react/var@1.49.0':
|
||||
resolution: {integrity: sha512-CHx6PZAptM3ghSyr0yCxSbR3Fl+EvCk9ctIqj8lQYbXnSkHyIfwclFJb884pc+pss3glmCsOrWNQtR3dxPVVrQ==}
|
||||
'@eslint-react/var@1.50.0':
|
||||
resolution: {integrity: sha512-C/hTee8/JQIQ+j5Aj7P5mvUFltfYPwZfXuqSUnZU6qk1n9aX3TIHh9NfGb8UsSDeRWgV0ZwCybF9ronp+krilg==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
|
||||
'@eslint/compat@1.2.9':
|
||||
@@ -5640,9 +5628,6 @@ packages:
|
||||
'@types/normalize-package-data@2.4.4':
|
||||
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
|
||||
|
||||
'@types/numeral@2.0.5':
|
||||
resolution: {integrity: sha512-kH8I7OSSwQu9DS9JYdFWbuvhVzvFRoCPCkGxNwoGgaPeDfEPJlcxNvEOypZhQ3XXHsGbfIuYcxcJxKUfJHnRfw==}
|
||||
|
||||
'@types/opentype.js@1.3.8':
|
||||
resolution: {integrity: sha512-H6qeTp03jrknklSn4bpT1/9+1xCAEIU2CnjcWPkicJy8A1SKuthanbvoHYMiv79/2W3Xn1XE4gfSJFzt2U3JSw==}
|
||||
|
||||
@@ -5711,21 +5696,10 @@ packages:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/scope-manager@8.32.0':
|
||||
resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/scope-manager@8.32.1':
|
||||
resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/type-utils@8.32.0':
|
||||
resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/type-utils@8.32.1':
|
||||
resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -5741,25 +5715,12 @@ packages:
|
||||
resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.32.0':
|
||||
resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.32.1':
|
||||
resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/utils@8.32.0':
|
||||
resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/utils@8.32.1':
|
||||
resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -5767,10 +5728,6 @@ packages:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.32.0':
|
||||
resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.32.1':
|
||||
resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -6077,12 +6034,6 @@ packages:
|
||||
'@zeit/schemas@2.36.0':
|
||||
resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==}
|
||||
|
||||
'@zod/core@0.11.6':
|
||||
resolution: {integrity: sha512-03Bv82fFSfjDAvMfdHHdGSS6SOJs0iCcJlWJv1kJHRtoTT02hZpyip/2Lk6oo4l4FtjuwTrsEQTwg/LD8I7dJA==}
|
||||
|
||||
'@zod/mini@4.0.0-beta.20250505T195954':
|
||||
resolution: {integrity: sha512-ioybPtU4w4TqwHvJv0gkAiYNaBkZ/BaGHBpK7viCIRSE8BiiZucVZ8vS0YE04Qy1R120nAnFy1d+tD9ByMO0yw==}
|
||||
|
||||
JSONStream@1.3.5:
|
||||
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
|
||||
hasBin: true
|
||||
@@ -7548,8 +7499,8 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^9.0.0
|
||||
|
||||
eslint-plugin-react-debug@1.49.0:
|
||||
resolution: {integrity: sha512-d7/5OnbBFPVQG9jVjM1Bs5p24M+xCri0Dv1ExeWxJZO1Gl9xKaqDO4tv6+cL9Kg2+yy6QaD/xD6j6IHjIv2Bmw==}
|
||||
eslint-plugin-react-debug@1.50.0:
|
||||
resolution: {integrity: sha512-lCHKl1+ydvNNnJ+Cm0Sezog9dYh8Se9fFTVA8IUAjThfElC7FyqtF7YiehDDPnY+4ncX0Lytk8bPfRfGtoIDNA==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7558,8 +7509,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
eslint-plugin-react-dom@1.49.0:
|
||||
resolution: {integrity: sha512-gz+rXbU9evjneshMYclUXHCzFSdt4QHRaLZYJXrdzTBTnROM1lrjvmT72Pt8KYQpiRNIcz1pemyJQmdJ2OQ+Ig==}
|
||||
eslint-plugin-react-dom@1.50.0:
|
||||
resolution: {integrity: sha512-ksMoCuD2vUTSy6YN2zhgR7hSbbRr0TUPNoxe44A/3Dlz6Ww500OwamBb2c13nqZi6Mk0fE4T2gbMJEF5aZzFkw==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7568,8 +7519,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
eslint-plugin-react-hooks-extra@1.49.0:
|
||||
resolution: {integrity: sha512-euvLPhRaYxZIuj1muOB+SKrepcuM9NiPABAyMmGdwSOPdoZX/SphXxzzJLkAWCN1m3QwWXpSFH/J9Z+fQ5Av3w==}
|
||||
eslint-plugin-react-hooks-extra@1.50.0:
|
||||
resolution: {integrity: sha512-owJUWaEeDZvceQkmof7CKFBBA81EjcUOVADcb5aZWwneM2Ui3BUlTHulmxcoSCJDH8b2u7VOkUjiQ/nAZcp55Q==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7584,8 +7535,8 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
|
||||
|
||||
eslint-plugin-react-naming-convention@1.49.0:
|
||||
resolution: {integrity: sha512-TfaLDPdNsdlQy+plRXO6yzae38ZpT+pHQijSxKLYSJvegfe5VYJTltsKPkwa8+WSUnZAS9U4NXwYdi06uP5aiw==}
|
||||
eslint-plugin-react-naming-convention@1.50.0:
|
||||
resolution: {integrity: sha512-icV9kENTe15osNJOr09LlKZ2Xj0q43Xm77ofJCzYjWa8JpfI8HI2DNdG3DE4fNkftMIgCxMJIsSs7ch14f1STA==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7599,8 +7550,8 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: '>=8.40'
|
||||
|
||||
eslint-plugin-react-web-api@1.49.0:
|
||||
resolution: {integrity: sha512-Tba3qAKXjwM58jE9gocwgUqcuy+3gsh75HtbBjf2iG9vHoRiLuve9r1zGuI1SSlF+J8NdIfZf9b+1rBDLn+Spw==}
|
||||
eslint-plugin-react-web-api@1.50.0:
|
||||
resolution: {integrity: sha512-2I5rmaDdhgtLcOFZ81/0MLJlTdvVQTVL8b+jfUWR4tLfk6BQKHZlx5pBcunYvuGjkZRYZ2viUoue/CKm+92zaA==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7609,8 +7560,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
eslint-plugin-react-x@1.49.0:
|
||||
resolution: {integrity: sha512-yRh5nN8Z1Xoq26dt40Jnbqg8Z3N/svD4v7bT7sAWGslhCpxAGJEnOpj6V0L0xmw4ztz7ZonHt/4ks7mEOpagmQ==}
|
||||
eslint-plugin-react-x@1.50.0:
|
||||
resolution: {integrity: sha512-Izej25IW8wk2wxB0J3orZLf8x+9vyvNICilDu+MOU7LYPPZQifXTeEweOUUfSwXB0byUSElilU+zFG2EKcCJFg==}
|
||||
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -9162,9 +9113,6 @@ packages:
|
||||
nth-check@2.1.1:
|
||||
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
|
||||
|
||||
numeral@2.0.6:
|
||||
resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==}
|
||||
|
||||
numfmt@2.5.2:
|
||||
resolution: {integrity: sha512-VXrB2bpU9Xa0oCHq8IsqE2CcUx5OLupLC3oryFT4DB9e/xe+OnUzBndhXfNHUzxFE4DYI3Sx4OtzS1Sdaf7tEw==}
|
||||
|
||||
@@ -10735,8 +10683,8 @@ packages:
|
||||
ts-interface-checker@0.1.13:
|
||||
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
|
||||
|
||||
ts-pattern@5.7.0:
|
||||
resolution: {integrity: sha512-0/FvIG4g3kNkYgbNwBBW5pZBkfpeYQnH+2AA3xmjkCAit/DSDPKmgwC3fKof4oYUq6gupClVOJlFl+939VRBMg==}
|
||||
ts-pattern@5.7.1:
|
||||
resolution: {integrity: sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==}
|
||||
|
||||
tsconfig-paths-webpack-plugin@4.2.0:
|
||||
resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==}
|
||||
@@ -11295,6 +11243,9 @@ packages:
|
||||
resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
zod@3.25.28:
|
||||
resolution: {integrity: sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==}
|
||||
|
||||
zustand@4.5.6:
|
||||
resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==}
|
||||
engines: {node: '>=12.7.0'}
|
||||
@@ -11324,7 +11275,7 @@ snapshots:
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
|
||||
'@antfu/eslint-config@4.13.2(@eslint-react/eslint-plugin@1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@vue/compiler-sfc@3.5.14)(eslint-plugin-format@1.0.1(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(happy-dom@17.4.7)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))':
|
||||
'@antfu/eslint-config@4.13.2(@eslint-react/eslint-plugin@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@vue/compiler-sfc@3.5.14)(eslint-plugin-format@1.0.1(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)))(eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.4(@types/debug@4.1.12)(@types/node@22.15.21)(happy-dom@17.4.7)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@antfu/install-pkg': 1.1.0
|
||||
'@clack/prompts': 0.10.1
|
||||
@@ -11364,7 +11315,7 @@ snapshots:
|
||||
vue-eslint-parser: 10.1.3(eslint@9.27.0(jiti@2.4.2))
|
||||
yaml-eslint-parser: 1.3.0
|
||||
optionalDependencies:
|
||||
'@eslint-react/eslint-plugin': 1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
'@eslint-react/eslint-plugin': 1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
eslint-plugin-format: 1.0.1(eslint@9.27.0(jiti@2.4.2))
|
||||
eslint-plugin-react-hooks: 5.2.0(eslint@9.27.0(jiti@2.4.2))
|
||||
eslint-plugin-react-refresh: 0.4.20(eslint@9.27.0(jiti@2.4.2))
|
||||
@@ -12024,93 +11975,93 @@ snapshots:
|
||||
|
||||
'@eslint-community/regexpp@4.12.1': {}
|
||||
|
||||
'@eslint-react/ast@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
'@eslint-react/ast@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3)
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3)
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/core@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
'@eslint-react/core@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
birecord: 0.1.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/eff@1.49.0': {}
|
||||
'@eslint-react/eff@1.50.0': {}
|
||||
|
||||
'@eslint-react/eslint-plugin@1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)':
|
||||
'@eslint-react/eslint-plugin@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
eslint-plugin-react-debug: 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-dom: 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-hooks-extra: 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-naming-convention: 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-web-api: 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-x: 1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
eslint-plugin-react-debug: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-dom: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-hooks-extra: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-naming-convention: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-web-api: 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint-plugin-react-x: 1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- ts-api-utils
|
||||
|
||||
'@eslint-react/kit@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
'@eslint-react/kit@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@zod/mini': 4.0.0-beta.20250505T195954
|
||||
ts-pattern: 5.7.0
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
ts-pattern: 5.7.1
|
||||
zod: 3.25.28
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/shared@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
'@eslint-react/shared@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@zod/mini': 4.0.0-beta.20250505T195954
|
||||
ts-pattern: 5.7.0
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
ts-pattern: 5.7.1
|
||||
zod: 3.25.28
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/var@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
'@eslint-react/var@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
@@ -13543,8 +13494,6 @@ snapshots:
|
||||
|
||||
'@types/normalize-package-data@2.4.4': {}
|
||||
|
||||
'@types/numeral@2.0.5': {}
|
||||
|
||||
'@types/opentype.js@1.3.8': {}
|
||||
|
||||
'@types/parse-json@4.0.2': {}
|
||||
@@ -13618,27 +13567,11 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/scope-manager@8.32.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/visitor-keys': 8.32.0
|
||||
|
||||
'@typescript-eslint/scope-manager@8.32.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/visitor-keys': 8.32.1
|
||||
|
||||
'@typescript-eslint/type-utils@8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3)
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
debug: 4.4.0
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3)
|
||||
@@ -13654,20 +13587,6 @@ snapshots:
|
||||
|
||||
'@typescript-eslint/types@8.32.1': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.32.0(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/visitor-keys': 8.32.0
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.3
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.7.1
|
||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
@@ -13682,17 +13601,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2))
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/typescript-estree': 8.32.0(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2))
|
||||
@@ -13704,11 +13612,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.32.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
eslint-visitor-keys: 4.2.0
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.32.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
@@ -14098,12 +14001,6 @@ snapshots:
|
||||
|
||||
'@zeit/schemas@2.36.0': {}
|
||||
|
||||
'@zod/core@0.11.6': {}
|
||||
|
||||
'@zod/mini@4.0.0-beta.20250505T195954':
|
||||
dependencies:
|
||||
'@zod/core': 0.11.6
|
||||
|
||||
JSONStream@1.3.5:
|
||||
dependencies:
|
||||
jsonparse: 1.3.1
|
||||
@@ -15629,61 +15526,61 @@ snapshots:
|
||||
tinyglobby: 0.2.13
|
||||
yaml-eslint-parser: 1.3.0
|
||||
|
||||
eslint-plugin-react-debug@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
eslint-plugin-react-debug@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-dom@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
eslint-plugin-react-dom@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
compare-versions: 6.1.1
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-hooks-extra@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
eslint-plugin-react-hooks-extra@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
@@ -15693,21 +15590,21 @@ snapshots:
|
||||
dependencies:
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
|
||||
eslint-plugin-react-naming-convention@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
eslint-plugin-react-naming-convention@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
@@ -15717,42 +15614,42 @@ snapshots:
|
||||
dependencies:
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
|
||||
eslint-plugin-react-web-api@1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
eslint-plugin-react-web-api@1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-x@1.49.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3):
|
||||
eslint-plugin-react-x@1.50.0(eslint@9.27.0(jiti@2.4.2))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.49.0
|
||||
'@eslint-react/kit': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.49.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.0
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.0
|
||||
'@typescript-eslint/utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/ast': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/core': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/eff': 1.50.0
|
||||
'@eslint-react/kit': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/shared': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@eslint-react/var': 1.50.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/scope-manager': 8.32.1
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/types': 8.32.1
|
||||
'@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
compare-versions: 6.1.1
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
is-immutable-type: 5.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
string-ts: 2.2.1
|
||||
ts-pattern: 5.7.0
|
||||
ts-pattern: 5.7.1
|
||||
optionalDependencies:
|
||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||
typescript: 5.8.3
|
||||
@@ -16586,7 +16483,7 @@ snapshots:
|
||||
|
||||
is-immutable-type@5.0.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@typescript-eslint/type-utils': 8.32.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
'@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)
|
||||
eslint: 9.27.0(jiti@2.4.2)
|
||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||
ts-declaration-location: 1.0.7(typescript@5.8.3)
|
||||
@@ -17566,8 +17463,6 @@ snapshots:
|
||||
dependencies:
|
||||
boolbase: 1.0.0
|
||||
|
||||
numeral@2.0.6: {}
|
||||
|
||||
numfmt@2.5.2: {}
|
||||
|
||||
nwsapi@2.2.20: {}
|
||||
@@ -19376,7 +19271,7 @@ snapshots:
|
||||
|
||||
ts-interface-checker@0.1.13: {}
|
||||
|
||||
ts-pattern@5.7.0: {}
|
||||
ts-pattern@5.7.1: {}
|
||||
|
||||
tsconfig-paths-webpack-plugin@4.2.0:
|
||||
dependencies:
|
||||
@@ -20013,6 +19908,8 @@ snapshots:
|
||||
|
||||
yoctocolors-cjs@2.1.2: {}
|
||||
|
||||
zod@3.25.28: {}
|
||||
|
||||
zustand@4.5.6(@types/react@19.1.5)(react@19.1.0):
|
||||
dependencies:
|
||||
use-sync-external-store: 1.5.0(react@19.1.0)
|
||||
|
||||
Reference in New Issue
Block a user