mirror of
https://github.com/dream-num/univer.git
synced 2026-09-19 10:29:12 +08:00
feat(design): add gradient-color-picker (#6411)
This commit is contained in:
@@ -48,7 +48,7 @@ export const peerDepsMap = {
|
||||
'@wendellhu/redi': {
|
||||
global: '@wendellhu/redi',
|
||||
name: '@wendellhu/redi',
|
||||
version: '1.0.1',
|
||||
version: '1.1.0',
|
||||
},
|
||||
'@wendellhu/redi/react-bindings': {
|
||||
global: '@wendellhu/redi/react-bindings',
|
||||
|
||||
+2
-2
@@ -48,7 +48,7 @@
|
||||
"@antfu/eslint-config": "^6.7.3",
|
||||
"@commitlint/cli": "^20.2.0",
|
||||
"@commitlint/config-conventional": "^20.2.0",
|
||||
"@eslint-react/eslint-plugin": "^2.4.0",
|
||||
"@eslint-react/eslint-plugin": "^2.5.0",
|
||||
"@playwright/test": "^1.57.0",
|
||||
"@release-it-plugins/workspaces": "^5.0.3",
|
||||
"@release-it/conventional-changelog": "^10.0.4",
|
||||
@@ -67,7 +67,7 @@
|
||||
"fs-extra": "^11.3.3",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^16.2.7",
|
||||
"posthog-node": "^5.18.0",
|
||||
"posthog-node": "^5.18.1",
|
||||
"react": "19.2.3",
|
||||
"react-dom": "19.2.3",
|
||||
"release-it": "^19.2.2",
|
||||
|
||||
@@ -69,13 +69,13 @@
|
||||
"build": "univer-cli build"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@wendellhu/redi": "1.0.1",
|
||||
"@wendellhu/redi": "1.1.0",
|
||||
"rxjs": ">=7.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@univerjs/protocol": "0.1.48",
|
||||
"@univerjs/themes": "workspace:*",
|
||||
"@wendellhu/redi": "1.0.1",
|
||||
"@wendellhu/redi": "1.1.0",
|
||||
"async-lock": "^1.4.1",
|
||||
"dayjs": "^1.11.19",
|
||||
"fast-diff": "1.3.0",
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Copyright 2023-present DreamNum Co., Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { Meta } from '@storybook/react';
|
||||
import type { IGradientValue } from './GradientColorPicker';
|
||||
import { useState } from 'react';
|
||||
import { GradientColorPicker } from './GradientColorPicker';
|
||||
|
||||
const meta: Meta<typeof GradientColorPicker> = {
|
||||
title: 'Components / GradientColorPicker',
|
||||
component: GradientColorPicker,
|
||||
parameters: {
|
||||
layout: 'centered',
|
||||
},
|
||||
tags: ['autodocs'],
|
||||
};
|
||||
|
||||
export default meta;
|
||||
|
||||
export const Playground = {
|
||||
render() {
|
||||
const [value, setValue] = useState<IGradientValue>({
|
||||
type: 'linear',
|
||||
stops: [
|
||||
{ color: '#409eff', offset: 0 },
|
||||
{ color: '#67c23a', offset: 100 },
|
||||
],
|
||||
angle: 90,
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="univer-flex univer-flex-col univer-gap-4">
|
||||
<div className="univer-font-mono univer-text-sm">
|
||||
{JSON.stringify(value, null, 2)}
|
||||
</div>
|
||||
<GradientColorPicker className="univer-w-80" value={value} onChange={setValue} />
|
||||
</div>
|
||||
);
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,269 @@
|
||||
/**
|
||||
* Copyright 2023-present DreamNum Co., Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { DeleteIcon } from '@univerjs/icons';
|
||||
import { useContext, useMemo, useRef, useState } from 'react';
|
||||
import { clsx } from '../../helper/clsx';
|
||||
import { Button } from '../button/Button';
|
||||
import { ColorPicker } from '../color-picker/ColorPicker';
|
||||
import { ConfigContext } from '../config-provider/ConfigProvider';
|
||||
import { InputNumber } from '../input-number/InputNumber';
|
||||
import { Segmented } from '../segmented/Segmented';
|
||||
import { Tooltip } from '../tooltip/Tooltip';
|
||||
|
||||
export type GradientType = 'linear' | 'radial' | 'angular' | 'diamond';
|
||||
|
||||
export interface IGradientStop {
|
||||
color: string;
|
||||
offset: number;
|
||||
}
|
||||
|
||||
export interface IGradientValue {
|
||||
type: GradientType;
|
||||
stops: IGradientStop[];
|
||||
angle?: number;
|
||||
}
|
||||
|
||||
export interface IGradientColorPickerProps {
|
||||
className?: string;
|
||||
value?: IGradientValue;
|
||||
onChange?: (value: IGradientValue) => void;
|
||||
}
|
||||
|
||||
const DEFAULT_VALUE: IGradientValue = {
|
||||
type: 'linear',
|
||||
stops: [
|
||||
{ color: '#ffffff', offset: 0 },
|
||||
{ color: '#000000', offset: 100 },
|
||||
],
|
||||
angle: 90,
|
||||
};
|
||||
|
||||
export function GradientColorPicker(props: IGradientColorPickerProps) {
|
||||
const { className, value = DEFAULT_VALUE, onChange } = props;
|
||||
const { locale } = useContext(ConfigContext);
|
||||
const [selectedIndex, setSelectedIndex] = useState<number>(0);
|
||||
const barRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const stops = useMemo(() => {
|
||||
return [...value.stops].sort((a, b) => a.offset - b.offset);
|
||||
}, [value.stops]);
|
||||
|
||||
const handleTypeChange = (type: GradientType) => {
|
||||
onChange?.({ ...value, type });
|
||||
};
|
||||
|
||||
const handleAngleChange = (angle: number | null) => {
|
||||
onChange?.({ ...value, angle: angle ?? 0 });
|
||||
};
|
||||
|
||||
const handleStopColorChange = (color: string) => {
|
||||
const newStops = [...value.stops];
|
||||
newStops[selectedIndex] = { ...newStops[selectedIndex], color };
|
||||
onChange?.({ ...value, stops: newStops });
|
||||
};
|
||||
|
||||
const handleStopOffsetChange = (offset: number | null) => {
|
||||
if (offset === null) return;
|
||||
const newStops = [...value.stops];
|
||||
newStops[selectedIndex] = { ...newStops[selectedIndex], offset };
|
||||
onChange?.({ ...value, stops: newStops });
|
||||
};
|
||||
|
||||
// const handleFlip = () => {
|
||||
// const newStops = value.stops.map((stop) => ({
|
||||
// ...stop,
|
||||
// offset: 100 - stop.offset,
|
||||
// }));
|
||||
// onChange?.({ ...value, stops: newStops });
|
||||
// };
|
||||
|
||||
const handleAddStop = (e: React.MouseEvent<HTMLDivElement>) => {
|
||||
if (!barRef.current) return;
|
||||
const rect = barRef.current.getBoundingClientRect();
|
||||
const offset = Math.round(((e.clientX - rect.left) / rect.width) * 100);
|
||||
|
||||
// Find color at this offset (simple linear interpolation)
|
||||
const leftStop = [...stops].reverse().find((s) => s.offset <= offset) || stops[0];
|
||||
// const rightStop = stops.find((s) => s.offset >= offset) || stops[stops.length - 1];
|
||||
|
||||
const newStop = { color: leftStop.color, offset };
|
||||
const newStops = [...value.stops, newStop];
|
||||
onChange?.({ ...value, stops: newStops });
|
||||
setSelectedIndex(newStops.length - 1);
|
||||
};
|
||||
|
||||
const handleRemoveStop = () => {
|
||||
if (value.stops.length <= 2) return;
|
||||
const newStops = value.stops.filter((_, i) => i !== selectedIndex);
|
||||
onChange?.({ ...value, stops: newStops });
|
||||
setSelectedIndex(0);
|
||||
};
|
||||
|
||||
const gradientPreview = useMemo(() => {
|
||||
const stopsStr = stops.map((s) => `${s.color} ${s.offset}%`).join(', ');
|
||||
return `linear-gradient(to right, ${stopsStr})`;
|
||||
}, [stops]);
|
||||
|
||||
const mainPreview = useMemo(() => {
|
||||
const stopsStr = stops.map((s) => `${s.color} ${s.offset}%`).join(', ');
|
||||
switch (value.type) {
|
||||
case 'linear':
|
||||
return `linear-gradient(${value.angle}deg, ${stopsStr})`;
|
||||
case 'radial':
|
||||
return `radial-gradient(circle, ${stopsStr})`;
|
||||
case 'angular':
|
||||
return `conic-gradient(from ${value.angle}deg, ${stopsStr})`;
|
||||
case 'diamond':
|
||||
// Diamond is tricky in CSS, using a placeholder or approximation
|
||||
return `radial-gradient(circle, ${stopsStr})`;
|
||||
default:
|
||||
return `linear-gradient(${value.angle}deg, ${stopsStr})`;
|
||||
}
|
||||
}, [value, stops]);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={clsx(`
|
||||
univer-flex univer-w-64 univer-flex-col univer-gap-4 univer-rounded-lg univer-bg-white univer-p-4
|
||||
univer-shadow-lg
|
||||
dark:univer-bg-gray-800
|
||||
`, className)}
|
||||
>
|
||||
<Segmented
|
||||
items={[
|
||||
{ label: locale?.GradientColorPicker.linear, value: 'linear' },
|
||||
{ label: locale?.GradientColorPicker.radial, value: 'radial' },
|
||||
{ label: locale?.GradientColorPicker.angular, value: 'angular' },
|
||||
{ label: locale?.GradientColorPicker.diamond, value: 'diamond' },
|
||||
]}
|
||||
value={value.type}
|
||||
onChange={(v) => handleTypeChange(v as GradientType)}
|
||||
/>
|
||||
|
||||
<div
|
||||
className={`
|
||||
univer-h-32 univer-w-full univer-rounded-md univer-border univer-border-gray-200
|
||||
dark:univer-border-gray-600
|
||||
`}
|
||||
style={{ background: mainPreview }}
|
||||
/>
|
||||
|
||||
<div className="univer-relative univer-mt-4 univer-h-6">
|
||||
<div
|
||||
ref={barRef}
|
||||
className={`
|
||||
univer-absolute univer-inset-x-0 univer-top-1/2 univer-h-2 univer--translate-y-1/2
|
||||
univer-cursor-crosshair univer-rounded-full
|
||||
`}
|
||||
style={{ background: gradientPreview }}
|
||||
onClick={handleAddStop}
|
||||
/>
|
||||
{value.stops.map((stop, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className={clsx(
|
||||
`
|
||||
univer-absolute univer-top-1/2 univer-h-4 univer-w-4 univer--translate-x-1/2
|
||||
univer--translate-y-1/2 univer-cursor-pointer univer-rounded-full univer-border-2
|
||||
univer-border-white univer-shadow-md
|
||||
`,
|
||||
selectedIndex === index ? 'univer-z-10 univer-ring-2 univer-ring-primary-500' : 'univer-z-0'
|
||||
)}
|
||||
style={{
|
||||
left: `${stop.offset}%`,
|
||||
backgroundColor: stop.color,
|
||||
}}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
setSelectedIndex(index);
|
||||
}}
|
||||
onPointerDown={(e) => {
|
||||
const startX = e.clientX;
|
||||
const startOffset = stop.offset;
|
||||
|
||||
const handlePointerMove = (moveEvent: PointerEvent) => {
|
||||
if (!barRef.current) return;
|
||||
const rect = barRef.current.getBoundingClientRect();
|
||||
const deltaX = moveEvent.clientX - startX;
|
||||
const deltaOffset = (deltaX / rect.width) * 100;
|
||||
const newOffset = Math.max(0, Math.min(100, Math.round(startOffset + deltaOffset)));
|
||||
|
||||
const newStops = [...value.stops];
|
||||
newStops[index] = { ...newStops[index], offset: newOffset };
|
||||
onChange?.({ ...value, stops: newStops });
|
||||
};
|
||||
|
||||
const handlePointerUp = () => {
|
||||
window.removeEventListener('pointermove', handlePointerMove);
|
||||
window.removeEventListener('pointerup', handlePointerUp);
|
||||
};
|
||||
|
||||
window.addEventListener('pointermove', handlePointerMove);
|
||||
window.addEventListener('pointerup', handlePointerUp);
|
||||
}}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="univer-flex univer-items-end univer-gap-2">
|
||||
<div className="univer-flex-1">
|
||||
<div className="univer-mb-1 univer-text-xs univer-text-gray-500">{locale?.GradientColorPicker.offset}</div>
|
||||
<InputNumber
|
||||
value={value.stops[selectedIndex]?.offset}
|
||||
min={0}
|
||||
max={100}
|
||||
onChange={handleStopOffsetChange}
|
||||
/>
|
||||
</div>
|
||||
{(value.type === 'linear' || value.type === 'angular') && (
|
||||
<div className="univer-flex-1">
|
||||
<div className="univer-mb-1 univer-text-xs univer-text-gray-500">{locale?.GradientColorPicker.angle}</div>
|
||||
<InputNumber
|
||||
value={value.angle}
|
||||
min={0}
|
||||
max={360}
|
||||
onChange={handleAngleChange}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="univer-flex univer-gap-1">
|
||||
<Tooltip title={locale?.GradientColorPicker.delete}>
|
||||
<Button
|
||||
variant="danger"
|
||||
onClick={handleRemoveStop}
|
||||
disabled={value.stops.length <= 2}
|
||||
>
|
||||
<DeleteIcon />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
className={`
|
||||
univer-border-t univer-border-gray-100 univer-pt-4
|
||||
dark:univer-border-gray-700
|
||||
`}
|
||||
>
|
||||
<ColorPicker
|
||||
value={value.stops[selectedIndex]?.color}
|
||||
onChange={handleStopColorChange}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
/**
|
||||
* Copyright 2023-present DreamNum Co., Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @vitest-environment jsdom
|
||||
*/
|
||||
|
||||
import type { IGradientValue } from '../GradientColorPicker';
|
||||
import { cleanup, fireEvent, render } from '@testing-library/react';
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest';
|
||||
import { GradientColorPicker } from '../GradientColorPicker';
|
||||
import '@testing-library/jest-dom/vitest';
|
||||
|
||||
afterEach(cleanup);
|
||||
|
||||
const defaultValue: IGradientValue = {
|
||||
type: 'linear',
|
||||
stops: [
|
||||
{ color: '#ffffff', offset: 0 },
|
||||
{ color: '#000000', offset: 100 },
|
||||
],
|
||||
angle: 90,
|
||||
};
|
||||
|
||||
describe('GradientColorPicker', () => {
|
||||
it('renders correctly', () => {
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} />);
|
||||
expect(container).toBeDefined();
|
||||
// Check if segmented items are rendered - they are buttons inside the segmented container
|
||||
const segmented = container.querySelector('[data-u-comp="segmented"]');
|
||||
expect(segmented?.querySelectorAll('button').length).toBe(4);
|
||||
});
|
||||
|
||||
it('should call onChange when type changes', () => {
|
||||
const onChange = vi.fn();
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} onChange={onChange} />);
|
||||
|
||||
const segmented = container.querySelector('[data-u-comp="segmented"]');
|
||||
const items = segmented?.querySelectorAll('button');
|
||||
// Click 'radial' (index 1)
|
||||
if (items && items[1]) {
|
||||
fireEvent.click(items[1]);
|
||||
}
|
||||
|
||||
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
||||
type: 'radial',
|
||||
}));
|
||||
});
|
||||
|
||||
it('should call onChange when offset changes', () => {
|
||||
const onChange = vi.fn();
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} onChange={onChange} />);
|
||||
|
||||
const inputs = container.querySelectorAll('input');
|
||||
const offsetInput = inputs[0]; // First input is offset
|
||||
|
||||
fireEvent.change(offsetInput, { target: { value: '50' } });
|
||||
|
||||
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
||||
stops: expect.arrayContaining([
|
||||
expect.objectContaining({ offset: 50 }),
|
||||
]),
|
||||
}));
|
||||
});
|
||||
|
||||
it('should call onChange when angle changes', () => {
|
||||
const onChange = vi.fn();
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} onChange={onChange} />);
|
||||
|
||||
const inputs = container.querySelectorAll('input');
|
||||
const angleInput = inputs[1]; // Second input is angle for linear
|
||||
|
||||
fireEvent.change(angleInput, { target: { value: '180' } });
|
||||
|
||||
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
||||
angle: 180,
|
||||
}));
|
||||
});
|
||||
|
||||
it('should select stop when clicked', () => {
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} />);
|
||||
// Find stops by their style (left: 0% or left: 100%) or by their common classes
|
||||
// The stops have univer-absolute and univer-rounded-full
|
||||
const stops = container.querySelectorAll('.univer-absolute.univer-rounded-full.univer-border-2');
|
||||
|
||||
// Click the second stop
|
||||
fireEvent.click(stops[1]);
|
||||
|
||||
// The second stop should have the selected class (z-10)
|
||||
expect(stops[1]).toHaveClass('univer-z-10');
|
||||
});
|
||||
|
||||
it('should call onChange when a stop is removed', () => {
|
||||
const onChange = vi.fn();
|
||||
const valueWithThreeStops: IGradientValue = {
|
||||
...defaultValue,
|
||||
stops: [
|
||||
{ color: '#ffffff', offset: 0 },
|
||||
{ color: '#ff0000', offset: 50 },
|
||||
{ color: '#000000', offset: 100 },
|
||||
],
|
||||
};
|
||||
const { container } = render(<GradientColorPicker value={valueWithThreeStops} onChange={onChange} />);
|
||||
|
||||
// Find delete button - it's the one with univer-border-red-500 or similar
|
||||
const deleteButton = container.querySelector('.univer-border-red-500');
|
||||
if (deleteButton) {
|
||||
fireEvent.click(deleteButton);
|
||||
}
|
||||
|
||||
expect(onChange).toHaveBeenCalled();
|
||||
const calledValue = onChange.mock.calls[0][0] as IGradientValue;
|
||||
expect(calledValue.stops.length).toBe(2);
|
||||
});
|
||||
|
||||
it('should disable delete button when only 2 stops remain', () => {
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} />);
|
||||
const deleteButton = container.querySelector('.univer-border-red-500');
|
||||
expect(deleteButton).toBeDisabled();
|
||||
});
|
||||
|
||||
it('should call onChange when clicking the bar to add a stop', () => {
|
||||
const onChange = vi.fn();
|
||||
const { container } = render(<GradientColorPicker value={defaultValue} onChange={onChange} />);
|
||||
|
||||
const bar = container.querySelector('.univer-cursor-crosshair');
|
||||
if (bar) {
|
||||
// Mock getBoundingClientRect for the bar
|
||||
bar.getBoundingClientRect = vi.fn(() => ({
|
||||
left: 0,
|
||||
width: 100,
|
||||
top: 0,
|
||||
height: 10,
|
||||
bottom: 10,
|
||||
right: 100,
|
||||
x: 0,
|
||||
y: 0,
|
||||
toJSON: () => {},
|
||||
}));
|
||||
|
||||
fireEvent.click(bar, { clientX: 50 });
|
||||
}
|
||||
|
||||
expect(onChange).toHaveBeenCalled();
|
||||
const calledValue = onChange.mock.calls[0][0] as IGradientValue;
|
||||
expect(calledValue.stops.length).toBe(3);
|
||||
expect(calledValue.stops.some((s) => s.offset === 50)).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -37,6 +37,7 @@ export { DropdownMenu, type IDropdownMenuProps } from './components/dropdown-men
|
||||
export { Dropdown, type IDropdownProps } from './components/dropdown/Dropdown';
|
||||
export { FormDualColumnLayout, FormLayout, type IFormDualColumnLayoutProps, type IFormLayoutProps } from './components/form-layout';
|
||||
export { Gallery, type IGalleryProps } from './components/gallery/Gallery';
|
||||
export { GradientColorPicker, type GradientType, type IGradientColorPickerProps, type IGradientStop, type IGradientValue } from './components/gradient-color-picker/GradientColorPicker';
|
||||
export { HoverCard, type IHoverCardProps } from './components/hover-card/HoverCard';
|
||||
export { type IInputNumberProps, InputNumber } from './components/input-number/InputNumber';
|
||||
export { type IInputProps, Input } from './components/input/Input';
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'cancel·la',
|
||||
confirm: 'ok',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'Lineal',
|
||||
radial: 'Radial',
|
||||
angular: 'Angular',
|
||||
diamond: 'Diamant',
|
||||
offset: 'Desplaçament',
|
||||
angle: 'Angle',
|
||||
flip: 'Girar',
|
||||
delete: 'Eliminar',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -49,6 +49,16 @@ const locale = {
|
||||
cancel: 'cancel',
|
||||
confirm: 'ok',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'Linear',
|
||||
radial: 'Radial',
|
||||
angular: 'Angular',
|
||||
diamond: 'Diamond',
|
||||
offset: 'Offset',
|
||||
angle: 'Angle',
|
||||
flip: 'Flip',
|
||||
delete: 'Delete',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'cancel·la',
|
||||
confirm: 'ok',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'Lineal',
|
||||
radial: 'Radial',
|
||||
angular: 'Angular',
|
||||
diamond: 'Diamant',
|
||||
offset: 'Desplaçament',
|
||||
angle: 'Angle',
|
||||
flip: 'Girar',
|
||||
delete: 'Eliminar',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'لغو',
|
||||
confirm: 'باشه',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'خطی',
|
||||
radial: 'شعاعی',
|
||||
angular: 'زاویهای',
|
||||
diamond: 'الماسی',
|
||||
offset: 'افست',
|
||||
angle: 'زاویه',
|
||||
flip: 'برگردان',
|
||||
delete: 'حذف',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'annuler',
|
||||
confirm: 'ok',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'Linéaire',
|
||||
radial: 'Radial',
|
||||
angular: 'Angulaire',
|
||||
diamond: 'Diamant',
|
||||
offset: 'Décalage',
|
||||
angle: 'Angle',
|
||||
flip: 'Retourner',
|
||||
delete: 'Supprimer',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'キャンセル',
|
||||
confirm: '確認',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: '線形',
|
||||
radial: '円形',
|
||||
angular: '角度',
|
||||
diamond: '菱形',
|
||||
offset: 'オフセット',
|
||||
angle: '角度',
|
||||
flip: '反転',
|
||||
delete: '削除',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: '취소',
|
||||
confirm: '확인',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: '선형',
|
||||
radial: '방사형',
|
||||
angular: '각도형',
|
||||
diamond: '다이아몬드형',
|
||||
offset: '오프셋',
|
||||
angle: '각도',
|
||||
flip: '뒤집기',
|
||||
delete: '삭제',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'отмена',
|
||||
confirm: 'ок',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'линейный',
|
||||
radial: 'радиальный',
|
||||
angular: 'угловой',
|
||||
diamond: 'ромбовидный',
|
||||
offset: 'смещение',
|
||||
angle: 'угол',
|
||||
flip: 'перевернуть',
|
||||
delete: 'удалить',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: 'Hủy bỏ',
|
||||
confirm: 'Xác nhận',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: 'Tuyến tính',
|
||||
radial: 'Tỏa ra',
|
||||
angular: 'Góc',
|
||||
diamond: 'Hình thoi',
|
||||
offset: 'Độ lệch',
|
||||
angle: 'Góc',
|
||||
flip: 'Lật',
|
||||
delete: 'Xóa',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: '取消',
|
||||
confirm: '确定',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: '线性',
|
||||
radial: '径向',
|
||||
angular: '角向',
|
||||
diamond: '菱形',
|
||||
offset: '偏移',
|
||||
angle: '角度',
|
||||
flip: '翻转',
|
||||
delete: '删除',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +51,16 @@ const locale: typeof enUS = {
|
||||
cancel: '取消',
|
||||
confirm: '確定',
|
||||
},
|
||||
GradientColorPicker: {
|
||||
linear: '線性',
|
||||
radial: '徑向',
|
||||
angular: '角向',
|
||||
diamond: '菱形',
|
||||
offset: '偏移',
|
||||
angle: '角度',
|
||||
flip: '翻轉',
|
||||
delete: '刪除',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -84,11 +84,11 @@
|
||||
"@univerjs/design": "workspace:*",
|
||||
"@univerjs/engine-render": "workspace:*",
|
||||
"@univerjs/icons": "^1.1.0",
|
||||
"@wendellhu/redi": "1.0.1",
|
||||
"@wendellhu/redi": "1.1.0",
|
||||
"localforage": "^1.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@testing-library/react": "^16.3.1",
|
||||
"@univerjs-infra/shared": "workspace:*",
|
||||
"@univerjs/themes": "workspace:*",
|
||||
"postcss": "^8.5.6",
|
||||
|
||||
Generated
+250
-158
@@ -16,7 +16,7 @@ importers:
|
||||
devDependencies:
|
||||
'@antfu/eslint-config':
|
||||
specifier: ^6.7.3
|
||||
version: 6.7.3(@eslint-react/eslint-plugin@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.26)(eslint-plugin-format@1.1.0(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@27.0.1)(sass@1.87.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
|
||||
version: 6.7.3(@eslint-react/eslint-plugin@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.26)(eslint-plugin-format@1.1.0(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@27.0.1)(sass@1.87.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
|
||||
'@commitlint/cli':
|
||||
specifier: ^20.2.0
|
||||
version: 20.2.0(@types/node@25.0.3)(typescript@5.9.3)
|
||||
@@ -24,8 +24,8 @@ importers:
|
||||
specifier: ^20.2.0
|
||||
version: 20.2.0
|
||||
'@eslint-react/eslint-plugin':
|
||||
specifier: ^2.4.0
|
||||
version: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
specifier: ^2.5.0
|
||||
version: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@playwright/test':
|
||||
specifier: ^1.57.0
|
||||
version: 1.57.0
|
||||
@@ -81,8 +81,8 @@ importers:
|
||||
specifier: ^16.2.7
|
||||
version: 16.2.7
|
||||
posthog-node:
|
||||
specifier: ^5.18.0
|
||||
version: 5.18.0
|
||||
specifier: ^5.18.1
|
||||
version: 5.18.1
|
||||
react:
|
||||
specifier: 19.2.3
|
||||
version: 19.2.3
|
||||
@@ -1095,8 +1095,8 @@ importers:
|
||||
specifier: workspace:*
|
||||
version: link:../themes
|
||||
'@wendellhu/redi':
|
||||
specifier: 1.0.1
|
||||
version: 1.0.1(react@19.2.3)
|
||||
specifier: 1.1.0
|
||||
version: 1.1.0(react@19.2.3)
|
||||
async-lock:
|
||||
specifier: ^1.4.1
|
||||
version: 1.4.1
|
||||
@@ -3359,15 +3359,15 @@ importers:
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||
'@wendellhu/redi':
|
||||
specifier: 1.0.1
|
||||
version: 1.0.1(react@19.2.3)
|
||||
specifier: 1.1.0
|
||||
version: 1.1.0(react@19.2.3)
|
||||
localforage:
|
||||
specifier: ^1.10.0
|
||||
version: 1.10.0
|
||||
devDependencies:
|
||||
'@testing-library/react':
|
||||
specifier: ^16.3.0
|
||||
version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||
specifier: ^16.3.1
|
||||
version: 16.3.1(@testing-library/dom@10.4.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
||||
'@univerjs-infra/shared':
|
||||
specifier: workspace:*
|
||||
version: link:../../common/shared
|
||||
@@ -4377,40 +4377,40 @@ packages:
|
||||
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
|
||||
'@eslint-react/ast@2.4.0':
|
||||
resolution: {integrity: sha512-xi/uVi4/jaqPDgF9tO4laLAAZLBrKXearHKIAJWmnY+ymu0LBjX8VaLuf6GuUq7ryek5NO2kOZDYNx4C3qV4iw==}
|
||||
'@eslint-react/ast@2.5.0':
|
||||
resolution: {integrity: sha512-8XqcwbksSR2ZALbxpUtzBMR1zEkTSACEUVrwQQ9gUMP6jd6q5CSMWMqZzsaWfWI58vHOZ7GFOuJ5alVNjFcJOw==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@eslint-react/core@2.4.0':
|
||||
resolution: {integrity: sha512-Ibt8NlFhT+FffNKtZmb2xamHEFzwK0AzmmOUGVm/B49B2ShOOR3kQg7ZaVNUR3By0Q0hPlIYnefKH2KgaUJ7jA==}
|
||||
'@eslint-react/core@2.5.0':
|
||||
resolution: {integrity: sha512-yJ64p7uLgAjRHcUxdjU0EntCBNHfcl04xqh1QmyV+DXwIsTEti32Dpf6EFrxrcCkyJO2p1lfnP8HJCirS+prFg==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@eslint-react/eff@2.4.0':
|
||||
resolution: {integrity: sha512-iWB2IaO+ygt8YPGXqUIg3KQmu3GgKecwbHrz0nasEO2BuhR7rAPaBcqnC3s8NvMUicJ/q03yWzfTgMuFST5+jg==}
|
||||
'@eslint-react/eff@2.5.0':
|
||||
resolution: {integrity: sha512-UHC5+Lgq2JTSClVJAhVv7gmxXagGiRPJ8Lr6n3UxeU/P6IWLE0VxvMnVa+vt/o8cdnM5HYPiLG5BEpQL2YRxkQ==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
|
||||
'@eslint-react/eslint-plugin@2.4.0':
|
||||
resolution: {integrity: sha512-+d3JGOc+EM80LGO7Ynz8vRRex+xA+ilM0/BDvwHTlvfdNK6GeH8EV7RewAClvGijfkEMxCoehglVRGwjzmoKbw==}
|
||||
'@eslint-react/eslint-plugin@2.5.0':
|
||||
resolution: {integrity: sha512-v5Fo5RLjeiEX7aWE5Jr5IY7oMCXKsLkMTGh0s4lxaoabAm83yqiSWF3gaZFiv5p8iNORCEPEusWByVyvC0To0g==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@eslint-react/shared@2.4.0':
|
||||
resolution: {integrity: sha512-1LYGz8AzAN9knt56h2onTL4beTLxys/KzV+PJwODydAqYKIlWAOtJJK1HLwDrXneiLP8G2mHrt2XwcmrXzzaRw==}
|
||||
'@eslint-react/shared@2.5.0':
|
||||
resolution: {integrity: sha512-uNmGPscFfzh6NRxcRMawhAeM9VrvW+jNTH6tTTXMO2egz0CJ6qXxLS3GGe20WfwqSO7fFSGHWtfSmI7/uF/IjA==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@eslint-react/var@2.4.0':
|
||||
resolution: {integrity: sha512-vIVIQfBS8qfzu/AM4/fAek+Qab63MZwintr7gdSOjRy5z/7Kixjzg5Nj1AeW78jBtPrZSDYUpYb8ZXM0mN/Qag==}
|
||||
'@eslint-react/var@2.5.0':
|
||||
resolution: {integrity: sha512-ATznXderowGQiji47Xbf1OhT6ZSarUSDULx8sTijTgzudQ6BefGva+wXb+jxM8QzvpBC5s7DnfkhMnO1202mNQ==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -5630,21 +5630,6 @@ packages:
|
||||
resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==}
|
||||
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
|
||||
|
||||
'@testing-library/react@16.3.0':
|
||||
resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==}
|
||||
engines: {node: '>=18'}
|
||||
peerDependencies:
|
||||
'@testing-library/dom': ^10.0.0
|
||||
'@types/react': 19.2.7
|
||||
'@types/react-dom': 19.2.3
|
||||
react: 19.2.3
|
||||
react-dom: 19.2.3
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
|
||||
'@testing-library/react@16.3.1':
|
||||
resolution: {integrity: sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -5855,16 +5840,32 @@ packages:
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/project-service@8.51.0':
|
||||
resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/scope-manager@8.50.1':
|
||||
resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/scope-manager@8.51.0':
|
||||
resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.50.1':
|
||||
resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.51.0':
|
||||
resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/type-utils@8.50.1':
|
||||
resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -5872,16 +5873,33 @@ packages:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/type-utils@8.51.0':
|
||||
resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/types@8.50.1':
|
||||
resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/types@8.51.0':
|
||||
resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.50.1':
|
||||
resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.51.0':
|
||||
resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/utils@8.50.1':
|
||||
resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -5889,10 +5907,21 @@ packages:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/utils@8.51.0':
|
||||
resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.50.1':
|
||||
resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.51.0':
|
||||
resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@univerjs/icons-svg@1.1.0':
|
||||
resolution: {integrity: sha512-ng+WOkkzNhDEa3eMoVOOcZB0XQTLrI6LSKfWYl0isjWuYjFwWQMgBDnVVHkfAx7v9QeDETKcSq8rPsZUkOiZlQ==}
|
||||
|
||||
@@ -6091,8 +6120,8 @@ packages:
|
||||
'@webassemblyjs/wast-printer@1.14.1':
|
||||
resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
|
||||
|
||||
'@wendellhu/redi@1.0.1':
|
||||
resolution: {integrity: sha512-vKJFlaPjXsyqcJFNKJGmdLRup5uUZGQuZUA41e67at5y93kEYJo5FpJebAfs8LStJjItHWv21t0Aq+0UCSYSsw==}
|
||||
'@wendellhu/redi@1.1.0':
|
||||
resolution: {integrity: sha512-LKgJfzE9TxBi6Y63aDHcNGo0ALe0TOEb1gP1z6lOvnrVRcLylfVtq86ISxv1VHbx7LuF2Fc1oHEzIrJ44Kbufw==}
|
||||
engines: {node: '>=22.12.0'}
|
||||
peerDependencies:
|
||||
react: 19.2.3
|
||||
@@ -7439,16 +7468,16 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^9.0.0
|
||||
|
||||
eslint-plugin-react-dom@2.4.0:
|
||||
resolution: {integrity: sha512-nzBLj2bD2JJuIJlonENAE9Dp8Sy9Gw7Y45Y4mwjJ8PLV6hABP6W/sgeF0NXpzBiyClXRnjoCPRwylY0XjUaR+w==}
|
||||
eslint-plugin-react-dom@2.5.0:
|
||||
resolution: {integrity: sha512-d4at1AtRxk1lnUQweJSPLErMTBXOtnEmcdSclEouqSKi43FNNFdvZ9q91UGGHTtF3fxxiuUO6CLFMFLeaPi81w==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
eslint-plugin-react-hooks-extra@2.4.0:
|
||||
resolution: {integrity: sha512-uLOSXhW1+RgXrkwErfnoiGSsAxdtCJyPG8yyswR+OL3bhaT3gwj5HcyEWpj+9GrzvDnb6oknfddpyAl2RmOOHw==}
|
||||
engines: {node: '>=20.0.0'}
|
||||
eslint-plugin-react-hooks-extra@2.5.0:
|
||||
resolution: {integrity: sha512-573L9zhUZY0OlJWEBcmgdvJYa7zKd1Ns6fHLECIgl05H6c7KWo9YNmT05PRV/9n38KzbqOrv45RnVifxar96Yg==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
@@ -7459,8 +7488,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@2.4.0:
|
||||
resolution: {integrity: sha512-7kmdrdKVO+54AUtUYzrpGqs9+wRREOWrr1A1DoMItZ8KXPv6TRWlUxm2opFFe2QysV0tSVvb4TVlfWxKcG1eLw==}
|
||||
eslint-plugin-react-naming-convention@2.5.0:
|
||||
resolution: {integrity: sha512-IdFVn99OnbpnS+irgBw5Kzz/+MQuofdlIFoJzsKtgTzdoq1Zo84GqXmJ9ONZwpJRw4tvzxoeamekzxyyF0xsug==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -7471,15 +7500,15 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: '>=8.40'
|
||||
|
||||
eslint-plugin-react-web-api@2.4.0:
|
||||
resolution: {integrity: sha512-NUGVZXgegv9l1zNNeX+n8EheGZtHcZGxBW6zmqUNr/762GikOgJHwaER8xDD073nKfEfFb+4JkBcpWRqAiTPnA==}
|
||||
eslint-plugin-react-web-api@2.5.0:
|
||||
resolution: {integrity: sha512-JJUzLld/ErE1KNnj4w9stqfb+LWw2nCXuDmyuT0FvWDZ4qD/wf7FuRERRUZWvz+yFnWAcMaEh/Gttkn7NiULIg==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
typescript: '>=4.8.4 <6.0.0'
|
||||
|
||||
eslint-plugin-react-x@2.4.0:
|
||||
resolution: {integrity: sha512-ufKDXiDoMujcIT97Q6pCQs7j5q6Dtu/0AbXvrbNDLNXWVkCfZ7ayoRKMunvPU+WUHqnnzg9iv0o9QoaWwxG6rw==}
|
||||
eslint-plugin-react-x@2.5.0:
|
||||
resolution: {integrity: sha512-+vdAn6GeZiHhbTRLJmMixJy4VYqH3fgeBJCw1+d5gVa/ip/UMeWslM28wBWt2S7dI3g7s+bSuplXRAhdwGrQ4A==}
|
||||
engines: {node: '>=20.19.0'}
|
||||
peerDependencies:
|
||||
eslint: ^8.57.0 || ^9.0.0
|
||||
@@ -9569,8 +9598,8 @@ packages:
|
||||
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
posthog-node@5.18.0:
|
||||
resolution: {integrity: sha512-SLBEs+sCThxzTGSSDEe97nZHuFFYh6DupObR1yQdvQND3CJh0ogZ0Sa1Vb+Tbrnf0cWbfBC9XNkm44yhaWf3aA==}
|
||||
posthog-node@5.18.1:
|
||||
resolution: {integrity: sha512-Hi7cRqAlvuEitdiurXJFdMip+BxcwYoX66at5RErMVP91V+Ph9BspGiawC3mJx/4znjwUjF29kAhf8oZQ2uJ5Q==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
prelude-ls@1.1.2:
|
||||
@@ -10495,6 +10524,12 @@ packages:
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4'
|
||||
|
||||
ts-api-utils@2.3.0:
|
||||
resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==}
|
||||
engines: {node: '>=18.12'}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4'
|
||||
|
||||
ts-declaration-location@1.0.7:
|
||||
resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==}
|
||||
peerDependencies:
|
||||
@@ -11075,8 +11110,8 @@ packages:
|
||||
zod@4.1.12:
|
||||
resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==}
|
||||
|
||||
zod@4.2.1:
|
||||
resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==}
|
||||
zod@4.3.2:
|
||||
resolution: {integrity: sha512-b8L8yn4rIVfiXyHAmnr52/ZEpDumlT0bmxiq3Ws1ybrinhflGpt12Hvv54kYnEsGPRs6o/Ka3/ppA2OWY21IVg==}
|
||||
|
||||
zustand@4.5.7:
|
||||
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
|
||||
@@ -11102,7 +11137,7 @@ snapshots:
|
||||
|
||||
'@alloc/quick-lru@5.2.0': {}
|
||||
|
||||
'@antfu/eslint-config@6.7.3(@eslint-react/eslint-plugin@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.26)(eslint-plugin-format@1.1.0(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@27.0.1)(sass@1.87.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
|
||||
'@antfu/eslint-config@6.7.3(@eslint-react/eslint-plugin@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.26)(eslint-plugin-format@1.1.0(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@25.0.3)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@27.0.1)(sass@1.87.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
|
||||
dependencies:
|
||||
'@antfu/install-pkg': 1.1.0
|
||||
'@clack/prompts': 0.11.0
|
||||
@@ -11142,7 +11177,7 @@ snapshots:
|
||||
vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@2.6.1))
|
||||
yaml-eslint-parser: 1.3.2
|
||||
optionalDependencies:
|
||||
'@eslint-react/eslint-plugin': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eslint-plugin': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-format: 1.1.0(eslint@9.39.1(jiti@2.6.1))
|
||||
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
|
||||
eslint-plugin-react-refresh: 0.4.26(eslint@9.39.1(jiti@2.6.1))
|
||||
@@ -11961,27 +11996,27 @@ snapshots:
|
||||
|
||||
'@eslint-community/regexpp@4.12.2': {}
|
||||
|
||||
'@eslint-react/ast@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
'@eslint-react/ast@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3)
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
string-ts: 2.3.1
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint-react/core@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
'@eslint-react/core@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
birecord: 0.1.1
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
ts-pattern: 5.9.0
|
||||
@@ -11989,45 +12024,45 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint-react/eff@2.4.0': {}
|
||||
'@eslint-react/eff@2.5.0': {}
|
||||
|
||||
'@eslint-react/eslint-plugin@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
'@eslint-react/eslint-plugin@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/type-utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/type-utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
eslint-plugin-react-dom: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-hooks-extra: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-naming-convention: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-web-api: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-x: 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
ts-api-utils: 2.1.0(typescript@5.9.3)
|
||||
eslint-plugin-react-dom: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-hooks-extra: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-naming-convention: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-web-api: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-react-x: 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
ts-api-utils: 2.3.0(typescript@5.9.3)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint-react/shared@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
'@eslint-react/shared@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
ts-pattern: 5.9.0
|
||||
typescript: 5.9.3
|
||||
zod: 4.2.1
|
||||
zod: 4.3.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint-react/var@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
'@eslint-react/var@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
ts-pattern: 5.9.0
|
||||
typescript: 5.9.3
|
||||
@@ -13288,16 +13323,6 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
redent: 3.0.0
|
||||
|
||||
'@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.27.1
|
||||
'@testing-library/dom': 10.4.0
|
||||
react: 19.2.3
|
||||
react-dom: 19.2.3(react@19.2.3)
|
||||
optionalDependencies:
|
||||
'@types/react': 19.2.7
|
||||
'@types/react-dom': 19.2.3(@types/react@19.2.7)
|
||||
|
||||
'@testing-library/react@16.3.1(@testing-library/dom@10.4.0)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.28.4
|
||||
@@ -13523,15 +13548,33 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/project-service@8.51.0(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
debug: 4.4.3
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/scope-manager@8.50.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/visitor-keys': 8.50.1
|
||||
|
||||
'@typescript-eslint/scope-manager@8.51.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/visitor-keys': 8.51.0
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)':
|
||||
dependencies:
|
||||
typescript: 5.9.3
|
||||
|
||||
'@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)':
|
||||
dependencies:
|
||||
typescript: 5.9.3
|
||||
|
||||
'@typescript-eslint/type-utils@8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
@@ -13544,8 +13587,22 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/type-utils@8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
debug: 4.4.3
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
ts-api-utils: 2.3.0(typescript@5.9.3)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/types@8.50.1': {}
|
||||
|
||||
'@typescript-eslint/types@8.51.0': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/project-service': 8.50.1(typescript@5.9.3)
|
||||
@@ -13561,6 +13618,21 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/project-service': 8.51.0(typescript@5.9.3)
|
||||
'@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/visitor-keys': 8.51.0
|
||||
debug: 4.4.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.7.3
|
||||
tinyglobby: 0.2.15
|
||||
ts-api-utils: 2.3.0(typescript@5.9.3)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
|
||||
@@ -13572,11 +13644,27 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.50.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.51.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
eslint-visitor-keys: 4.2.1
|
||||
|
||||
'@univerjs/icons-svg@1.1.0': {}
|
||||
|
||||
'@univerjs/icons@1.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
|
||||
@@ -13876,7 +13964,7 @@ snapshots:
|
||||
'@webassemblyjs/ast': 1.14.1
|
||||
'@xtuc/long': 4.2.2
|
||||
|
||||
'@wendellhu/redi@1.0.1(react@19.2.3)':
|
||||
'@wendellhu/redi@1.1.0(react@19.2.3)':
|
||||
optionalDependencies:
|
||||
react: 19.2.3
|
||||
|
||||
@@ -15314,16 +15402,16 @@ snapshots:
|
||||
yaml: 2.8.2
|
||||
yaml-eslint-parser: 1.3.2
|
||||
|
||||
eslint-plugin-react-dom@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
eslint-plugin-react-dom@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
compare-versions: 6.1.1
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
string-ts: 2.3.1
|
||||
@@ -15332,17 +15420,17 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-hooks-extra@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
eslint-plugin-react-hooks-extra@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/type-utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/type-utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
string-ts: 2.3.1
|
||||
ts-pattern: 5.9.0
|
||||
@@ -15361,17 +15449,17 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-naming-convention@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
eslint-plugin-react-naming-convention@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/type-utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/type-utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
string-ts: 2.3.1
|
||||
ts-pattern: 5.9.0
|
||||
@@ -15383,16 +15471,16 @@ snapshots:
|
||||
dependencies:
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
|
||||
eslint-plugin-react-web-api@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
eslint-plugin-react-web-api@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
string-ts: 2.3.1
|
||||
ts-pattern: 5.9.0
|
||||
@@ -15400,22 +15488,22 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-x@2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
eslint-plugin-react-x@2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.4.0
|
||||
'@eslint-react/shared': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.50.1
|
||||
'@typescript-eslint/type-utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.50.1
|
||||
'@typescript-eslint/utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/ast': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/core': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/eff': 2.5.0
|
||||
'@eslint-react/shared': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@eslint-react/var': 2.5.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.51.0
|
||||
'@typescript-eslint/type-utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.51.0
|
||||
'@typescript-eslint/utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
compare-versions: 6.1.1
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
is-immutable-type: 5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
string-ts: 2.3.1
|
||||
ts-api-utils: 2.1.0(typescript@5.9.3)
|
||||
ts-api-utils: 2.3.0(typescript@5.9.3)
|
||||
ts-pattern: 5.9.0
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
@@ -16227,9 +16315,9 @@ snapshots:
|
||||
|
||||
is-immutable-type@5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@typescript-eslint/type-utils': 8.50.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/type-utils': 8.51.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 9.39.1(jiti@2.6.1)
|
||||
ts-api-utils: 2.1.0(typescript@5.9.3)
|
||||
ts-api-utils: 2.3.0(typescript@5.9.3)
|
||||
ts-declaration-location: 1.0.7(typescript@5.9.3)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
@@ -17852,7 +17940,7 @@ snapshots:
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
posthog-node@5.18.0:
|
||||
posthog-node@5.18.1:
|
||||
dependencies:
|
||||
'@posthog/core': 1.9.0
|
||||
|
||||
@@ -18946,6 +19034,10 @@ snapshots:
|
||||
dependencies:
|
||||
typescript: 5.9.3
|
||||
|
||||
ts-api-utils@2.3.0(typescript@5.9.3):
|
||||
dependencies:
|
||||
typescript: 5.9.3
|
||||
|
||||
ts-declaration-location@1.0.7(typescript@5.9.3):
|
||||
dependencies:
|
||||
picomatch: 4.0.3
|
||||
@@ -19542,7 +19634,7 @@ snapshots:
|
||||
|
||||
zod@4.1.12: {}
|
||||
|
||||
zod@4.2.1: {}
|
||||
zod@4.3.2: {}
|
||||
|
||||
zustand@4.5.7(@types/react@19.2.7)(react@19.2.3):
|
||||
dependencies:
|
||||
|
||||
Reference in New Issue
Block a user