diff --git a/apps/data-studio/package.json b/apps/data-studio/package.json
index edeca1826..74aa353c4 100644
--- a/apps/data-studio/package.json
+++ b/apps/data-studio/package.json
@@ -13,7 +13,7 @@
"antd": "5.15.3",
"apollo-cache-inmemory": "1.6.6",
"apollo-upload-client": "14.1.3",
- "aristid-ds": "9.0.0-dd980fc",
+ "aristid-ds": "10.0.0-1473f00",
"dayjs": "1.11.10",
"graphql": "15.0.0",
"graphql-tag": "2.12.6",
diff --git a/apps/login/package.json b/apps/login/package.json
index 8415ebf66..94a7c76b1 100644
--- a/apps/login/package.json
+++ b/apps/login/package.json
@@ -7,7 +7,7 @@
"@ant-design/icons": "5.2.6",
"@leav/ui": "workspace:libs/ui",
"antd": "5.15.3",
- "aristid-ds": "9.0.0-dd980fc",
+ "aristid-ds": "10.0.0-1473f00",
"i18next": "22.5.0",
"i18next-browser-languagedetector": "7.0.2",
"i18next-http-backend": "2.1.1",
diff --git a/apps/portal/package.json b/apps/portal/package.json
index 600dfd08d..9c2b206e5 100644
--- a/apps/portal/package.json
+++ b/apps/portal/package.json
@@ -8,7 +8,7 @@
"@leav/ui": "workspace:libs/ui",
"@leav/utils": "workspace:libs/utils",
"antd": "5.15.3",
- "aristid-ds": "9.0.0-dd980fc",
+ "aristid-ds": "10.0.0-1473f00",
"cross-fetch": "3.1.5",
"graphql-ws": "5.12.0",
"i18next": "22.5.0",
diff --git a/libs/ui/package.json b/libs/ui/package.json
index 241cfc4aa..a335fe093 100644
--- a/libs/ui/package.json
+++ b/libs/ui/package.json
@@ -50,7 +50,7 @@
"@ant-design/icons": ">=5.2",
"@apollo/client": ">=3.8.1",
"antd": "5.15.3",
- "aristid-ds": ">=8.0.0",
+ "aristid-ds": "10.0.0-1473f00",
"dayjs": "^1.11.10",
"i18next": "22.5",
"react": "18.2.0",
diff --git a/libs/ui/src/_tests/testUtils.tsx b/libs/ui/src/_tests/testUtils.tsx
index 932813cd8..20155a13b 100644
--- a/libs/ui/src/_tests/testUtils.tsx
+++ b/libs/ui/src/_tests/testUtils.tsx
@@ -50,7 +50,8 @@ const Providers = ({children, mocks, cacheSettings, routerProps}: PropsWithChild
};
// Wrapper around testing-library's render to automatically render apollo's provider and redux store provider
-const renderWithProviders = (ui: ReactElement, options?: ICustomRenderOptions): RenderResult => render(ui, {wrapper: props => , ...options});
+const renderWithProviders = (ui: ReactElement, options?: ICustomRenderOptions): RenderResult =>
+ render(ui, {wrapper: props => , ...options});
const renderHookWithProviders = <
Result,
@@ -63,8 +64,51 @@ const renderHookWithProviders = <
options?: ICustomRenderHookOptions
) => renderHook(hook, {wrapper: props => , ...options});
+const mockBrowserFunctionsForTiptap = () => {
+ const originalElementFromPoint = document.elementFromPoint;
+ const originalHTMLElementGetBoundingClientRect = HTMLElement.prototype.getBoundingClientRect;
+ const originalHTMLElementGetClientRects = HTMLElement.prototype.getClientRects;
+ const originalRangeGetBoundingClientRect = Range.prototype.getBoundingClientRect;
+ const originalRangeGetClientRects = Range.prototype.getClientRects;
+
+ function getBoundingClientRect(): DOMRect {
+ const rec = {
+ x: 0,
+ y: 0,
+ bottom: 0,
+ height: 0,
+ left: 0,
+ right: 0,
+ top: 0,
+ width: 0
+ };
+ return {...rec, toJSON: () => rec};
+ }
+
+ class FakeDOMRectList extends Array implements DOMRectList {
+ item(index: number): DOMRect | null {
+ return this[index];
+ }
+ }
+
+ document.elementFromPoint = (): null => null;
+ HTMLElement.prototype.getBoundingClientRect = getBoundingClientRect;
+ HTMLElement.prototype.getClientRects = (): DOMRectList => new FakeDOMRectList();
+ Range.prototype.getBoundingClientRect = getBoundingClientRect;
+ Range.prototype.getClientRects = (): DOMRectList => new FakeDOMRectList();
+
+ return () => {
+ document.elementFromPoint = originalElementFromPoint;
+ HTMLElement.prototype.getBoundingClientRect = originalHTMLElementGetBoundingClientRect;
+ HTMLElement.prototype.getClientRects = originalHTMLElementGetClientRects;
+ Range.prototype.getBoundingClientRect = originalRangeGetBoundingClientRect;
+ Range.prototype.getClientRects = originalRangeGetClientRects;
+ };
+};
+
// Re-export everything from testing-library to improve DX. You can everything you need from this file when you use this
// custom render
export * from '@testing-library/react';
+export {mockBrowserFunctionsForTiptap};
export {renderWithProviders as render};
export {renderHookWithProviders as renderHook};
diff --git a/libs/ui/src/components/RecordEdition/EditRecordContent/antdUtils.tsx b/libs/ui/src/components/RecordEdition/EditRecordContent/antdUtils.tsx
index c0b0c1519..e123b3e5d 100644
--- a/libs/ui/src/components/RecordEdition/EditRecordContent/antdUtils.tsx
+++ b/libs/ui/src/components/RecordEdition/EditRecordContent/antdUtils.tsx
@@ -62,6 +62,7 @@ export const getAntdFormInitialValues = (recordForm: IRecordForm) =>
switch (attribute.format) {
case AttributeFormat.text:
+ case AttributeFormat.rich_text:
case AttributeFormat.boolean:
acc[attribute.id] = standardValue.raw_value;
break;
diff --git a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldRichText.test.tsx b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldRichText.test.tsx
index 5b429fc31..549c4151c 100644
--- a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldRichText.test.tsx
+++ b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldRichText.test.tsx
@@ -1,7 +1,7 @@
// Copyright LEAV Solutions 2017
// This file is released under LGPL V3
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
-import {render, screen, waitFor} from '_ui/_tests/testUtils';
+import {mockBrowserFunctionsForTiptap, render, screen, waitFor} from '_ui/_tests/testUtils';
import userEvent from '@testing-library/user-event';
import StandardField from '../StandardField';
import {
@@ -18,6 +18,12 @@ import {mockFormElementInput} from '_ui/__mocks__/common/form';
import {mockFormAttribute} from '_ui/__mocks__/common/attribute';
import {Suspense} from 'react';
+const tiptapCleanup = mockBrowserFunctionsForTiptap();
+
+afterAll(() => {
+ tiptapCleanup();
+});
+
describe('StandardField, Rich Text input', () => {
const mockRecordValuesCommon = {
created_at: 123456789,
@@ -99,25 +105,17 @@ describe('StandardField, Rich Text input', () => {
);
- await waitFor(
- () => {
- screen.getByTestId('ckeditor');
- },
- {timeout: 5000}
- );
-
- const richTextElem = screen.getByTestId('ckeditor');
+ const richTextElem = screen.getByRole('textbox');
await userEvent.click(richTextElem);
- const richTextElemOpen = screen.getByRole('textbox');
+ const richTextElemOpen = richTextElem.parentElement.previousSibling as HTMLElement;
+ const menuBarClassNames = richTextElemOpen?.getAttribute('class');
+ expect(menuBarClassNames).toContain('menu-bar');
expect(richTextElemOpen).toBeInTheDocument();
- await userEvent.click(richTextElemOpen);
-
- const toolBarElem = screen.getByRole('toolbar');
- expect(toolBarElem).toBeInTheDocument();
+ await userEvent.type(richTextElem, 'new value');
- await userEvent.click(screen.getByRole('button', {name: 'global.submit'}));
+ await userEvent.click(document.body);
expect(mockHandleSubmit).toHaveBeenCalled();
});
});
diff --git a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.test.tsx b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.test.tsx
new file mode 100644
index 000000000..effb8e2c6
--- /dev/null
+++ b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.test.tsx
@@ -0,0 +1,289 @@
+// Copyright LEAV Solutions 2017
+// This file is released under LGPL V3
+// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
+import {mockBrowserFunctionsForTiptap, render, screen} from '_ui/_tests/testUtils';
+import {DSRichTextWrapper} from './DSRichTextWrapper';
+import {FieldScope} from '../../../_types';
+import {
+ InheritedFlags,
+ IStandardFieldReducerState,
+ StandardFieldValueState
+} from '../../../reducers/standardFieldReducer/standardFieldReducer';
+import {mockRecord} from '_ui/__mocks__/common/record';
+import {mockFormElementInput} from '_ui/__mocks__/common/form';
+import {mockAttributeLink} from '_ui/__mocks__/common/attribute';
+import userEvent from '@testing-library/user-event';
+import {AntForm} from 'aristid-ds';
+import {RecordFormAttributeFragment} from '_ui/_gqlTypes';
+
+const en_label = 'label';
+const fr_label = 'libellé';
+const idValue = '123';
+const mockValue = {
+ index: 0,
+ displayValue: 'my value
',
+ editingValue: 'my my raw value
',
+ originRawValue: 'my my raw value
',
+ idValue: null,
+ isEditing: false,
+ isErrorDisplayed: false,
+ value: {
+ id_value: null,
+ value: 'my my value
',
+ raw_value: 'my my raw value
',
+ modified_at: null,
+ created_at: null,
+ created_by: null,
+ modified_by: null
+ },
+ version: null,
+ error: '',
+ state: StandardFieldValueState.PRISTINE
+};
+
+const getInitialState = (required: boolean, fallbackLang = false): IStandardFieldReducerState => ({
+ record: mockRecord,
+ formElement: {
+ ...mockFormElementInput,
+ settings: {
+ label: fallbackLang ? {en: en_label} : {fr: fr_label, en: en_label},
+ required
+ }
+ },
+ attribute: mockAttributeLink,
+ isReadOnly: false,
+ activeScope: FieldScope.CURRENT,
+ values: {
+ [FieldScope.CURRENT]: {
+ version: null,
+ values: {[idValue]: mockValue}
+ },
+ [FieldScope.INHERITED]: null
+ },
+ metadataEdit: false,
+ inheritedValue: null,
+ isInheritedNotOverrideValue: false,
+ isInheritedOverrideValue: false,
+ isInheritedValue: false
+});
+
+const inheritedValues = [
+ {
+ isInherited: null,
+ value: 'override value',
+ raw_value: 'override value'
+ },
+ {
+ isInherited: true,
+ value: 'inherited value',
+ raw_value: 'inherited value'
+ }
+];
+
+const inheritedNotOverrideValue: InheritedFlags = {
+ isInheritedValue: true,
+ isInheritedOverrideValue: false,
+ isInheritedNotOverrideValue: true,
+ inheritedValue: {raw_value: inheritedValues[1].raw_value}
+};
+
+const inheritedOverrideValue: InheritedFlags = {
+ isInheritedValue: true,
+ isInheritedOverrideValue: true,
+ isInheritedNotOverrideValue: false,
+ inheritedValue: {raw_value: inheritedValues[1].raw_value}
+};
+
+const tiptapCleanup = mockBrowserFunctionsForTiptap();
+
+describe('DSRichTextWrapper', () => {
+ afterAll(() => {
+ tiptapCleanup();
+ });
+
+ const mockHandleSubmit = jest.fn();
+ const mockOnChange = jest.fn();
+ let user!: ReturnType;
+
+ beforeEach(() => {
+ user = userEvent.setup({});
+ mockOnChange.mockReset();
+ mockHandleSubmit.mockReset();
+ });
+
+ test('Should display input with fr label ', async () => {
+ const state = getInitialState(false, false);
+ render(
+
+
+
+
+
+ );
+
+ expect(screen.getByText(fr_label)).toBeVisible();
+ });
+
+ test('Should display input with fallback label ', async () => {
+ const state = getInitialState(false, true);
+ render(
+
+
+
+
+
+ );
+
+ expect(screen.getByText(en_label)).toBeVisible();
+ });
+
+ test('Should submit empty value if field is not required', async () => {
+ const state = getInitialState(false);
+ render(
+
+
+
+
+
+ );
+
+ const input = screen.getByRole('textbox');
+ await user.click(input);
+ await user.click(document.body);
+
+ expect(mockHandleSubmit).toHaveBeenCalledWith('', state.attribute.id);
+ expect(mockOnChange).toHaveBeenCalled();
+ });
+
+ describe('With required input and no inheritance', () => {
+ test('Should submit the value if field is not empty', async () => {
+ const state = getInitialState(true);
+ render(
+
+
+
+
+
+ );
+
+ const text = 'text';
+ const input = screen.getByRole('textbox');
+ await user.click(input);
+ await user.type(input, text);
+ await user.click(document.body);
+
+ expect(mockHandleSubmit).toHaveBeenCalledWith(`${text}
`, state.attribute.id);
+ expect(mockOnChange).toHaveBeenCalled();
+ });
+
+ test('Should submit the default value if field is empty', async () => {
+ const state = getInitialState(true);
+ render(
+
+
+
+
+
+ );
+
+ const input = screen.getByRole('textbox');
+ await user.click(input);
+ await user.click(document.body);
+
+ expect(mockHandleSubmit).toHaveBeenCalledWith(mockValue.originRawValue, state.attribute.id);
+ });
+ });
+
+ describe('With inheritance', () => {
+ test("Should display the inherited value by default and not save if we don't change it", async () => {
+ let state = getInitialState(false);
+ state = {
+ ...state,
+ ...inheritedNotOverrideValue,
+ formElement: {...state.formElement, values: inheritedValues}
+ };
+ render(
+
+
+
+
+
+ );
+
+ const input = screen.getByRole('textbox');
+ expect(input).toContainHTML(inheritedValues[1].raw_value);
+
+ await user.click(input);
+ await user.click(document.body);
+
+ expect(mockHandleSubmit).not.toHaveBeenCalled();
+ });
+
+ test('Should display the override value in the input and inherited value under it', async () => {
+ let state = getInitialState(false);
+ state = {
+ ...state,
+ ...inheritedOverrideValue,
+ formElement: {...state.formElement, values: inheritedValues}
+ };
+
+ render(
+
+
+
+
+
+ );
+
+ const input = screen.getByRole('textbox');
+ const helperText = screen.getByText(/inherited value/);
+ expect(input).toContainHTML(inheritedValues[0].raw_value);
+ expect(helperText).toBeInTheDocument();
+ });
+ });
+});
diff --git a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.tsx b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.tsx
new file mode 100644
index 000000000..8631e2799
--- /dev/null
+++ b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/DSRichTextWrapper.tsx
@@ -0,0 +1,102 @@
+// Copyright LEAV Solutions 2017
+// This file is released under LGPL V3
+// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
+import {FunctionComponent, useEffect, useRef, useState} from 'react';
+import {
+ IStandardFieldReducerState,
+ IStandardFieldValue
+} from '../../../reducers/standardFieldReducer/standardFieldReducer';
+import {Form, InputProps} from 'antd';
+import {IProvidedByAntFormItem} from '_ui/components/RecordEdition/EditRecordContent/_types';
+import styled from 'styled-components';
+import {useSharedTranslation} from '_ui/hooks/useSharedTranslation';
+import {useValueDetailsButton} from '_ui/components/RecordEdition/EditRecordContent/shared/ValueDetailsBtn/useValueDetailsButton';
+import {RecordFormAttributeFragment} from '_ui/_gqlTypes';
+import {useLang} from '_ui/hooks';
+import {localizedTranslation} from '@leav/utils';
+import {KitRichText} from 'aristid-ds';
+
+interface IDSRichTextWrapperProps extends IProvidedByAntFormItem {
+ state: IStandardFieldReducerState;
+ attribute: RecordFormAttributeFragment;
+ fieldValue: IStandardFieldValue;
+ handleSubmit: (value: string, id?: string) => void;
+ shouldShowValueDetailsButton?: boolean;
+}
+
+const KitRichTextStyled = styled(KitRichText)<{$shouldHighlightColor: boolean}>`
+ color: ${({$shouldHighlightColor}) => ($shouldHighlightColor ? 'var(--general-colors-primary-400)' : 'initial')};
+`;
+
+const isEmptyValue = value => !value || value === '';
+
+export const DSRichTextWrapper: FunctionComponent = ({
+ value,
+ onChange,
+ state,
+ attribute,
+ fieldValue,
+ handleSubmit,
+ shouldShowValueDetailsButton = false
+}) => {
+ const {t} = useSharedTranslation();
+ const {errors} = Form.Item.useStatus();
+ const {onValueDetailsButtonClick} = useValueDetailsButton({
+ value: fieldValue?.value,
+ attribute
+ });
+ const [hasChanged, setHasChanged] = useState(false);
+ const {lang: availableLang} = useLang();
+
+ const _resetToInheritedValue = () => {
+ setHasChanged(false);
+ onChange(state.inheritedValue.raw_value);
+ handleSubmit('', state.attribute.id);
+ };
+
+ const _handleOnBlur = inputValue => {
+ const valueToSubmit = isEmptyValue(inputValue) ? '' : inputValue;
+
+ if (valueToSubmit === '' && state.isInheritedValue) {
+ _resetToInheritedValue();
+ return;
+ }
+ if (hasChanged || !state.isInheritedValue) {
+ handleSubmit(valueToSubmit, state.attribute.id);
+ }
+ onChange(valueToSubmit);
+ return;
+ };
+
+ const _handleOnChange = inputValue => {
+ setHasChanged(true);
+ if (state.isInheritedValue && isEmptyValue(inputValue)) {
+ _resetToInheritedValue();
+ return;
+ }
+ onChange(inputValue);
+ };
+
+ const label = localizedTranslation(state.formElement.settings.label, availableLang);
+
+ return (
+ 0 ? 'error' : undefined}
+ helper={
+ state.isInheritedOverrideValue
+ ? t('record_edition.inherited_input_helper', {
+ inheritedValue: state.inheritedValue.raw_value
+ })
+ : undefined
+ }
+ value={value as string}
+ disabled={state.isReadOnly}
+ onChange={_handleOnChange}
+ onBlur={_handleOnBlur}
+ $shouldHighlightColor={!hasChanged && state.isInheritedNotOverrideValue}
+ />
+ );
+};
diff --git a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.tsx b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.tsx
index 17c61b7d8..caf193136 100644
--- a/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.tsx
+++ b/libs/ui/src/components/RecordEdition/EditRecordContent/uiElements/StandardField/StandardFieldValue/StandardFieldValue.tsx
@@ -50,8 +50,9 @@ import {IValueOfValuesList} from './ValuesList/ValuesList';
import {useLang} from '_ui/hooks';
import {DSDatePickerWrapper} from './DSDatePickerWrapper';
import {DSBooleanWrapper} from './DSBooleanWrapper';
-import { DSInputPasswordWrapper } from './DSInputPasswordWrapper';
-import { DSInputNumberWrapper } from './DSInputNumberWrapper';
+import {DSInputPasswordWrapper} from './DSInputPasswordWrapper';
+import {DSInputNumberWrapper} from './DSInputNumberWrapper';
+import {DSRichTextWrapper} from './DSRichTextWrapper';
const ErrorMessage = styled.div`
color: ${themeVars.errorColor};
@@ -559,10 +560,11 @@ function StandardFieldValue({
AttributeFormat.numeric,
AttributeFormat.encrypted,
AttributeFormat.date,
- AttributeFormat.boolean
+ AttributeFormat.boolean,
+ AttributeFormat.rich_text
];
- const attributeFormatsWithoutDS = [AttributeFormat.color, AttributeFormat.extended, AttributeFormat.rich_text];
+ const attributeFormatsWithoutDS = [AttributeFormat.color, AttributeFormat.extended];
return (
<>
@@ -621,6 +623,15 @@ function StandardFieldValue({
shouldShowValueDetailsButton={editRecordState.withInfoButton}
/>
)}
+ {attribute.format === AttributeFormat.rich_text && (
+
+ )}
{attribute.format === AttributeFormat.boolean && (
)}
diff --git a/yarn.lock b/yarn.lock
index ce5a55025..e98edc9fe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8107,7 +8107,7 @@ __metadata:
"@ant-design/icons": ">=5.2"
"@apollo/client": ">=3.8.1"
antd: 5.15.3
- aristid-ds: ">=8.0.0"
+ aristid-ds: 10.0.0-1473f00
dayjs: ^1.11.10
i18next: 22.5
react: 18.2.0
@@ -8532,6 +8532,13 @@ __metadata:
languageName: node
linkType: hard
+"@popperjs/core@npm:^2.9.0":
+ version: 2.11.8
+ resolution: "@popperjs/core@npm:2.11.8"
+ checksum: ddd16090cde777aaf102940f05d0274602079a95ad9805bd20bc55dcc7c3a2ba1b99dd5c73e5cc2753c3d31250ca52a67d58059459d7d27debb983a9f552936c
+ languageName: node
+ linkType: hard
+
"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2":
version: 1.1.2
resolution: "@protobufjs/aspromise@npm:1.1.2"
@@ -8778,6 +8785,13 @@ __metadata:
languageName: node
linkType: hard
+"@remirror/core-constants@npm:3.0.0":
+ version: 3.0.0
+ resolution: "@remirror/core-constants@npm:3.0.0"
+ checksum: de15b1df099a7646739e5fb6bb55195618a8ac4fa938db7c719e867eefd72ebc5a05865591788ade449613141619cc1002fb6c0f824de4468dfefa951fbf19a2
+ languageName: node
+ linkType: hard
+
"@remix-run/router@npm:1.15.0":
version: 1.15.0
resolution: "@remix-run/router@npm:1.15.0"
@@ -9373,6 +9387,341 @@ __metadata:
languageName: node
linkType: hard
+"@tiptap/core@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/core@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/pm": ^2.7.0
+ checksum: 16e83ff71b7c15a0e65bb094605cd6c9b15b78648231b2e9f21730c0350197d0f830658c3a697d4ad98237e0126417847393ab07828d64bc869cee252822c724
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-blockquote@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-blockquote@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: c5dd539d7e5b24a60433047efb12ad7b83411c430603f8bb79977665d74fb9378c4bc14a183195f2e04f512b5a73d44dddfc97fc65cf6ce8a81808ae771d2cc7
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-bold@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-bold@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 5074bdb0e33693ae9a7f84880a86122f8550d8c8bfa0408be6a471e2d53549a1470418c8ecce51f28aedeba9379ab843c092e399ab35d7c90158f452e6e27564
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-bubble-menu@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-bubble-menu@npm:2.8.0"
+ dependencies:
+ tippy.js: "npm:^6.3.7"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: af53591cc784b8dc5800ece135cce6990d278e334478ae99ca875927cfeaf94bf95fb61f1f23cd95a7c38315538596a0bcfc5da09a7543fef39165a36b0c60bf
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-bullet-list@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-bullet-list@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/extension-list-item": ^2.7.0
+ "@tiptap/extension-text-style": ^2.7.0
+ checksum: 335a501c54d2d107a7dbd562b4e3e97e513849563ecff6d52b68c9a721d61bedd69e266bce2a052d4f406f06995df8b4d3de1ce1aad27a4548ed9831023d512a
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-character-count@npm:^2.7.4":
+ version: 2.8.0
+ resolution: "@tiptap/extension-character-count@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 015f26eec776823ad74d591fd2849bf1f7416564ea93048dedfc70ce08eb8993608bdd06d8b7298a02e0b4f40fb27a81bd1054f6155a0395da08c6f3aeb91f93
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-code-block@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-code-block@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 22eeffbca5165af1952afb80379d2352246911d9f106790105f4f061a66dba5c8928b66936ced6ee5301019522430a1f97fc6123536303ffe69d4f317e6fd80f
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-code@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-code@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 75ae671763aac054adf4fbfcfa72b296bf3547dd954f4194418de56da28ace3924565a0de53e9d1dd7fc61caa2293c9f5bba88fc80f63e2aa420b51b7d453b39
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-document@npm:^2.7.2, @tiptap/extension-document@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-document@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: e5c9b6a2201f88926b942c1250d91d59457b263cfb54b8b34d4c8a680d8ad1851c49d03f6b4c2c04346c742b71e0d9d1b0370d04d95a3452a5b2c0347549d1f2
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-dropcursor@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-dropcursor@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 0c6809d513e6fb59f8f165684d588c35cf657aca7b3fb1262878a528f824f9d3d14fbcce33212d52b58cf50a6f1947af74c9394339ef21a6cc6637c45b10b76c
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-floating-menu@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-floating-menu@npm:2.8.0"
+ dependencies:
+ tippy.js: "npm:^6.3.7"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 4435e2c3930fcbebfd92c08f2327d3de5291021510a657d4ee22db45a83c9aa15c789b995f21540df22dacdfbfcbbe48c25e876747d08c8b22767254a7351d51
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-gapcursor@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-gapcursor@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: dad7c4dfa482c05b70ed72219eeeebf3e6f894a9423d7747568f37202530b6063360724c2da7481c6a694e5caf389375962508d54c3c17fb71b295fa9d2871af
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-hard-break@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-hard-break@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 14af78eb1bb207999e8cc9c3662e6106e1b7cb72098a2a3f9e1eeb05ba7f6555f0b459abb32d286f6c9c3a3677a91022018904e55b1a1dd0e6d4cbfb914a4903
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-heading@npm:^2.7.2, @tiptap/extension-heading@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-heading@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: d2c060d359b34e8538fffdab104959dbbd3761b756325185884faba3f47a65f8dba98ffd7991b4d7a397f7cd6d690b30616841e317b807255543273d46154588
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-history@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-history@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: c2c3edb88a9b4ba27f35261cef777379418b813e2f9099c3657642246ea133c90eb66fc602e8a5aeae3513339dd69ece9430f75e39a9e0fcea55544478622022
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-horizontal-rule@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-horizontal-rule@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 198fc0f0c4d4955ed5b7a006f5163df7132913f22a692f25fe130cb2c8764b4438860fd216ead32e1db631929fe621cbb0cc4310b20c3b894d5d86ebb191a45d
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-italic@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-italic@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 800cdd65ccd15fd1f0a5c1621ffd937a5646be3fba3f0078314abd1e4df5b69348bb0e33b014d4d8f06fb9cb0191ff9be27dc77f169a57557e047e47906eda97
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-link@npm:^2.7.2":
+ version: 2.8.0
+ resolution: "@tiptap/extension-link@npm:2.8.0"
+ dependencies:
+ linkifyjs: "npm:^4.1.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 861085bb966ec95d897ed79c2ba976ea40940a12823b2a3bd685a103fbd9ea1ba98791c92a93fcd03fb9305a4874ca6f1c712b1f1a87b79bc65f2b77f521b828
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-list-item@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-list-item@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: ead94cf96e0230e074c6052b88220e920d83bcee530ca3d8f7c793f131d521431920c295b83aa0b3f76509918abe9c0792456536fee5622c75843c94cb42b621
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-ordered-list@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-ordered-list@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/extension-list-item": ^2.7.0
+ "@tiptap/extension-text-style": ^2.7.0
+ checksum: 7140e6b59361fb1c34533dd57f8032f8f91eb58170c259d575308aa5139272d61d645d00898517c22b9de7aad95883e87a6d64d3b3792692bda362db81410d9c
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-paragraph@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-paragraph@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 905b64ee1ea9bf7911c7fda31c7fd55acb8dae4c4178da5c892a115dc4c1b3342ea8ddc540c8cb5a50971eb10c3c1154bacf1055a063ad043b3f38bae8857072
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-placeholder@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-placeholder@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 65eb1e3fc3573fef4cae7a0a40ed27c71e842b1904585526c0b60ac559addd42c1799df74561a15e8301e0fee62607677501e546bab600df7256a53579c4723d
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-strike@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-strike@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 56970b9da889b920747535770a726734f56d4a3a3c6b2fbadf781ae4516a1ca1922123bf9bc4aa19c300c1359151d9d93b423d8cbb2390b6db4c94c891705cec
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-text-align@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-text-align@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 9dbb9514ccb75bc83f749e42a68e1c521af3d5baa0d12da452b6d2929163514cfc42104e87ae209b36de22b7249dc7188d0c13fd40cd66d93fe76d88a3de22c2
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-text-style@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-text-style@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 308f7fecea8619786b188745d8dfca7b39018cebd4cedb8774166202a746fa361fe453f1df7b0512dc46b433c3f6333cc969680f135238becf4fb7e7cbb140a6
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-text@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-text@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 34627b19ca68562d84f6d5e2a443355670c3a08689edd59d176949301875d6ba88cc8ba1650df0d3170678a442e76bb787d7ce5ea79f7e788df681fa55209b6a
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-underline@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/extension-underline@npm:2.8.0"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 6e1c5146104a8c4235c7f8a18522447d278cf8ee40487240eaa71a00d9f023c947cd22fffbef95ddb898a960dcdd1aec73f089a5e13b02ab3450e4e46f51c75f
+ languageName: node
+ linkType: hard
+
+"@tiptap/pm@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/pm@npm:2.8.0"
+ dependencies:
+ prosemirror-changeset: "npm:^2.2.1"
+ prosemirror-collab: "npm:^1.3.1"
+ prosemirror-commands: "npm:^1.6.0"
+ prosemirror-dropcursor: "npm:^1.8.1"
+ prosemirror-gapcursor: "npm:^1.3.2"
+ prosemirror-history: "npm:^1.4.1"
+ prosemirror-inputrules: "npm:^1.4.0"
+ prosemirror-keymap: "npm:^1.2.2"
+ prosemirror-markdown: "npm:^1.13.0"
+ prosemirror-menu: "npm:^1.2.4"
+ prosemirror-model: "npm:^1.22.3"
+ prosemirror-schema-basic: "npm:^1.2.3"
+ prosemirror-schema-list: "npm:^1.4.1"
+ prosemirror-state: "npm:^1.4.3"
+ prosemirror-tables: "npm:^1.4.0"
+ prosemirror-trailing-node: "npm:^3.0.0"
+ prosemirror-transform: "npm:^1.10.0"
+ prosemirror-view: "npm:^1.33.10"
+ checksum: 700e346f64f401fde88836fab18f0f9bdafc766509b7c8d938266b6c5e7aa2389ed0447c5e1acc4c02980e5bf49b67d755254cc2ed248039da46752a49afa5e7
+ languageName: node
+ linkType: hard
+
+"@tiptap/react@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/react@npm:2.8.0"
+ dependencies:
+ "@tiptap/extension-bubble-menu": "npm:^2.8.0"
+ "@tiptap/extension-floating-menu": "npm:^2.8.0"
+ "@types/use-sync-external-store": "npm:^0.0.6"
+ fast-deep-equal: "npm:^3"
+ use-sync-external-store: "npm:^1.2.2"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ checksum: c82dac016cee168228bdd4ca3d91be2c2c84c81a0ea92d667747e7f6f72f1ebc66981927e1d893f3653c2671c9cffd6aff4a2b2b5a6b55d1384aca64f9c7f4b1
+ languageName: node
+ linkType: hard
+
+"@tiptap/starter-kit@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "@tiptap/starter-kit@npm:2.8.0"
+ dependencies:
+ "@tiptap/core": "npm:^2.8.0"
+ "@tiptap/extension-blockquote": "npm:^2.8.0"
+ "@tiptap/extension-bold": "npm:^2.8.0"
+ "@tiptap/extension-bullet-list": "npm:^2.8.0"
+ "@tiptap/extension-code": "npm:^2.8.0"
+ "@tiptap/extension-code-block": "npm:^2.8.0"
+ "@tiptap/extension-document": "npm:^2.8.0"
+ "@tiptap/extension-dropcursor": "npm:^2.8.0"
+ "@tiptap/extension-gapcursor": "npm:^2.8.0"
+ "@tiptap/extension-hard-break": "npm:^2.8.0"
+ "@tiptap/extension-heading": "npm:^2.8.0"
+ "@tiptap/extension-history": "npm:^2.8.0"
+ "@tiptap/extension-horizontal-rule": "npm:^2.8.0"
+ "@tiptap/extension-italic": "npm:^2.8.0"
+ "@tiptap/extension-list-item": "npm:^2.8.0"
+ "@tiptap/extension-ordered-list": "npm:^2.8.0"
+ "@tiptap/extension-paragraph": "npm:^2.8.0"
+ "@tiptap/extension-strike": "npm:^2.8.0"
+ "@tiptap/extension-text": "npm:^2.8.0"
+ "@tiptap/pm": "npm:^2.8.0"
+ checksum: 8d0490d0211d0a0ea32885bb429759aa9e3335a036892c38f19ae440ab1b94f3c258fd6c2db9e038fffd99f245b739383a29eb3c0224cc02fe94fab9906f6c03
+ languageName: node
+ linkType: hard
+
"@tokenizer/token@npm:^0.3.0":
version: 0.3.0
resolution: "@tokenizer/token@npm:0.3.0"
@@ -9931,6 +10280,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/linkify-it@npm:^5":
+ version: 5.0.0
+ resolution: "@types/linkify-it@npm:5.0.0"
+ checksum: c3919044d4876f9d71d037e861745cd2485c95ac8c36a4fa67b132d4e60eb1d067e123cc7965c9cf5110eea351517d767f0d306af5e9147d6d0af87bc374ddcf
+ languageName: node
+ linkType: hard
+
"@types/lodash@npm:4.14.156":
version: 4.14.156
resolution: "@types/lodash@npm:4.14.156"
@@ -9966,6 +10322,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/markdown-it@npm:^14.0.0":
+ version: 14.1.2
+ resolution: "@types/markdown-it@npm:14.1.2"
+ dependencies:
+ "@types/linkify-it": "npm:^5"
+ "@types/mdurl": "npm:^2"
+ checksum: ca2f239c8d59610b9f936fd40261a6ccf2fa1ae27a21816c031e5712542dcf9ee01e2fe29b31118df90716e11ade54e47d92a498e9b6488800e77ca8827255a2
+ languageName: node
+ linkType: hard
+
"@types/mdast@npm:^3.0.0, @types/mdast@npm:^3.0.3":
version: 3.0.10
resolution: "@types/mdast@npm:3.0.10"
@@ -9975,6 +10341,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/mdurl@npm:^2":
+ version: 2.0.0
+ resolution: "@types/mdurl@npm:2.0.0"
+ checksum: 78746e96c655ceed63db06382da466fd52c7e9dc54d60b12973dfdd110cae06b9439c4b90e17bb8d4461109184b3ea9f3e9f96b3e4bf4aa9fe18b6ac35f283c8
+ languageName: node
+ linkType: hard
+
"@types/mime@npm:^1":
version: 1.3.2
resolution: "@types/mime@npm:1.3.2"
@@ -10389,6 +10762,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/use-sync-external-store@npm:^0.0.6":
+ version: 0.0.6
+ resolution: "@types/use-sync-external-store@npm:0.0.6"
+ checksum: a95ce330668501ad9b1c5b7f2b14872ad201e552a0e567787b8f1588b22c7040c7c3d80f142cbb9f92d13c4ea41c46af57a20f2af4edf27f224d352abcfe4049
+ languageName: node
+ linkType: hard
+
"@types/uuid@npm:3.4.10":
version: 3.4.10
resolution: "@types/uuid@npm:3.4.10"
@@ -12035,9 +12415,9 @@ __metadata:
languageName: node
linkType: hard
-"aristid-ds@npm:9.0.0-dd980fc":
- version: 9.0.0-dd980fc
- resolution: "aristid-ds@npm:9.0.0-dd980fc"
+"aristid-ds@npm:10.0.0-1473f00":
+ version: 10.0.0-1473f00
+ resolution: "aristid-ds@npm:10.0.0-1473f00"
dependencies:
"@dnd-kit/core": "npm:^6.1.0"
"@dnd-kit/modifiers": "npm:^7.0.0"
@@ -12048,6 +12428,17 @@ __metadata:
"@fortawesome/free-solid-svg-icons": "npm:^6.4.2"
"@fortawesome/react-fontawesome": "npm:^0.2.0"
"@sass-fairy/string": "npm:^1.3.0"
+ "@tiptap/extension-character-count": "npm:^2.7.4"
+ "@tiptap/extension-document": "npm:^2.7.2"
+ "@tiptap/extension-heading": "npm:^2.7.2"
+ "@tiptap/extension-link": "npm:^2.7.2"
+ "@tiptap/extension-placeholder": "npm:^2.8.0"
+ "@tiptap/extension-text-align": "npm:^2.8.0"
+ "@tiptap/extension-text-style": "npm:^2.8.0"
+ "@tiptap/extension-underline": "npm:^2.8.0"
+ "@tiptap/pm": "npm:^2.8.0"
+ "@tiptap/react": "npm:^2.8.0"
+ "@tiptap/starter-kit": "npm:^2.8.0"
antd: "npm:5.15.3"
antd-img-crop: "npm:^4.21.0"
axe-core: "npm:^4.8.1"
@@ -12082,7 +12473,7 @@ __metadata:
react-uuid: ^2.0.0
remark-gfm: ^3.0.1
styled-components: ^6.0.7
- checksum: 3f6fa25d81926e6512f67f41926f063be0f93124ef6ee5aaa6694424b8ac18712a94d3c17c2ac231a883aee85683905d73e2bd6188cad2d2d627f82bfbbd3805
+ checksum: ec1cc988d491267456ed9e08c0d231bf3277edb3a9dc291ad080e502f2449c3c7c1935c1ffbd998c4455c331fced10b11a11ff6f764032c740ea1e6f9bb25d9d
languageName: node
linkType: hard
@@ -14991,6 +15382,13 @@ __metadata:
languageName: node
linkType: hard
+"crelt@npm:^1.0.0":
+ version: 1.0.6
+ resolution: "crelt@npm:1.0.6"
+ checksum: 5ed326ca6bd243b1dba6b943f665b21c2c04be03271824bc48f20dba324b0f8233e221f8c67312526d24af2b1243c023dc05a41bd8bd05d1a479fd2c72fb39c3
+ languageName: node
+ linkType: hard
+
"cross-fetch@npm:3.1.5, cross-fetch@npm:^3.0.4, cross-fetch@npm:^3.1.5":
version: 3.1.5
resolution: "cross-fetch@npm:3.1.5"
@@ -15253,7 +15651,7 @@ __metadata:
apollo: "npm:2.34.0"
apollo-cache-inmemory: "npm:1.6.6"
apollo-upload-client: "npm:14.1.3"
- aristid-ds: "npm:9.0.0-dd980fc"
+ aristid-ds: "npm:10.0.0-1473f00"
commander: "npm:5.1.0"
dayjs: "npm:1.11.10"
graphql: "npm:15.0.0"
@@ -17579,7 +17977,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
+"fast-deep-equal@npm:^3, fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d
@@ -23103,6 +23501,22 @@ __metadata:
languageName: node
linkType: hard
+"linkify-it@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "linkify-it@npm:5.0.0"
+ dependencies:
+ uc.micro: "npm:^2.0.0"
+ checksum: ef3b7609dda6ec0c0be8a7b879cea195f0d36387b0011660cd6711bba0ad82137f59b458b7e703ec74f11d88e7c1328e2ad9b855a8500c0ded67461a8c4519e6
+ languageName: node
+ linkType: hard
+
+"linkifyjs@npm:^4.1.0":
+ version: 4.1.3
+ resolution: "linkifyjs@npm:4.1.3"
+ checksum: 7c17dac6a66fdea30e56b17d49d882a333833ec093993723738842b224c8cbd87bcddc6f51f2deac9529c868f162358d7acb0c44753b92832027ae761eceac1a
+ languageName: node
+ linkType: hard
+
"lint-staged@npm:10.5.3":
version: 10.5.3
resolution: "lint-staged@npm:10.5.3"
@@ -23731,7 +24145,7 @@ __metadata:
"@types/react-dom": "npm:18.2.6"
"@vitejs/plugin-react": "npm:3.1.0"
antd: "npm:5.15.3"
- aristid-ds: "npm:9.0.0-dd980fc"
+ aristid-ds: "npm:10.0.0-1473f00"
i18next: "npm:22.5.0"
i18next-browser-languagedetector: "npm:7.0.2"
i18next-http-backend: "npm:2.1.1"
@@ -24042,6 +24456,22 @@ __metadata:
languageName: node
linkType: hard
+"markdown-it@npm:^14.0.0":
+ version: 14.1.0
+ resolution: "markdown-it@npm:14.1.0"
+ dependencies:
+ argparse: "npm:^2.0.1"
+ entities: "npm:^4.4.0"
+ linkify-it: "npm:^5.0.0"
+ mdurl: "npm:^2.0.0"
+ punycode.js: "npm:^2.3.1"
+ uc.micro: "npm:^2.1.0"
+ bin:
+ markdown-it: bin/markdown-it.mjs
+ checksum: f34f921be178ed0607ba9e3e27c733642be445e9bb6b1dba88da7aafe8ba1bc5d2f1c3aa8f3fc33b49a902da4e4c08c2feadfafb290b8c7dda766208bb6483a9
+ languageName: node
+ linkType: hard
+
"markdown-table@npm:^3.0.0":
version: 3.0.3
resolution: "markdown-table@npm:3.0.3"
@@ -24224,6 +24654,13 @@ __metadata:
languageName: node
linkType: hard
+"mdurl@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdurl@npm:2.0.0"
+ checksum: 1720349d4a53e401aa993241368e35c0ad13d816ad0b28388928c58ca9faa0cf755fa45f18ccbf64f4ce54a845a50ddce5c84e4016897b513096a68dac4b0158
+ languageName: node
+ linkType: hard
+
"media-typer@npm:0.3.0":
version: 0.3.0
resolution: "media-typer@npm:0.3.0"
@@ -25890,6 +26327,13 @@ __metadata:
languageName: node
linkType: hard
+"orderedmap@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "orderedmap@npm:2.1.1"
+ checksum: 082cf970b0b66d1c5a904b07880534092ce8a2f2eea7a52cf111f6c956210fa88226c13866aef4d22a3abe56924f21ead12f7ee8c1dfaf2f63d897a4e7c23328
+ languageName: node
+ linkType: hard
+
"os-tmpdir@npm:~1.0.2":
version: 1.0.2
resolution: "os-tmpdir@npm:1.0.2"
@@ -26479,7 +26923,7 @@ __metadata:
"@vitejs/plugin-react": "npm:3.1.0"
antd: "npm:5.15.3"
apollo: "npm:2.34.0"
- aristid-ds: "npm:9.0.0-dd980fc"
+ aristid-ds: "npm:10.0.0-1473f00"
commander: "npm:10.0.0"
cross-fetch: "npm:3.1.5"
graphql-ws: "npm:5.12.0"
@@ -26784,6 +27228,200 @@ __metadata:
languageName: node
linkType: hard
+"prosemirror-changeset@npm:^2.2.1":
+ version: 2.2.1
+ resolution: "prosemirror-changeset@npm:2.2.1"
+ dependencies:
+ prosemirror-transform: "npm:^1.0.0"
+ checksum: 39c70af95e2a9be8d414d546188656e5d6db4034e2640c887ff72c7ff8e638817ff061b5c08590e8ba8027b5b0c1954dc60b62d2d2a8e3a7b7d6a05453a283ad
+ languageName: node
+ linkType: hard
+
+"prosemirror-collab@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "prosemirror-collab@npm:1.3.1"
+ dependencies:
+ prosemirror-state: "npm:^1.0.0"
+ checksum: 6b1ccc52841fbb62a39ef0fb8da2d731381030609ea7a0ba7d533b1937d56fe4b91344e79c023e790bed5392efe9f917c41c8434e0a379dc1dc842ba83594e34
+ languageName: node
+ linkType: hard
+
+"prosemirror-commands@npm:^1.0.0, prosemirror-commands@npm:^1.6.0":
+ version: 1.6.0
+ resolution: "prosemirror-commands@npm:1.6.0"
+ dependencies:
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.0.0"
+ checksum: 1aeb0b0aa6d80fa7cc013a4cb810090a2b3eee88938bc6e8eb4c4c64ae14a2fed593725cb482b8d3b5ab262488bbd3df5ca0f27b951cea135108496f9d525ade
+ languageName: node
+ linkType: hard
+
+"prosemirror-dropcursor@npm:^1.8.1":
+ version: 1.8.1
+ resolution: "prosemirror-dropcursor@npm:1.8.1"
+ dependencies:
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.1.0"
+ prosemirror-view: "npm:^1.1.0"
+ checksum: a2584dfbbeed3d7f703c1f7f174396ebf85f29e4f31a43e08cb9c7596d6d0b82f1bc73d0bbcd7c25e421d875ef0dc7f0c9918287fffa5267b6c65e89659444d0
+ languageName: node
+ linkType: hard
+
+"prosemirror-gapcursor@npm:^1.3.2":
+ version: 1.3.2
+ resolution: "prosemirror-gapcursor@npm:1.3.2"
+ dependencies:
+ prosemirror-keymap: "npm:^1.0.0"
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-view: "npm:^1.0.0"
+ checksum: 8de9e9c0f7f69ae74a3189a86b3e8a2bd8dd5bd693c18efc5271ad4a4c6777092906c8ac7722ab5d1428de04b13404c676fddef54966ed3606b3040602eb1325
+ languageName: node
+ linkType: hard
+
+"prosemirror-history@npm:^1.0.0, prosemirror-history@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "prosemirror-history@npm:1.4.1"
+ dependencies:
+ prosemirror-state: "npm:^1.2.2"
+ prosemirror-transform: "npm:^1.0.0"
+ prosemirror-view: "npm:^1.31.0"
+ rope-sequence: "npm:^1.3.0"
+ checksum: 7ac68fc8233dcd159bb15c2aaf542fd9aa0524b50523b24de6c8209b1f5eae9545f7fa82d584c93e68b1e910bcae5e07bee1085094aca4c565c607cf737c39b8
+ languageName: node
+ linkType: hard
+
+"prosemirror-inputrules@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "prosemirror-inputrules@npm:1.4.0"
+ dependencies:
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.0.0"
+ checksum: 04453d06a4bb3540e3df254e46bcafd4faaf73cd72f4486a804af598a084ee9cddb9fedd23a09c34c79ed98182b151461f447e4f5920bdd7465327975c773bca
+ languageName: node
+ linkType: hard
+
+"prosemirror-keymap@npm:^1.0.0, prosemirror-keymap@npm:^1.1.2, prosemirror-keymap@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "prosemirror-keymap@npm:1.2.2"
+ dependencies:
+ prosemirror-state: "npm:^1.0.0"
+ w3c-keyname: "npm:^2.2.0"
+ checksum: 75a6db1a8f899918a25606fa5824ffe9dea9729b8fb4346854aa6f0e37a0f8bad40cc1b01eef1046ee442f76afc234c8eb2b1c50a03c8b6062f3cd348694b8be
+ languageName: node
+ linkType: hard
+
+"prosemirror-markdown@npm:^1.13.0":
+ version: 1.13.1
+ resolution: "prosemirror-markdown@npm:1.13.1"
+ dependencies:
+ "@types/markdown-it": "npm:^14.0.0"
+ markdown-it: "npm:^14.0.0"
+ prosemirror-model: "npm:^1.20.0"
+ checksum: 91af650e17e92c1c911c8bbf7dd4c6d5ba56ee140b0fe493e4e4bab85de1121cece3736eeabb7f789ef2b40afd1f6abe870f908213ce1918fd590257a8932c6c
+ languageName: node
+ linkType: hard
+
+"prosemirror-menu@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "prosemirror-menu@npm:1.2.4"
+ dependencies:
+ crelt: "npm:^1.0.0"
+ prosemirror-commands: "npm:^1.0.0"
+ prosemirror-history: "npm:^1.0.0"
+ prosemirror-state: "npm:^1.0.0"
+ checksum: 1148419fd115e86d43096d1e7574fd657547ac8875ee34ae9a2056b15f3bcc6ca104aaa305cde5ff72f19d4c4cfc9989909271d6cd317549d749a15aa4c2e2a1
+ languageName: node
+ linkType: hard
+
+"prosemirror-model@npm:^1.0.0, prosemirror-model@npm:^1.19.0, prosemirror-model@npm:^1.20.0, prosemirror-model@npm:^1.21.0, prosemirror-model@npm:^1.22.3, prosemirror-model@npm:^1.8.1":
+ version: 1.23.0
+ resolution: "prosemirror-model@npm:1.23.0"
+ dependencies:
+ orderedmap: "npm:^2.0.0"
+ checksum: ecffd212ae140dd05ded5c36c9f76df4c07c2db348c7330d288face2c2d5de928e3cf85df49f65b2b6dad3297515524973dd378beb64351d42c0cc166cf4a1df
+ languageName: node
+ linkType: hard
+
+"prosemirror-schema-basic@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "prosemirror-schema-basic@npm:1.2.3"
+ dependencies:
+ prosemirror-model: "npm:^1.19.0"
+ checksum: af129408a6625707ff001077565d609b1d6b4e9393e86cc628c58bc2d995f5144921f83b6123db4210b48cf26c7899dd38a5de9fdc0c288a2d40650c8e018092
+ languageName: node
+ linkType: hard
+
+"prosemirror-schema-list@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "prosemirror-schema-list@npm:1.4.1"
+ dependencies:
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.7.3"
+ checksum: a1d58811ad17d99cc426ed898c725b2e245512d57a26723cd7fb933fad70b5def3eb619f201090c50351eef9b5d129e6479996b02c639a669e4e751a1c71e40e
+ languageName: node
+ linkType: hard
+
+"prosemirror-state@npm:^1.0.0, prosemirror-state@npm:^1.2.2, prosemirror-state@npm:^1.3.1, prosemirror-state@npm:^1.4.3":
+ version: 1.4.3
+ resolution: "prosemirror-state@npm:1.4.3"
+ dependencies:
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.0.0"
+ prosemirror-view: "npm:^1.27.0"
+ checksum: 57eb0cc7d7412b9d87430b5a9e489d60aed3a3eb9deffff4314b76ad6a5ae019618be658303796285877c9c535392b97b5a4d4d173485b0dd0403671ada9f2a1
+ languageName: node
+ linkType: hard
+
+"prosemirror-tables@npm:^1.4.0":
+ version: 1.5.0
+ resolution: "prosemirror-tables@npm:1.5.0"
+ dependencies:
+ prosemirror-keymap: "npm:^1.1.2"
+ prosemirror-model: "npm:^1.8.1"
+ prosemirror-state: "npm:^1.3.1"
+ prosemirror-transform: "npm:^1.2.1"
+ prosemirror-view: "npm:^1.13.3"
+ checksum: 77c2240705dfee9acd4c829cc209b7024dd5f8f91ebed2b149f0b4bdce941804aec2162e2b6be3878f30e978895bfa1c64c0a4c5cc10c602611b29eb1add102c
+ languageName: node
+ linkType: hard
+
+"prosemirror-trailing-node@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "prosemirror-trailing-node@npm:3.0.0"
+ dependencies:
+ "@remirror/core-constants": "npm:3.0.0"
+ escape-string-regexp: "npm:^4.0.0"
+ peerDependencies:
+ prosemirror-model: ^1.22.1
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.33.8
+ checksum: 044b199b8001373c1bd4c1573876597840df89e66c1f02497a8bb4f2885ebe830faa9764e1269ed6c24bf2fde06ad5f40322afde648ae331d4663f531000adaa
+ languageName: node
+ linkType: hard
+
+"prosemirror-transform@npm:^1.0.0, prosemirror-transform@npm:^1.1.0, prosemirror-transform@npm:^1.10.0, prosemirror-transform@npm:^1.2.1, prosemirror-transform@npm:^1.7.3":
+ version: 1.10.0
+ resolution: "prosemirror-transform@npm:1.10.0"
+ dependencies:
+ prosemirror-model: "npm:^1.21.0"
+ checksum: 1ceb7d221414e7a54bfdd6559bbb9b5b18403b3034769af5ed34d8f38466c4be4087060adbba923813bf7ffc3bc158f94ff11ec7bf79f5b47aada3fb3c313664
+ languageName: node
+ linkType: hard
+
+"prosemirror-view@npm:^1.0.0, prosemirror-view@npm:^1.1.0, prosemirror-view@npm:^1.13.3, prosemirror-view@npm:^1.27.0, prosemirror-view@npm:^1.31.0, prosemirror-view@npm:^1.33.10":
+ version: 1.34.3
+ resolution: "prosemirror-view@npm:1.34.3"
+ dependencies:
+ prosemirror-model: "npm:^1.20.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.1.0"
+ checksum: 070dbfb49bcfe94d3252bd5cae7e0c49d2aa0f0420366dba85fd496263f76be90045126eb1d55caa0876874cb7d5e4e08a139c24b664c865f0eb64ecee97fa5c
+ languageName: node
+ linkType: hard
+
"protocols@npm:^2.0.0, protocols@npm:^2.0.1":
version: 2.0.1
resolution: "protocols@npm:2.0.1"
@@ -26846,6 +27484,13 @@ __metadata:
languageName: node
linkType: hard
+"punycode.js@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "punycode.js@npm:2.3.1"
+ checksum: f0e946d1edf063f9e3d30a32ca86d8ff90ed13ca40dad9c75d37510a04473340cfc98db23a905cc1e517b1e9deb0f6021dce6f422ace235c60d3c9ac47c5a16a
+ languageName: node
+ linkType: hard
+
"punycode@npm:2.x.x, punycode@npm:^2.1.0, punycode@npm:^2.1.1":
version: 2.1.1
resolution: "punycode@npm:2.1.1"
@@ -29054,6 +29699,13 @@ __metadata:
languageName: node
linkType: hard
+"rope-sequence@npm:^1.3.0":
+ version: 1.3.4
+ resolution: "rope-sequence@npm:1.3.4"
+ checksum: 57b5dd8c28ece05bb5f33eea6ea56facb00d4893269bb83aa8656f69065c1bc0707ec9bb816bce0e5f4d489d88942c7f0f0a1c3655773753ef158c9dd0e9456d
+ languageName: node
+ linkType: hard
+
"rst-selector-parser@npm:^2.2.3":
version: 2.2.3
resolution: "rst-selector-parser@npm:2.2.3"
@@ -30754,6 +31406,15 @@ __metadata:
languageName: node
linkType: hard
+"tippy.js@npm:^6.3.7":
+ version: 6.3.7
+ resolution: "tippy.js@npm:6.3.7"
+ dependencies:
+ "@popperjs/core": "npm:^2.9.0"
+ checksum: 9bd1c6ab68704dd10b8896fd66e28f3b4b4017a32b8802a9d57a565dee1704df45c249d8363bcaca235dbc0d9a7a90d6f1326f1e6b999f7809b36599a3f92eb3
+ languageName: node
+ linkType: hard
+
"title-case@npm:^3.0.3":
version: 3.0.3
resolution: "title-case@npm:3.0.3"
@@ -31598,6 +32259,13 @@ __metadata:
languageName: node
linkType: hard
+"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "uc.micro@npm:2.1.0"
+ checksum: 37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2
+ languageName: node
+ linkType: hard
+
"uglify-js@npm:^3.1.4":
version: 3.17.4
resolution: "uglify-js@npm:3.17.4"
@@ -32078,6 +32746,15 @@ __metadata:
languageName: node
linkType: hard
+"use-sync-external-store@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "use-sync-external-store@npm:1.2.2"
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ checksum: 671e9c190aab9a8374a5d468c6ba17f52c38b6fae970110bc196fc1e2b57204149aea9619be49a1bb5207fb6e51d8afd19c3bcb94afe61813fed039821461dc0
+ languageName: node
+ linkType: hard
+
"use@npm:^3.1.0":
version: 3.1.1
resolution: "use@npm:3.1.1"
@@ -32433,6 +33110,13 @@ __metadata:
languageName: node
linkType: hard
+"w3c-keyname@npm:^2.2.0":
+ version: 2.2.8
+ resolution: "w3c-keyname@npm:2.2.8"
+ checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07
+ languageName: node
+ linkType: hard
+
"w3c-xmlserializer@npm:^4.0.0":
version: 4.0.0
resolution: "w3c-xmlserializer@npm:4.0.0"